2012-04-08 38 views
0

我有一個網頁,它使用$.getJSON接收的值爲listing_id, lat, lng的AJAX數據。回調函數採用這些系列值併爲每組listing_id, lat, lng創建一個Google地圖標記。然後將該標記推入數組markers及其listing_id到數組markersListingId中。存儲Google地圖標記並從中選擇特定的標記

var latLng = new google.maps.LatLng(json[i].lat, json[i].lng); 
var marker = new google.maps.Marker({ 
       position: latLng, 
       icon: base_url + 'images/template/markers/listing.png', 
      }); 
markers.push(marker); 
markersListingId.push(json[i].listing_id); 

問題:當我想選擇對應於特定listing_id,尤其是在被刪除,並添加到markers陣列標記更復雜的情況的特定標記,就會出現問題。

我可以循環遍歷markersListingId數組中的所有標記ID,然後使用循環索引i獲取markers數組中的標記,但這會使跟蹤非常棘手。

var id_to_select = 1234; 
for(var i = 0; i < markersListingId; i++) { 
    if(markersListingId[i] == id_to_select) { 
     markers[i].setMap(null); 
    } 
} 

問:我如何保存標記,這樣我可以輕鬆地選擇使用其listing_id特定的標記?

回答

0

當您創建標記而不是使用數組時,您可以使用散列表嗎?

http://jsfiddle.net/j9J8x/

var markers = {}; 

    //id goes in place of 1234 
    n = 1234; 
    markers[n] = new google.maps.Marker({ 
     map: map, 
     position: new google.maps.LatLng(0,0) 
    }); 

    s = '2234' 
    markers[s] = new google.maps.Marker({ 
     map: map, 
     position: new google.maps.LatLng(20,0) 
    }); 

    google.maps.event.addListener(map, 'click', function(event) { 
     k = 1234; 
     markers[k].setMap(null); 
     markers['2234'].setMap(null); 
    }); 
    }