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

时间:2012-04-08 02:30:32

标签: javascript jquery google-maps google-maps-api-3

我有一个网页,使用listing_id, lat, lng接收值为$.getJSON的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相对应的特定标记时出现问题,尤其是在标记被删除并添加到{{1}的更复杂情况下数组。

我可以让for循环遍历markers数组中所有标记的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); } } 轻松选择特定标记?

1 个答案:

答案 0 :(得分: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);
    });
  }