将Google Maps Geocoder与国家/地区的地址和组件限制一起使用

时间:2019-02-12 02:05:50

标签: javascript jquery google-geocoder google-geocoding-api

我的表单上有一个使用Google自动填充功能的字段

new window.google.maps.places.Autocomplete(location, { types: ['geocode'] });

但是,如果用户未从自动完成功能中选择下拉菜单,则我需要Google Maps Geocoder在提交表单时进行搜索。我希望用户选择世界上任何地方的街道,城镇,城市,邻里等!

var navbarGeocoder = new google.maps.Geocoder();
navbarGeocoder.geocode({
      'address': location.value
    }, function(results, status) {

但是现在我希望能够将地理编码器的国家/地区限制为美国(街道,邻里,城市,城镇等),但是当我在下面尝试时,它会挂起! / p>

var navbarGeocoder = new google.maps.Geocoder();
navbarGeocoder.geocode({
  'address': location.value
}, {
  componentRestrictions: {
    country: ' US'
  }
}, function(results, status) {

  if (status === google.maps.GeocoderStatus.OK) {
    // do something
  } else {
    // do something
  }

});

是否有适当的方法来添加组件限制并仍然具有地址字段?任何帮助将不胜感激!

我正在Google {@ 3}网站上使用此文档,是否在组件限制中有一个像地址字段一样的字段?

2 个答案:

答案 0 :(得分:1)

通过查看您提供的文档,我认为您的问题实际上可能非常简单-尽管我尚未亲自对其进行测试。无论如何,如果您向上滚动到“地理编码请求”部分,则会看到以下代码。

{
 address: string,
 location: LatLng,
 placeId: string,
 bounds: LatLngBounds,
 componentRestrictions: GeocoderComponentRestrictions,
 region: string
}

所以,我认为您只需要将componentRestrictions字段与实际地址放在同一数组中即可。 让我知道是否有帮助:)

因此,而不是您发布的内容,请尝试...

var navbarGeocoder = new google.maps.Geocoder(); 
navbarGeocoder.geocode({ 
    'address': location.value, 
    componentRestrictions: { 
        country: ' US' 
    } 
}, 

答案 1 :(得分:0)

我知道了。

下面是代码段!

navbarGeocoder.geocode({
      address: location.value,
      componentRestrictions: {
        country: ' US'
      }
    }, function(results, status) {