我的地图标记上有一个点击事件来创建一个信息窗口,我正在尝试对地址进行地理编码以显示在信息窗口内。
click: function(marker) {
pantoUser(lati,longi,i);
addInfoWindow(lati,longi,name,datestring);
}
我几乎让它像这样工作:
function addInfoWindow(lati,longi,name,datestring)
{
// get address
getAddress(lati,longi);
// create infowindow
$('#dispatcher').gmap3(
{ action: 'addInfoWindow',
latLng: [lati, longi],
infowindow:{
options:{
content: name
},
events:{
closeclick: function(infowindow, event){
//alert('closing : ' + $(this).attr('id') + ' : ' + infowindow.getContent());
}
},
apply:[
{ action:'setContent',
args:[
'<span class="infowindow">' + name + '<br />' + content + '<br />' + datestring + '<span>'
]
}
]
}
}
);
}
然后是获取地址部分:
function getAddress(lati,longi)
{
$("#dispatcher").gmap3({
action:'getAddress',
latLng: [lati, longi],
callback:function(results){
content = results && results[1] ? results && results[1].formatted_address : 'No Address';
return content;
}
});
}
问题是地理编码地址总是一个标记点击后面。例如,我可能会单击伦敦的一个标记,但没有任何反应。所以我再次点击它,我得到了带有地址的信息窗口。然后我点击曼彻斯特的一个标记,我仍然看到伦敦地址,然后我点击利物浦的一个标记,我得到曼彻斯特地址。等等。
任何人都可以发现错误吗?
来自 SEAN 的更新工作解决方案 在回调中添加了信息窗口代码
function addInfoWindow(lati,longi,name,datestring)
{
// get address
$("#dispatcher").gmap3({
action:'getAddress',
latLng: [lati, longi],
callback:function(results){
content = results && results[1] ? results && results[1].formatted_address : 'No Address';
// create infowindow
$('#dispatcher').gmap3(
{ action: 'addInfoWindow',
latLng: [lati, longi],
infowindow:{
options:{
content: name
},
events:{
closeclick: function(infowindow, event){
//alert('closing : ' + $(this).attr('id') + ' : ' + infowindow.getContent());
}
},
apply:[
{ action:'setContent',
args:[
'<span class="infowindow">' + name + '<br />' + content + '<br />' + datestring + '<span>'
]
}
]
}
}
);
} // end callback
});
}