2016-01-05 2 views
0

Я внедряю Google Адреса в форме, в которой пользователь войдет в свое местоположение. Место может быть полным адресом или просто городом.Лучший способ получить компоненты адреса из ответа API Google Адресов

Я хочу получить каждый отдельный компонент адреса, предоставленного пользователем. Каков наилучший способ получить каждый компонент, то есть адрес, город, штат, почтовый индекс и страну.

В приведенном ниже коде я получаю компоненты, представляющие собой массив. Нужно ли мне проходить через него или есть прямой способ доступа к каждому компоненту?

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script> 
<script type="text/javascript"> 
     google.maps.event.addDomListener(window, 'load', function() { 
      var places = new google.maps.places.Autocomplete(document.getElementById('location')); 
      google.maps.event.addListener(places, 'place_changed', function() { 
       var place = places.getPlace(); 
       var components = place.address_components; 


      }); 
     }); 
</script> 

ответ

0

Посмотрите здесь, например, от Google:

var address = ''; 
    if (place.address_components) { 
     address = [ 
     (place.address_components[0] && place.address_components[0].short_name || ''), 
     (place.address_components[1] && place.address_components[1].short_name || ''), 
     (place.address_components[2] && place.address_components[2].short_name || '') 
     ].join(' '); 
} 

Это функция для создания: Ванкувер Большого Ванкувера до н.э. (по ссылке ниже).

Таким образом, вы можете напрямую получить доступ к каждому из place.address_components, как в array. И затем сделайте то, что вы хотите сделать. Вот ссылка на этот пример: https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete

1

Петля, вероятно, самая простая. Прямого способа прямого перехода к, например, нет. адресный компонент state (если есть один экземпляр), это простой массив.

Можно также обрабатывать массив в нечто, что позволяет в прямые поиски по типу:

var components_by_type = {}; 
for (var i = 0; i < place.address_components.length; i++) { 
    var c = place.address_components[i]; 
    components_by_type[c.types[0]] = c; 
} 

console.log(components_by_type['state'].short_name); 

Это будет получить немного более сложным, если вы хотите работать с более чем первого типа в каждом компоненте, хотя.

Смежные вопросы