0

我正在研究谷歌地图 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);
    });

....
}

几乎一切正常:标记就位,并且所有标记都显示正确的信息窗口和正确的地址,除了那些地址为空且进行反向地理编码的那些。对于这最后一组,只有最后一个标记信息窗口显示正确的地址,所有其他信息窗口地址都是空的。任何想法?很感谢!

4

1 回答 1

0

解决此问题的一种方法是创建一个执行反向地理编码的函数,并且可以在信息窗口和标记上具有函数关闭。

由于反向地理编码操作是异步的,因此返回的地址不可用于除最后一个标记之外的任何地址。

于 2012-08-01T19:13:17.600 回答