0

我们有一个动态的 json 提要,它被解析为我们谷歌地图上的标记。

解析函数看起来像这样:

function parse_json(json) {

      // alert('start parse: '+json.length);
      if (json.length > 0) { 
        var markers = [];
        for (i=0; i<json.length; i++) {
          var report = json[i];
          //alert(report.longitude +','+report.latitude);
          // addLocation(report); 
          markers[i] = new google.maps.Marker({
            map: map,
            position: new google.maps.LatLng(report.latitude, report.longitude),
            pop_title: report.area1.name,
            pop_body: '<b><a href="/spot/'+ report.spot.slug +'">'+ report.spot.name +'</a></b>'+
                      '<br>'+ report.report_description,
            draggable: false,
            title: 'title',
            zIndex: i,
            icon: '/images/map_icon.png'
          });
          markers[i].metadata = {type: "point", id: report.id};

          google.maps.event.addListener(markers[i], 'click', onMarkerClick);

      }
    };

我已将元数据信息添加到创建的标记中,因此它们的 id 是 report.id - 但我想使用该google.maps.event.trigger(SOMETHING_HERE, 'click');构造在按下地图外的按钮时触发给定标记上的单击事件。我如何获取对象名称,或者有没有办法使用对象的 id 来做到这一点?

谢谢!

4

1 回答 1

1

如果您markers在比parse_json函数更高的范围内声明您的数组,那么您稍后将能够引用它,如下所示:

var markers = new Array();
function parse_json(json) {
    //code removed for brevity
}

稍后,当您需要找到要触发点击事件的标记时,您可以使用id以下代码:

for ( var i = 0; i < markers.length; i++ ) {
    var mkr = markers[i];
    if ( mkr.metadata.id === idYouAreSearchingFor ) {
        //do whatever is needed here and fire your event
    }
}
于 2012-07-11T19:52:54.320 回答