Цикл по Google Maps приводит к Javascript - PullRequest
1 голос
/ 10 мая 2011

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

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 Ответ

1 голос
/ 10 мая 2011
//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 && 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 .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...