1

当我将我的应用程序从 jQuery 方式更改为 Angular 方式时,我尝试使用 Angular-Google-Maps。

但我找不到 Google 地图对象(地图、标记、多边形...)和使用对象“方法”的方法(例如 getMap()、getPath()、getPosition()..)在哪里。

如果我需要获取被拖动的标记的位置,我该怎么办?就像我平时做的那样?

marker = new google.maps.Marker(opts);
postion = marker.getPosition();
4

2 回答 2

7

编辑: 我找到了一种如何在拖放时获取标记位置的方法。您可以为标记设置回调函数:

<google-map center="center" zoom="zoom" control="googleMap">
   <marker coords="coords" options="options" events="events">
</google-map>

然后在控制器中定义回调:

$scope.events: {
               dragend: function (marker) {
                  $rootScope.$apply(function () {
                     console.log(marker.position.lat());
                     console.log(marker.position.lng());
                  });
               }
            }

旧答案: 目前不可能: https ://github.com/nlaplante/angular-google-maps/issues/277

但是,您可以获得原始的 google.maps.Map 对象:

指令调用:

<google-map center="center" zoom="zoom" control="googleMap"></google-map>

角度控制器:

...
$scope.center = = {
            latitude: 48.13171,
            longitude: 11.549554
         };
$scope.zoom = 8;
$scope.googleMap = {}; // this is filled when google map is initiated

function getMapObject() {
   $scope.googleMap.control.getGMap();
}
...
于 2014-02-24T15:20:09.623 回答
0

实际上,您甚至不需要事件,库已经将您的标记位置与范围绑定。

这是我在 Coffee Script 中的做法:

控制器:

$scope.map =
  center:
    latitude: k
    longitude: D
  zoom: 16
  marker:
    coord:
      k
      D

看法:

    <ui-gmap-google-map center='map.center' zoom='map.zoom'>
      <ui-gmap-marker
              idKey="'pin'"
              coords="map.marker.coord"
              options="{'draggable':true}"
              >
      </ui-gmap-marker>
    </ui-gmap-google-map>

    <pre>{{map | json}}</pre>
于 2015-02-08T17:46:28.260 回答