Angular Google Maps:无法从Click事件对象获取LatLng

时间:2016-06-05 06:25:45

标签: angularjs google-maps events google-maps-api-3 angular-google-maps

在我的应用中,点击谷歌地图后,我需要获取lat和lng信息以便进一步处理。由于应用程序使用angularJs作为框架,我使用Angular Google Maps库来绘制地图。我的代码如下:

$scope.map = {
        center: {
           latitude: 37.782551,
           longitude: -122.445368
        },
        zoom: 12,
        heatLayerCallback: function (layer) {
           MockHeatLayer(layer);
        },
        showHeat: true,
        // the issue is from here
        onclick: {
            click : function(maps, event, arguments) {
                console.log(event.latLng); //return undefined 
                console.log(typeof(event)); //return string type instead of event object 
            }
        }
};

和HTML标记如下:

<ui-gmap-google-map center='map.center' zoom='map.zoom' events='map.onclick'>
    <ui-gmap-layer namespace="visualization" type="HeatmapLayer" show="map.showHeat" onCreated="map.heatLayerCallback"></ui-gmap-layer>
</ui-gmap-google-map>

如您所见,我在events数组中将onclick设置为map
但是在调试之后,句柄函数中的event是一个字符串而不是对象,那么问题是什么呢?

1 个答案:

答案 0 :(得分:1)

根据文档,第二个参数是eventName,它应该是字符串,因为事件对象在第三个参数中。来自docs

  

处理函数有三个参数:     1.地图:GoogleMap     2. object eventName:事件的名称 3.参数: Google地图为此事件类型提供的参数

所以代替代码中的onclick: { ...,请输入:

events: {
     click : function(maps, eventName, arguments) {
          var e = arguments[0];
          var lat = e.latLng.lat(), lng = e.latLng.lng();
          console.log("my lat is:" + lat + ", lng is:" + lng);
     }
}

<强>更新 events数组也可以命名为onclick,具体取决于您要处理的事件类型。