我对此感到疯狂。
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
latitude = results[0].geometry.location.lat();
longitude = results[0].geometry.location.lng();
locations[j][0] = direcciones[j]['1'];
locations[j][1] = latitude;
locations[j][2] = longitude;
locations[j][3] = direcciones[j]['10'];
j++;
}
});
如果我在地理编码功能中对位置[0] [0]发出警报,它可以正常工作,但如果我这样做,我会得到之前的值,因为我没有修改全局位置变量...
有人可以帮我正确地改变那个变量吗?
答案 0 :(得分:0)
...但如果我这样做,我会得到之前的值,因为我没有修改全局位置变量......
是的,它只是稍后。对geocode
的调用是异步,因此在进行回调之前不会看到结果。 {/ 1}}函数调用之后的代码将在回调运行之前运行,因此您不会看到任何更改。
让我们使用一个更简单的例子来说明:
geocode
如果你运行(fiddle),你会看到类似的内容:
1400063937865: x = 1 (immediately after setTimeout call) 1400063937915: x = 2 (in callback)
请注意先发生的事情。