【发布时间】:2014-06-16 22:17:42
【问题描述】:
我在 Google 地图网络应用程序中的标记有问题。我可以添加标记,但不能删除它们。我一直在寻找几天的解决方案,但 v3 的标准建议似乎是:
marker.setMap(null);
问题是这在我的代码中似乎完全无效。这是在启动时运行的函数示例。它以低精度快速获取当前位置。稍后需要更长时间才能完成的功能应移除标记并将新标记放置在更准确的位置。问题是,一旦放置,我就无法移除标记。
function geoLocCheckAndFastLatLng(){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
//get current position
pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
//place low accuracy marker
placeMarker(pos,window.meIconMediumAccuracy,window.myPositionMarker);
//and center map
window.map.setCenter(pos);
window.map.setZoom(14);
window.myPositionMarker.setMap(null);
});
}else{
alert("Sorry - You're Browser Doesn't Support Geolocation.\nChange To Google-Chrome Or Dolphin To Use This App");
}
}
所以理论上上述函数获取位置,放置一个标记,然后删除相同的标记。但是标记仍然存在!有人可以帮忙吗?我只有几天的时间来完成,我不明白我哪里出错了。
这里是地点标记功能:
function placeMarker(location, iconType, marker) {
//alert(window.markers.length);
//if the marker is undefined it means it needs to be created form scratch
//using the iconType and location provided in the function call
if(marker === undefined){
marker = new google.maps.Marker(
{
position: location,
map: window.map,
icon: iconType,
});
//and add a click listener
google.maps.event.addListener(marker, 'click', function()
{
alert("Marker location:\n" + pos);
});
//add to markers array
window.markers.push(marker);
}else{
marker.setPosition(location);
}
}
【问题讨论】:
-
placeMarker 函数长什么样子?
-
你觉得这个
window.myPositionMarker.setMap(null);引用了什么?在我看来它应该是window.markers[i].setMap(null);其中“i”是您要隐藏的特定标记的索引(对于您的原始示例,这将是window.markers.length-1,添加的最后一个标记) -
谢谢你——你说得对。虽然我真的不明白为什么当我将它称为 window.markers[0] 时我不能将标记引用为 window.myPositionMarker (它已被声明为全局),但它已按预期删除。感谢您的帮助:)
标签: javascript jquery-mobile google-maps-api-3 google-maps-markers