【问题标题】:removing marker google map doesn't work API v3删除标记谷歌地图不起作用 API v3
【发布时间】:2014-01-15 04:21:38
【问题描述】:

我目前正在研究谷歌地图,我遇到了一个我自己无法解决的问题。 我一直在关注一些文档并在 stackOverflow 上回答,但我无法使其正常工作..

我的地图上只有一个标记,我要做的就是在每次触发事件触发时删除它以放置一个新标记...

当我调试代码时,我的标记似乎没有从地图中删除,或者我没有..我不太了解这种行为..

所以这里是代码:

我的谷歌地图实例:

    var map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: levelZoom,
center: new google.maps.LatLng(50.6548670, 3,1888100),
});

手册:

var markerHome = null;

function deleteCurrentMarkers(){
if (markerHome != null){
    console.log("set markerHome to null");
    markerHome.setMap(null);
    markerHome = null;
}
}

function setRelayMap(dataSource, currentCoords, myFilterObject){
var i;
var lt = currentCoords.lat;
var lg = currentCoords.lng;


deleteCurrentMarkers();
markerHome = new google.maps.Marker({position: new google.maps.LatLng(lt, lg),         map: map, icon: "icoMaps/initPos.png"});
google.maps.event.addListener(map, 'dragend', function() {
    var centerObj = map.getCenter();
    var newObj = {"lat": centerObj.lat(), "lng": centerObj.lng()};
    console.log("in dragend");
    getDataFromServer(newObj, myFilterObject);
});
google.maps.event.addListener(map, 'zoom_changed', function() {
    levelZoom = map.getZoom();
});
    }

你能看到任何可能导致我的问题的东西吗?

感谢您的帮助:)

【问题讨论】:

    标签: javascript html google-maps google-maps-markers


    【解决方案1】:

    当您调用 deleteCurrentMarkers 方法时,您的 markerHome 变量为空。所以代码不会进入 if 语句。

    function deleteCurrentMarkers(){
    if (markerHome != null){ //markerHome is null here!!!
        console.log("set markerHome to null");
        markerHome.setMap(null);
        markerHome = null;
        }
    }
    

    【讨论】:

    • 是的,但这只是第一次,第一次安装标记后,它不应该为空,当你第一次看到地图时,有一个标记但没有“设置markerHome为空”,但如果我拖动地图,markerHome 不再为空...函数 getDataFromServer 为我获取未来标记的新纬度和经度,然后再次调用 setRelayMap ...
    • 好吧,你是对的。你什么时候调用 setRelayMap 函数?根据您的代码,您的标记不关心地图拖动事件..
    • 对不起,我现在看到你的评论编辑。您的屏幕上一切正常。你看控制台了吗?删除功能有效吗?
    • 是的,我得到了答案,我的拖动结束事件在同一时刻被触发了几次,为了避免这种行为而稍微超时,一切都运行良好.. 谢谢你的时间 Mehmet!
    【解决方案2】:

    我认为deleteCurrentMarkers() 永远不会被第二次解雇,因为你只有在setRelayMap() 被解雇时才会解雇它。您应该在“dragend”回调或getDataFromServer()

    中触发

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 2023-03-21
      相关资源
      最近更新 更多