动态添加地址到MapQuest JavaScript地理编码模块

时间:2013-11-14 03:04:06

标签: javascript geocoding mapquest

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

我怎么能实现这个目标?

谢谢!

2 个答案:

答案 0 :(得分:1)

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

汇编map.geocodeAndAddLocations()数组后,将您的号码转移到getJSON()的{​​{1}}回调中。 (另外,为什么要组装一个JSON字符串数组?)

答案 1 :(得分:0)

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

$.ajaxSetup({'async': false});