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

Storing Google Map Markers and Selecting a specific marker from it

本文关键字:选择 谷歌 地图 图标 存储      更新时间:2023-09-26

我有一个网页,它接收带有使用 $.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数组中。

我可以让 for 循环遍历数组中所有标记的 id markersListingId然后使用循环的索引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轻松选择特定标记?

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

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