【问题标题】:Angular Google Maps: can't get the LatLng from click event objectAngular Google Maps:无法从点击事件对象中获取 LatLng
【发布时间】:2016-10-04 23:31:09
【问题描述】:

在我的应用程序中,点击谷歌地图后,我需要获取 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>

如您所见,我在map 数组中将events 设置为onclick
但是经过调试,handle函数中的event是字符串而不是对象,请问有什么问题呢?

【问题讨论】:

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


    【解决方案1】:

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

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

    所以不要在你的代码中使用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,具体取决于您要处理的事件类型。

    【讨论】:

    • 感谢您的帮助。您对这三个论点的解释非常有帮助。我使用了错误的论据!但还有一件事,不需要更改数组名称。 events 是属性名称。我仍然使用 onclick,并使用第三个参数,它可以工作。提醒一下
    • 感谢您的输入,我在文档中找不到。我会更新我的答案,所以它提到 events 数组不必重命名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2013-10-10
    • 2011-07-31
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    相关资源
    最近更新 更多