存储Google地图标记并从中选择特定标记

我有一个网页,使用$.getJSON接收值为listing_id, lat, lng AJAX数据。 回调函数采用这些系列值,并为每组listing_id, lat, lng创建一个Google地图标记。 然后将标记推入数组markers ,将其listing_id推入数组markersListingId

 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数组中的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轻松选择特定标记?

创建标记时,您可以使用哈希表而不是使用数组吗?

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