2011-11-17 105 views
1

我使用this頁面,允許用戶自己鍵入一個地址給定的範圍內搜索興趣點。清除地圖標記

我遇到的問題是,我不能清除成功搜索和不成功搜索之間的標記地圖。

例如,如果我在25英里半徑內輸入Swindon,則在邊欄內顯示2個POI,並在地圖上顯示其各自的標記。

如果我在25英里再次使用County Antrim作爲我的搜索地址,側欄會正確顯示'找不到結果',但來自初始選區的標記仍然在地圖上。

我已經瀏覽了互聯網,嘗試使用不同的代碼片段來使這個工作,但我真的堅持這個問題。我已經回到Google網站上的源代碼,我確定我使用的是相同的代碼。

有人可能會告訴我我要去哪裏錯了嗎?

回答

3

我用這個:

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

你好,非常感謝回覆我的帖子,併爲您的建議。我在腳本中使用了這段代碼(在函數clearLocations()部分中),這是我無法理解的,因爲我見過的所有其他示例都使用了你所建議的內容,這就是讓我陷入困境的原因。 – IRHM

+0

它適合你嗎? –

+0

隨着Bryan的加入,我直接在我的代碼的其他領域,你的建議很好。非常感謝您的幫助。 – IRHM

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); 
    } 
+0

布萊恩,非常感謝你,它是一種享受。並感謝你昨天在'Posting Decorum'上發表的指導。親切的問候 – IRHM