GMAP3 - 来自外部网址的Google地图API3触发标记点击事件

时间:2012-09-28 02:35:20

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

使用GMAP3 Google Map API 3类。无法弄清楚如何通过javascript从外部链接触发标记上的点击事件。我已经尝试过v3 api语法,但怀疑我遗漏了与GMAP3库有关的东西。谁能帮到我这里?

我正在使用生成的JSON数组显示带有标记和信息框数据的地图。效果很好。我将一个点击事件分配给标记,它工作正常。我正在使用解析相同的JSON数组来填充具有<a href="#" id="link" arid="X">Click Me</a>

的数据表

X实际上是我在构建JSON数组时使用的递增标记计数器,因此它将从0开始并构建为表示所有标记的任何值。我希望用这个值来告诉GMAP3我要将click事件传递给哪个标记...如果这个过程是错误的那么我真的很困惑。

我的JSON数组对象存储在markerlist中并传递给下面的函数...这很好但我似乎无法触发来自我的数据表链接的那些点击...(请参阅下面的jquery代码来获取这些点击并尝试将它们传递给地图)

我的地图代码是:

    function display( markerlist ) {

$("#map").gmap3({action:'clear'});

$("#map").gmap3(
{action: 'init',
options:{
center:true,
zoom:13,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
navigationControl: true,
scrollwheel: true,
streetViewControl: true
}
},
{action: 'addMarkers',
radius:100,
markers: markerlist,
clusters:{
maxZoom: 10,
// This style will be used for clusters with more than 0 markers
20: {
content: '<div class="cluster cluster-1">CLUSTER_COUNT</div>',
width: 53,
height: 52
},
// This style will be used for clusters with more than 20 markers
50: {
content: '<div class="cluster cluster-2">CLUSTER_COUNT</div>',
width: 56,
height: 55
},
// This style will be used for clusters with more than 50 markers
100: {
content: '<div class="cluster cluster-3">CLUSTER_COUNT</div>',
width: 66,
height: 65
}

},
marker: {
options: {

clickable: true
},
events:{
click: function(marker,event,data) {
$(this).gmap3({action: 'clear', name : 'infowindow'});
$(this).gmap3({action: 'addinfowindow', anchor: marker, options: { content:
'<div class="text"><strong><div style="color:navy;">' + data.itype + '</strong><br/><div id="address" snum="' + data.streetnum + '" snam="' + data.streetnam + '" styp="' + data.streettyp + '">'+ data.iaddress +'</div><br/>' + data.inum + '<br/>'+ data.datetime +'</div><hr>'+data.notes+'</div>'} })
}, 
mouseover: function(marker, event, data){
$(this).gmap3(
{ action:'clear', name:'overlay'},
{ action:'addOverlay',
latLng: marker.getPosition(),
content:    '<div class="infobulle">' +
'<div class="bg"></div>' +
'<div class="text">' + data.itype +'</div>' +
'</div>' +
'<div class="arrow"></div>',
offset: {
x:-46,
y:-73
}
});
},
mouseout: function(){
$(this).gmap3({action:'clear', name:'overlay'});
}

}, //end events
callback: function(result){
if (result){
//not doing anything with a callback at this time
} else {
alert('Bad callback...');
}
} //end callbacks
} // end marker

}
,{action:"autofit"} //end action

);


$("a#link").live('click',function(markerlist){ // this works and I can get my arid ok, but the trigger won't work
var arid = $(this).attr('arid');
google.maps.event.trigger(markerlist[arid], 'click');
return false;
});



};

任何帮助都会非常感激,并且肯定对其他人有用!

1 个答案:

答案 0 :(得分:0)

我认为问题是markerlist不是全局变量,它是display函数的本地变量?如果您在click事件处理程序中将markerlist写入控制台,会得到什么?