当我将我的应用程序从jQuery方式更改为Angular方式时, 我尝试使用Angular-Google-Maps。
但是我找不到谷歌地图对象(地图,标记,多边形...)的位置 以及使用Object'方法'的方法(如getMap(),getPath(),getPosition()..)。
如果我需要获取被拖动的标记的位置,我该怎么办? 就像我平常一样?
marker = new google.maps.Marker(opts);
postion = marker.getPosition();
答案 0 :(得分: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();
}
...
答案 1 :(得分: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>