【问题标题】:How do I draw the markers based upon current map canvas, as a user traverses the map当用户遍历地图时,如何根据当前地图画布绘制标记
【发布时间】:2019-04-10 15:24:36
【问题描述】:

我已经使用谷歌地图 API 成功绘制了标记。

var latlng = {lat: 34.7651458,lng: 121.453208};

map = new google.maps.Map(document.getElementById('map'), {
  center: latlng,
  zoom: 18
});

var marker = new google.maps.Marker({
  position: latlng,
  map: map,
  title: 'Marker!'
});
marker.setMap(map);

但是,如果用户遍历地图,则 centre:latlng 会发生变化。如果我想绘制一个新的标记,对于这个新的centre,我如何捕获centre 中的更改以从 API 获取数据以绘制新的标记。感谢您的任何建议。

【问题讨论】:

    标签: javascript google-maps


    【解决方案1】:

    您可以将dragend 事件监听器添加到map(或者您也可以使用center_changed)。使用map.getCenter() 获取地图中心并创建一个标记。

    map.addListener('dragend', function() {
        var c = map.getCenter();                   //Get new center of the map
    
        var marker = new google.maps.Marker({      //Create a new marker and use the map's center as the location.
            position: c,
            map: map,
            title: 'Marker!'
        });
    });
    

    【讨论】:

    • 是的,这很奇怪,拖动不会总是改变中心吗?除非您可以以圆弧方式拖动。
    • 是的,有区别。您可以查看developers.google.com/maps/documentation/javascript/events 了解更多信息。中心更改可以在不拖动的情况下进行更改。就像您以编程方式更改地图位置一样:)
    • @Eddie:最后一个问题 - 就我而言,仅当用户遍历地图(拖动它)时,中心才会改变。而且,当这个拖动结束时,我需要捕获新的中心并绘制新的标记。 dragend 似乎最适合我,任何意见,先生...
    • @ksalf 是的,如果是这种情况,dragend 适合您的应用 :)
    • 感谢您的所有帮助和这个不错的链接,先生。继续使用“dragend” :)
    猜你喜欢
    • 2018-01-03
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    相关资源
    最近更新 更多