#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. Да, я видел, что сублокальность — это еще один. Поэтому, я думаю, я изменю ваш метод, чтобы использовать это, если он не находит местоположение