我正在研究谷歌地图 v3。在这张地图上,我想显示几个标记,每个标记都有它的信息窗口,其中显示有关该点的一些信息。信息源是一个javascript数组,每个点都有一些数据,在这里一切正常。该数组包含(有时)地址(有时为空)和总是经纬度坐标,所以当地址不存在时,我必须进行反向地理编码。这是我的代码:
var geocoder = new google.maps.Geocoder();
for(var i=0;i<markersArray.length;i++){
var la=markersArray[i][0]);
var lo=markersArray[i][1]);
gpoint=new google.maps.LatLng( la,lo);
var aMarker = new MarkerWithLabel({ //part of Google Maps Utility Lib
position: gpoint,
map: map,
labelContent: deviceID,
labelAnchor: new google.maps.Point(22, 0),
labelClass: "labelStyle",
html: "<ul><li>Speed: "+markersArray[i][3]+"</li></ul>",
address: markersArray[i][4]
});
if (aMarker.address<="" || aMarker.address==null) {
geocoder.geocode({'latLng': gpoint}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
aMarker.address=results[1].formatted_address;
}
}
});
}
google.maps.event.addListener(aMarker, 'click', function () {
infowindow.setContent(this.html+" "+this.address);
infowindow.open(map, this);
});
....
}
几乎一切正常:标记就位,并且所有标记都显示正确的信息窗口和正确的地址,除了那些地址为空且进行反向地理编码的那些。对于这最后一组,只有最后一个标记信息窗口显示正确的地址,所有其他信息窗口地址都是空的。任何想法?很感谢!