1

使用 GMAP3 Google Map API 3 类。无法完全弄清楚如何通过 javascript 从外部链接触发标记上的点击事件。我尝试了 v3 api 语法,但怀疑我遗漏了与 GMAP3 库相关的内容。有人可以帮我吗?

我正在显示一个地图,其中包含来自 ajax 请求的标记和信息框数据以及生成的 JSON 数组。效果很好。我为标记分配了一个点击事件,它工作正常。我正在使用解析相同的 JSON 数组来填充数据表<a href="#" id="link" arid="X">Click Me</a>

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

我的 JSON 数组对象存储在标记列表中并传递给下面的函数......效果很好,但我似乎无法从我的数据表链接触发这些点击......(请参阅下面的我的 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;
});



};

任何帮助将不胜感激,并且肯定对其他人有用!

4

1 回答 1

0

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

于 2012-09-28T08:22:26.013 回答