Цикл по картам Google приводит к Javascript

#javascript #google-maps

#javascript #google-карты

Вопрос:

Таким образом, обратное геокодирование, результат выглядит следующим образом:

 results[0].formatted_address: "275-291 Bedford Ave, Brooklyn, NY 11211, USA",
results[1].formatted_address: "Williamsburg, NY, USA",
results[2].formatted_address: "New York 11211, USA",
results[3].formatted_address: "Kings, New York, USA",
results[4].formatted_address: "Brooklyn, New York, USA",
results[5].formatted_address: "New York, New York, USA",
results[6].formatted_address: "New York, USA",
results[7].formatted_address: "United States"
  

Это массив адресов, один менее подробный, чем следующий. Мне нужно перебрать этот список и получить адрес, который содержит ТОЛЬКО город / штат. Как бы мне это сделать?

Это не всегда определенный элемент (спасибо Google).

Комментарии:

1. Я сделал это недавно, позвольте мне найти это.

2. Я подумал, что кто-то должен был из. Спасибо, Чад.

Ответ №1:

 //store the most specific address for easy access
var a = results[0].address_components;

var city = null, state = null;
for(i = 0; i < a.length;   i)
{
   var t = a[i].types;
   if(compIsType(t, 'administrative_area_level_1'))
      state = a[i].long_name; //store the state
   else if(compIsType(t, 'locality'))
      city = a[i].long_name; //store the city

   //we can break early if we find both
   if(state != null amp;amp; city != null) break;
}

function compIsType(t, s) { 
   for(z = 0; z < t.length;   z) 
      if(t[z] == s)
         return true;

   return false;
}
  

В основном, что происходит, так это то, что вы перебираете адресные компоненты, с каждым из которых связаны «типы». Вы можете использовать их, чтобы определить, что представляет этот компонент. Почти в 100% случаев (в США) 'administrative_area_level_1' это штат, а 'locality' это город. Дополнительная информация: Типы, вывод в формате JSON.

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

Комментарии:

1. В большинстве случаев это работает, однако мы получаем для одного конкретного местоположения в широте / длине неопределенный город, но правильный штат. Есть ли случай, когда это могло бы произойти, и обходной путь?

2. Объект результатов, возвращаемый в результате геокодирования, не всегда содержит все части. Проблема не в этом коде, а в том, что геокодер не нашел эту информацию.

3. Да, я видел, что сублокальность — это еще один. Поэтому, я думаю, я изменю ваш метод, чтобы использовать это, если он не находит местоположение