存储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
轻松选择特定标记?
创建标记时,您可以使用哈希表而不是使用数组吗?
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); }); }