我正在尝试使用JavaScript API中的MapQuest地理编码模块动态批处理地理编码地址:
MQA.withModule('geocoder', function() {
var addresses = new Array();
$.getJSON('get_marker_json.php', function( data ) {
$.each(data, function(i, item) {
addresses.push(street: item.address, city: item.city, state: item.state, postalCode: item.zip);
});
});
/*Pass an array of locations to be geocoded and placed on map*/
map.geocodeAndAddLocations(
// add addresses from array here
addresses
);
});
然而,这不起作用。看来地址必须是预先定义的。例如:
map.geocodeAndAddLocations([
'Littleton CO',
{ city: 'Steamboat Springs', state: 'CO' },
{ street: '555 17th St', postalCode: '80202' },
'Winter Park CO'
]);
我怎么能实现这个目标?
谢谢!
答案 0 :(得分:1)
getJSON()
调用是异步的,这意味着当网络请求仍在运行时正在运行map.geocodeAndAddLocations()
,并且addresses
为空。
汇编map.geocodeAndAddLocations()
数组后,将您的号码转移到getJSON()
的{{1}}回调中。 (另外,为什么要组装一个JSON字符串数组?)
答案 1 :(得分:0)
你也可以通过事先添加以下内容使getJSON()调用同步,并使其等到数组被填充:
$.ajaxSetup({'async': false});