从Google Places API调用中提取更多信息

时间:2014-09-04 11:00:32

标签: javascript jquery google-maps google-maps-api-3 google-places-api

这是我的工作代码:http://jsfiddle.net/spadez/5ntLetey/1/

它完美无缺,但我试图将剩余的信息提取到字段中。这是我之前在网上找到的lat和long的代码:

lat.val(results[0].geometry.location.lat());
lng.val(results[0].geometry.location.lng());

如何提取其余信息?这是我尝试过但没有工作的一个例子:

country_short.val(results[0].address_components.country());

Here is the API documentation,我做错了什么?

1 个答案:

答案 0 :(得分:1)

你没有做任何特别错误的事情,不幸的是,返回的地址组件可能大不相同。例如,如果你要对一个可能位于海洋中间的坐标集进行地理编码,那么你就不会得到许多address个组件,也许什么都没有,而在某个地方的中间像纽约市一样,有很多组件可以归还。

您需要做的是解析返回的响应以找到您想要的内容country,并且仅在中将其插入到您的字段中,且仅当有地址组件时才type"国家"。

因此,举例来说,为了让国家变得短而长,你会做这样的事情:

            // Get Country value.
            var country = getCountry(results[0].address_components)
            $('#country_long').val(country.long);
            $('#country_short').val(country.short);

调用看起来像这样的函数:

function getCountry(addressComponents) {
    var returnCountry = {
        'long': 'N/A',
        'short': 'N/A'
    };
    // Loop through all address components and find country if possible.
    $(addressComponents).each(function (componentIndex, component) {
        // loop through all "types" of each component to find if there is a type of "country"
        $(component.types).each(function (indexTypes, type) {
            if (type == 'country') {
                // Then return the long_name and short_name of the component
                returnCountry.long = component.long_name;
                returnCountry.short = component.short_name;
            }
        });
    });
    return returnCountry;
}

演示:http://jsfiddle.net/5ntLetey/3/