【发布时间】:2013-02-16 05:06:34
【问题描述】:
我目前正在使用 Google 地图的地理编码,需要创建一个包含数组作为元素的数组。
基本上我需要创建这个:
var locations = [
['Bondi Beach', -33.890542, 151.274856, 4],
['Coogee Beach', -33.923036, 151.259052, 5],
['Cronulla Beach', -34.028249, 151.157507, 3],
['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
['Maroubra Beach', -33.950198, 151.259302, 1]
];
但动态! 稍后我需要这个数组在地图上放置图钉。
我在做什么:
var locations = []; // The initial array
for (var i = 0; i < addresses.length; ++i){
var address=addresses[i]; // the address e.g. 15 Main St, Hyannis, MA
geocoder.geocode({ 'address': address}, function(results){
var obj = {
0: address,
1: results[0].geometry.location.hb,
2: results[0].geometry.location.ib,
3: i
};
console.log(obj);
locations.push(new Array());
locations[i].push(obj);
});
};
console.log(locations.length);
问题,问题:
我没有看到任何错误,但最后位置 [] 数组为空。
如果需要,这是一个控制台屏幕:
【问题讨论】:
-
geocode是异步的。在处理数组之前,您需要等待所有调用回复。 -
嗯。我认为应该完成循环以使脚本继续?没有?
-
将一个空数组推入另一个数组的基本方法在这个问题中并不明显,所以我会指出,对于一个数组,它是
myArray.push(new Array())。myArray必须至少实例化为一个空数组,即myArray = []
标签: javascript arrays multidimensional-array google-geocoder