【问题标题】:Google Maps v3, reverse Geocoding and multiple InfowindowGoogle Maps v3、反向地理编码和多个信息窗口
【发布时间】:2012-08-01 18:45:29
【问题描述】:

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

....
}

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

【问题讨论】:

    标签: google-maps infowindow reverse-geocoding


    【解决方案1】:

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

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

    【讨论】:

    • 您没有提供足够的代码来让我轻松做到这一点。如果您希望我建议代码,请发布指向有效并演示问题的地图(或有效的 jsfiddle)的链接。
    猜你喜欢
    • 2013-06-27
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2011-06-22
    • 2011-05-03
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    相关资源
    最近更新 更多