将Google地理编码器的结果导入阵列?

时间:2011-08-14 19:24:52

标签: javascript google-maps google-maps-api-3 mootools

我有以下代码:

var data = geocoder.geocode({'address': 'new york'}, function (results, status)
{
    if(status == google.maps.GeocoderStatus.OK)
    {
        response($.map(results, function(item) 
        {
            return
            {
                value: item.formatted_address
            }
        }));
    }
});

我需要将数据的输出看起来像这样:

var data = [
    {value: 'some1'},
    {value: 'some2'},
    {value: 'some3'}
];

我真的不知道我在做什么以使其进入该状态并且我不确定初始地理编码器请求究竟返回了什么。在解释上述功能时,谷歌代码网站上的信息相当有限。

知道我该怎么办吗?感谢。

2 个答案:

答案 0 :(得分:2)

Geocoder.geocode()不会返回任何值,因此您无法执行:

var data = geocoder.geocode({'address': 'new york'}, function (results, status) {

此外,您在上述调用中指定的回调function (results, status) {...}在完成地理编码后由地理编码器异步调用。因此,您需要在回调本身中使用结果,例如填充一些文本框等。这是一个使用纯Javascript的模板,你可以适当地适应你的JS框架:

geocoder.geocode({'address': 'new york'}, 
    function (results, status) {     
        if(status == google.maps.GeocoderStatus.OK) {
            for (var i = 0; i < results.length; ++i) {         
                alert(i + ": " + results[i].formatted_address);
            }             
        }         
    }
);     

答案 1 :(得分:0)

.map返回一个jQuery对象。要获取常规数组,请使用get

var data = $.map(results, function(item) {
    return { value: item.formatted_address };
    }).get();