在我的应用中,点击谷歌地图后,我需要获取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
是一个字符串而不是对象,那么问题是什么呢?
答案 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
,具体取决于您要处理的事件类型。