首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GMAP3 -来自外部url的谷歌地图API3触发标记单击事件

GMAP3 -来自外部url的谷歌地图API3触发标记单击事件
EN

Stack Overflow用户
提问于 2012-09-28 10:35:20
回答 1查看 2.8K关注 0票数 1

使用GMAP3 Google Map API3类。无法弄清楚如何通过javascript从外部链接触发标记上的单击事件。我尝试过v3应用程序接口语法,但我怀疑我遗漏了一些与GMAP3库相关的东西。有人能帮帮我吗?

我展示了一个带有标记和来自ajax请求的infobox数据的地图,以及产生的JSON数组。效果很好。我给标记分配了一个单击事件,它工作得很好。我正在使用解析相同的JSON数组来使用<a href="#" id="link" arid="X">Click Me</a>填充数据表

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

我的JSON数组对象存储在markerlist中,并传递给下面的函数...这很有效,但我似乎不能从我的数据表链接中触发这些点击……(参见下面的jquery代码,获取这些点击并尝试将它们传递到地图)

我的地图代码是:

代码语言:javascript
复制
    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;
});



};

任何帮助都是非常感谢的,我相信也会对其他人有用!

EN

回答 1

Stack Overflow用户

发布于 2012-09-28 16:22:26

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12632856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档