在 angular-google-maps 中设置 dragend 事件

set the dragend event in angular-google-maps

我正在使用这个库在我的 angularjs (v 1.2.15) webapp 中创建一个 google 地图: https://angular-ui.github.io/angular-google-maps/#!/api/google-map

我的目标是捕获用户用鼠标拖动地图时的事件。我查阅了 google 地图 API 文档并找到了 dragend 事件侦听器:https://developers.google.com/maps/documentation/javascript/reference#Map

我能够初始化我的地图,但出于某种原因,我的 dragend 事件侦听器无法正常工作。 以下是我如何使用 angular-google-maps 库初始化我的地图:

angular.module('appMaps', ['uiGmapgoogle-maps'])
  .controller('mainCtrl', function($scope, $log, $timeout) {
    angular.extend($scope, {
      map: {
        center: {
          latitude: 42.3349940452867,
          longitude: -71.0353168884369
        },
        zoom: 7,
        events: {
          dragend: function() {
            alert('the map was dragged by the user')
          }
        },
        markers: [],
        // ..
        // ..
    });
  });

这是我的 plunkr,除了 dragend 侦听器外,一切正常: http://plnkr.co/edit/AjnF4W5TB4cGSb59ete6?p=preview

在您的示例中,dragend 事件未被触发,因为它未附加到地图对象。要将事件附加到地图对象,您需要使用 ui-gmap-google-map 指令的 events 属性,如下所示:

<ui-gmap-google-map events="map.events" center="map.center" zoom="map.zoom" draggable="true" options="options">

其中

.controller('mainCtrl', function ($scope, $log, $timeout) {
        angular.extend($scope, {
            map: {

                events: {
                    dragend: function () {
                        alert('dragend')
                    }
                },
                //the remaining code is omitted for clarity
            }
        });
    });

Modified plunker