19

我正在设置一个自定义自动完成字段,在其中显示来自 Google 地方信息的位置和来自我的数据库的与搜索查询匹配的事件。出于这个原因,我使用 Google Places Autocomplete Service 来获取查询预测,而不是将 Places Autocomplete 直接插入到我的文本字段中。

问题是我不知道如何使用 AutoComplete 服务按国家/地区过滤 Places Autocomplete 建议。

我试过了:

var service = new google.maps.places.AutocompleteService(null, {
        types: ['cities'],
        componentRestrictions: {country: "au"}
    });

但它仍然显示来自德国和法国的自动完成选项:(

有什么建议么?

4

5 回答 5

56

您需要在调用服务时通过限制,而不是在创建服务时。这里:

//create service
service = new google.maps.places.AutocompleteService();

//perform request. limit results to Australia
var request = {
    input: 'Brisbane',
    componentRestrictions: {country: 'au'},
};
service.getPlacePredictions(request, callback);
于 2013-03-09T11:56:53.490 回答
8

您可以使用AutocompletionRequest指定类型和 componentRestrictions 。这是一个例子 -

var service = new google.maps.places.AutocompleteService();

    service.getPlacePredictions({ input: query, types: ['geocode'], 
                                componentRestrictions:{ country: 'us' } },
            function (predictions, status) {
                if (status == google.maps.places.PlacesServiceStatus.OK) {
                    var results = document.getElementById('results');
                    for (var i = 0, prediction; prediction = predictions[i]; i++) {
                        results.innerHTML += '<li>' + prediction.description + '</li>';
                    }
                }
            });
于 2013-06-01T13:45:10.083 回答
1

如文档参考中所述,Places LibraryAutocompleteService不支持AutocompleteOptions。如果您认为这是一项有价值的功能,请提交Places API - 功能请求

于 2013-02-05T04:00:32.503 回答
-1

您应该使用此代码。

var options = {
    types: ['(cities)'],
    componentRestrictions: {country: ["in"]}
}
//Find From location    
var input= document.getElementById('input_box_city');
var fromAuto = new google.maps.places.Autocomplete(input, options);
于 2016-11-20T16:38:37.017 回答
-1

使用此工作代码

var input = document.getElementById("query_value");
var autocomplete = new google.maps.places.Autocomplete(input, {
  componentRestrictions: { country: "IN" },
  place_id: "YOUR_PLACE_ID"
});
google.maps.event.addListener(autocomplete, "place_changed", function() {
  var place = autocomplete.getPlace();
});


https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places&language=en&key=YOUR_KEY
于 2017-07-31T05:34:51.283 回答