清除地图标记

时间:2011-11-17 16:10:54

标签: javascript google-maps-api-3

我正在使用this页面,允许用户在他们输入的地址的给定半径范围内搜索兴趣点。

我遇到的问题是我无法清除成功搜索和不成功搜索之间的标记图。

例如,如果我在半径25英里处输入Swindon,则会在侧栏中显示2个POI,并且它们各自的标记将显示在地图上。

如果我在25英里处再次使用安特里姆郡作为我的搜索地址,侧边栏会正确显示“未找到结果”,但最初搜索的标记仍然在地图上。

我已经在互联网上搜索不同的代码片段以使其正常工作但我真的陷入了这个问题。我已经回到谷歌网站上的源代码,我确信我使用相同的代码。

有人可能会告诉我这个问题出在哪里吗?

2 个答案:

答案 0 :(得分:3)

我用这个:

for(var x=0;x<markers.length;x++) {
     markers[x].setMap(null);
}

答案 1 :(得分:0)

您已定义了标记数组,但在searchLocationsNear()函数中,您永远不会将标记添加到数组中。因此,当您尝试在clearLocations()函数中循环遍历数组时,该数组为空。

试试这个:

 //...
 for (var i = 0; i < markerNodes.length; i++) {
     var sitedescription = markerNodes[i].getAttribute("sitedescription");
     var distance = parseFloat(markerNodes[i].getAttribute("distance"));
     var latlng = new google.maps.LatLng(
          parseFloat(markerNodes[i].getAttribute("siteosgb36lat")),
          parseFloat(markerNodes[i].getAttribute("siteosgb36lon")));

     var marker = createMarker(latlng, sitedescription);

     markers.push(marker); //add marker to the markers array.

     bounds.extend(latlng);

     var sidebarEntry = createSidebarEntry(marker, sitedescription, distance);
     sidebar.appendChild(sidebarEntry);
   }