我们有一个动态json Feed,在我们的谷歌地图上解析为标记。
解析函数看起来像这样:
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?
谢谢!
答案 0 :(得分: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
}
}