1

目前,我正在为我的地点自动完成输入使用区域。我以前在区域之前使用城市,因为会在输入中输出城镇/城市。

但现在我希望能够输入邮政编码或城镇/城市,而输出仍然只是城镇/城市。

基本上,我想使用区域,但将城市的输出放入输入元素中。

以下示例:

Input: London
Actual Output: London, UK (This is fine)
Desired Output: London, UK 

Input: SW1A
Actual Output: London SW1A, UK (This is not fine)
Desired Output: London, UK 

Input: NW3 7JR
Actual Output: Hampstead Lane, London NW3 7JR, UK (This is not fine)
Desired Output: London, UK

当前使用的Javascript:

//Function for Places Autocomplete
function activatePlacesSearch(){
    var input = document.getElementById('id_local_area');
    var options = {
        types: ['(regions)'],
        componentRestrictions: {country: 'gb'}};
    var autocomplete = new google.maps.places.Autocomplete(input, options);
}
4

1 回答 1

0

简而言之,这永远不会发生。

地点自动完成将始终将输入回显给用户,因此如果输入了部分邮政编码,则至少该部分邮政编码成为预测的一部分。使用 types= 参数,您可以限制预测,但在上面的示例中,这只会导致不返回任何预测。

您可以做几件事:

  1. 采取structured_formatting.secondary_textwhich,虽然并不总是您想要的“伦敦,英国”级别,但它始终可以在 Place Autocomplete 响应中使用,因此甚至不需要对 Place ID 执行详细信息请求。
  2. 请求此地点 ID 的详细信息(来自地理编码 API 或地点详细信息)并在地理编码 API 中对其位置 latlng 进行反向地理编码。这将为您提供包含 latlng 的所有政治特征。然后你需要小心哪个代表“城市”或任何你想要的。请参阅https://google-developers.appspot.com/maps/documentation/javascript/examples/places-autocomplete-addressform中的说明
于 2018-11-29T12:03:56.120 回答