[英]Google Maps API V3 Indicate multiple markers in same location by different icon
我正在研究所有代碼示例,並且有一個頁面工作顯示多個標記。 我有一系列位置,有時我在同一位置有多個標記。 僅顯示最上面的一個,這很好,但是我想通過更改圖標來指示隱藏了更多標記。
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,
});
}
我似乎無法將條件代碼添加到“ icon:MarkerImg”行中,如果坐標與前一個匹配,則將其更改為其他圖標。
有什么方法可以有條件聲明(如果多數民眾贊成在正確的術語)謝謝。
如果您需要做的只是檢查上一個標記,只需保留對其的引用即可:
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;
}
注意:請注意 google.maps.LatLng.equals ,坐標必須完全相同 。 可能希望選擇一個閾值(例如0.1米),並考慮比“在同一位置”的標記更近的標記。
做到了這一點,並進行了一些編輯:是的,標記將按順序排列,因此更加容易。 在相等之前,我必須為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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.