2014-06-26 48 views
0

我正在處理所有代碼示例,並且有一個顯示多個標記的頁面工作。我有一系列位置,有時候我有多個位置相同的標記。只有最上面的一個顯示器,這是很好的,但我想指出,通過改變圖標 這一點,有更多的標記隱蔽工程:Google Maps API V3通過不同的圖標指示同一位置的多個標記

for (i = 0; i < locations.length; i++) 
{ 
    marker = new gm.Marker({ 
    position: new gm.LatLng(locations[i][1], locations[i][2]), 
    map: map, 
    icon: MarkerImg, 
    }); 
} 

我似乎不能夠有條件的代碼添加到「圖標:MarkerImg」一行可以將它更改爲不同的圖標,前提是這些圖標與前面的圖標匹配。

有沒有一些方法來有條件聲明(如果這是正確的術語) 謝謝。

+1

您將不得不檢查重複項的上一個標記(除非您對輸入進行了預分類)。 – geocodezip

回答

0

如果你需要做的是檢查一個標記,只要保持對它的引用:

var lastMarker = null; 
for (i = 0; i < locations.length; i++) 
{ 
    var marker = new gm.Marker({ 
    position: new gm.LatLng(locations[i][1], locations[i][2]), 
    map: map, 
    icon: MarkerImg, 
    }); 
    if (!!lastMarker && !!lastMarker.getPosition && 
     (marker.getPosition().equals(lastMarker.getPosition()))) { 
     marker.setIcon(MarkerImg2); 
    } 
    lastMarker = marker; 
} 

fiddle

注:小心google.maps.LatLng.equals,座標必須正好是一樣。可能要選擇一個閾值(比如說0.1米),並考慮比「在相同​​位置」更接近的標記。

0

這樣做的訣竅,幾個編輯: 是的,標記將按順序,以便更容易。在平等工作之前,我必須爲lastMarker定義一個職位。我選擇了0,0,因爲我認爲它不太可能被使用。好的解決方案另外,我將lastMarker設置爲當前標記以進行下一次迭代。 標記上的好點不完全在同一位置。現在他們是,但它值得進一步調查。

lastMarker = new gm.Marker(
    { 
    position: new gm.LatLng(0,0) 
    }); 

for (i = 0; i < locations.length; i++) 
    { 
    marker = new gm.Marker(
     { 
     position: new gm.LatLng(locations[i][1], locations[i][2]), 
     map: map, 
     icon: MarkerImg, 
     }); 
    if (marker.getPosition().equals(lastMarker.getPosition())) { 
     marker.setIcon(MultiMarkerImg); 
     } 
    lastMarker = marker; 
相關問題