Использование геокодера карт Google с ограничениями адресов и компонентов для страны - PullRequest
0 голосов
/ 12 февраля 2019

В моей форме есть поле, в котором используется функция автозаполнения Google

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

, но если пользователь не выбирает раскрывающийся список из автозаполнения, мне нужен геокодер карт Google для поиска, когда формаОтправлено.Я хочу, чтобы мой пользователь выбирал улицу, город, город, район и т. Д. В любой точке мира!

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

Но теперь я хочу иметь возможность ограничить геокодер в США (улица, район, город, город и т. Д.) С компонентом Ограничение страны (США), но когда я пытаюсь это ниже, он просто зависает!

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 для doc, есть ли в компоненте ограничения поле, которое действует как поле адреса?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Я понял это.

ниже приведен фрагмент кода!

navbarGeocoder.geocode({
      address: location.value,
      componentRestrictions: {
        country: ' US'
      }
    }, function(results, status) {
0 голосов
/ 12 февраля 2019

Изучив предоставленную вами документацию, я думаю, что ваша проблема может быть довольно простой - хотя мне еще предстоит ее протестировать.В любом случае, если вы перейдете к разделу «Запросы геокодирования», вы увидите следующий код:

{
 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' 
    } 
}, 
...