谷歌地方自动填充的混合结果

时间:2016-03-16 13:03:54

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

我有这段代码

    var input, defaultBounds, autocomplete_normal;
    input = (document.getElementById('search_location'));
    defaultBounds = new google.maps.LatLngBounds(
        new google.maps.LatLng(-90, -180),
        new google.maps.LatLng(90, 180)
    );
    var options = {
        bounds: defaultBounds,
       types: ['(cities)']
    };

    autocomplete_normal = new google.maps.places.Autocomplete(input, options);
    google.maps.event.addListener(autocomplete_normal, 'place_changed', function () {
        var place = autocomplete_normal.getPlace();  
        console.log(place);
    });

当我搜索“科英布拉,葡萄牙”时,Api将“Coimbra”称为“地方” - 应该如此。

但是,如果我用类型替换类型:['(cities)']:['geocode'],“Coimbra”将返回“administrative_area_level_2”,并且没有关于地点的其他信息。

带有类型的代码:['(cities)']用于提交页面以获取城市。带有类型的代码:['geocode']用于搜索表单,在这种情况下,由于“locality”变量为空,因此不会返回正确的结果。

我尝试用'(regions)'替换地理编码,但结果相同。你能告诉我为什么会这样吗?为什么这只发生在某些地方呢?

1 个答案:

答案 0 :(得分:-1)

Administrative_area 2也是城市......来自他们的文档:

  

administrative_area_level_2表示国家/地区以下的二阶民用实体。在美国,这些行政级别是县。并非所有国家都表现出这些行政级别。'

地理编码响应不包含“城市”,因此会将其还原为administrative_area_2。