2012-07-11 56 views
0

我们有一个动态的json源,在我们的谷歌地图上解析为标记。谷歌地图v3由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做到这一点?

谢谢!

回答

1

如果声明比你parse_json功能更高的范围你markers数组,然后你就可以稍后查阅它,是这样的:后来

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