0

我正在尝试使用 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'
        ]);

我怎样才能做到这一点?

谢谢!

4

2 回答 2

1

getJSON()调用是异步的,这意味着在网络请求仍未发出且为空map.geocodeAndAddLocations()时正在运行。addresses

在组装数组后将您的调用移至map.geocodeAndAddLocations()回调中。(另外,你为什么要组装一个 JSON 字符串数组?)getJSON()addresses

于 2013-11-14T04:19:23.483 回答
0

您还可以通过预先添加以下内容来使 getJSON() 调用同步,并使其等到数组被填充:

$.ajaxSetup({'async': false});
于 2014-12-21T18:36:11.920 回答