2014-02-12 2 views
0

Привет новых к JSON и мне было интересно, если я могу назвать «страна» из JSON результат этого API,: http://maps.google.com/maps/api/js?sensor=true&libraries=placesJSON результат получить страну от address_components

Я пытался использовать цикл, который получает последнюю часть JSON результат address_components, но я понял, что расположение «страны» изменяется от входа пользователя

выработать:
Сценарий 1: вХОД пользователя:
736 Локхарт суд, Harristown QLD 4350, Австралия

Результат:
Австралия // это правильно

Сценарий 2: ВХОД пользователя:
Лэнгли Air Force Base, Hampton, VA, Соединенные Штаты Америки

Результат:
Вирджиния // не правильно

Мой текущий код получает последний индекс массива address_components, и мне интересно, могу ли я сделать что-то вроде этого * data.results [0] .address_components [country] .long_name; *, но я j ust не знает правильного пути.

Код:

<html> 
<head></head> 
<title></title> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&libraries=places"></script> 
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $("#btn1 ").click(function() { 
     var address=encodeURI($('#userInput').val()); 
     var url='https://maps.googleapis.com/maps/api/geocode/json?address='+address+'&sensor=true'; 
     $.getJSON(url, function(data){ 
      for(var row=0; row<data.results.length;row++){ 
      document.getElementById('res').value = (data.results[row].address_components[data.results[row].address_components.length-2].long_name); 
      }  
    }); 
    }); 
}); 
</script>   
<body> 

<input type="text" id="res">  
<input type="text" name="userInput" id="userInput" /> 

    <input type="button" id="btn1" value="Load Data" /> 
</body> 
</html> 

Как я могу получить специфично (страна, номер улицы и т.д.) элемент, не полагаясь на индекс address_components?

ответ

1

в вашем случае вам придется вручную перебрать массив и проверить, что массив types содержит 'country'. Вы можете использовать для этого array.indexof.

for(var row=0; row<data.results.length;row++){ 
    var item = data.results[row]; 
    for(var i = 0; i< item.address_components.length; i++) { 
     var component = item.address_components[i]; 
     if(component.types.indexof('country') != -1) { 
      document.getElementById('res').value = component.long_name; 
      } 
    } 
} 
Смежные вопросы