0

我有一个网页接收带有值的 AJAX 数据,listing_id, lat, lng使用$.getJSON. 回调函数采用这一系列值并为每组listing_id, lat, lng. 然后将标记推入一个数组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 循环遍历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

4

1 回答 1

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);
    });
  }
于 2012-04-08T02:52:20.887 回答