0

我对以下功能有疑问:

function geo(address) {
    geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            return results[0].geometry.location;
        }
    });
}

它返回我“未定义”。任何帮助都会得到认可。非常感谢!

4

2 回答 2

0

好,谢谢。

我找到了其他解决方案 - 最好将 results[0].geometry.location 中的值保存到 cookie 并在我想要的任何地方使用。不管怎么说,还是要谢谢你!

于 2012-10-11T18:56:05.760 回答
0

实际上您的地理编码代码是正确的。问题是“geocoder.geocode”是异步的,geo 函数在获取地理编码结果之前完成执行。作为概念证明,试试这个:

function geo(address) {
    geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {

            alert(results[0].geometry.location); //should have valid info
            return results[0].geometry.location;                    
        }
    });

    alert("I bet you were not expecting this alert to go first");                
}

所以,你有两个选择。您可以在地理函数中处理地理编码位置,或者为处理该位置的函数提供回调。

我已经用一个例子更新了你的小提琴。在这里检查

于 2012-10-11T03:07:06.367 回答