我目前正在研究谷歌地图,我正在经历一个我无法解决的问题。 我一直在关注stackOverflow上的一些文档和答案,但我无法正常工作..
我的地图上只有一个标记,我想要做的就是删除它以在每次触发dragent事件时放一个新标记...
当我调试代码时,似乎我的标记没有从地图中删除或者我没有...我真的不明白这种行为..
所以这是代码:
我的谷歌地图实例:
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();
});
}
你能看到任何可能引起我问题的事吗?
谢谢你的帮助:)。
答案 0 :(得分:1)
当您调用deleteCurrentMarkers方法时,您的markerHome变量为null。所以代码不会进入if语句。
function deleteCurrentMarkers(){
if (markerHome != null){ //markerHome is null here!!!
console.log("set markerHome to null");
markerHome.setMap(null);
markerHome = null;
}
}
答案 1 :(得分:1)
我认为deleteCurrentMarkers()
永远不会被解雇第二次,只有在setRelayMap()
被解雇时你才开火。你应该在“dragend”回调或getDataFromServer()