我有一個谷歌地圖,我不斷用標記更新。如果標記重疊(完全相同的位置),我有一個計數器添加到標記內的數字。問題是每次我添加一個新標記時,並不總是將它放在另一個標記的頂部。所以,例如,標記的數字是10。一個新的標記與11和動畫後它隱藏在10後面。有些時候在幾個標記後,頂部標記將是正確的數字,如21而不是10.Google Maps API按經度/緯度移除標記
那麼有沒有辦法刪除經緯度/經度標記添加新的之前?這裏是我有:
for (var i=0; i<response.trans.length; i++) {
//add to location
location[response.trans[i].location_id] += 1;
latLng = new google.maps.LatLng(response.trans[i].latitude, response.trans[i].longitude);
marker = new google.maps.Marker({
map:map,
position: latLng,
icon: 'http://chart.apis.google.com/chart?chst=d_map_spin&chld=1|0|FF0000|12|_|'+client[response.trans[i].location_id],
animation: google.maps.Animation.DROP
});
markers.push(marker);
}
謝謝雷蒙德!你把我推在正確的方向
這是爲我工作的代碼:
for (var i=0; i<response.trans.length; i++) {
//add to total count
totalCount += 1;
//add to location
location[response.trans[i].location_id] += 1;
markerChanged = false;
for(x=0; x < markers.length; x++){
if(markers[x].getPosition().lat().toFixed(6) == response.trans[i].latitude.toFixed(6) && markers[x].getPosition().lng().toFixed(6) == response.trans[i].longitude.toFixed(6)){
markers[x].setIcon('http://chart.apis.google.com/chart?chst=d_map_spin&chld=1|0|FF0000|12|_|'+location[response.trans[i].location_id]);
markers[x].setAnimation(google.maps.Animation.DROP);
markerChanged = true;
}
}
if(markerChanged === false){
latLng = new google.maps.LatLng(response.trans[i].latitude, response.trans[i].longitude);
marker = new google.maps.Marker({
map:map,
position: latLng,
icon: 'http://chart.apis.google.com/chart?chst=d_map_spin&chld=1|0|FF0000|12|_|'+location[response.trans[i].location_id],
animation: google.maps.Animation.DROP
});
markers.push(marker);
}
}
所以我增加了內部的for循環,它會針對當前標記。我必須使用toFixed(6)將其更改爲一個字符串。浮點精度正在拋棄正確性。所以如果標記是相同的,它會改變圖標。如果它是一個新的標記,它會將它添加到地圖中。我添加了DROP動畫,因爲我仍然希望它能夠被更新。
謝謝!
待辦事項_使用無證屬性(.IB .jb),他們_will_改變,會意外地破壞你的代碼[使用以文檔方式訪問它們:.lat()和.lng()]。而且,浮點平等不是一個好的測試。 – geocodezip 2013-03-09 01:44:07
謝謝,我目前正在使用這個項目,這將幫助我。 – Ray 2013-03-09 02:47:58
這讓我朝着正確的方向前進!謝謝!我會用更新的代碼更新我的問題。 – Pablo 2013-03-11 15:53:13