Мне нужен список стран, штатов и городов на основе набора имеющихся у меня значений широты и долготы. Мне нужно сохранить эту информацию таким образом, чтобы иерархия сохранялась и без дубликатов (например, «США», «Соединенные Штаты» и «Соединенные Штаты Америки» - одна и та же страна; мне нужен только один экземпляр этой страны в моей базе данных) .
Возможно ли это сделать с помощью Google Map API?
google-maps
geolocation
google-maps-api-3
geocoding
StackOverflowNewbie
источник
источник
Ответы:
То, что вы ищете, называется обратным геокодированием . Google предоставляет серверную службу обратного геокодирования через Google Geocoding API , которую вы должны иметь возможность использовать в своем проекте.
Вот так будет выглядеть ответ на следующий запрос:
Отклик:
Вы также можете выбрать получение ответа в формате xml вместо json, просто заменив json на xml в URI запроса:
Насколько мне известно, Google также возвращает одно и то же имя для компонентов адреса, особенно для высокоуровневых имен, таких как названия стран и городов. Тем не менее, имейте в виду, что, хотя результаты очень точны для большинства приложений, вы все же можете иногда обнаружить орфографические ошибки или неоднозначный результат.
источник
sensor=false
делать?Здесь у вас есть простой ответ: получить название города с помощью геолокации
Но для того, что вы ищете, я бы порекомендовал этот способ.
Только если вам также нужен administrator_area_level_1, чтобы хранить разные вещи для Парижа, Техаса, США и Парижа, Иль-де-Франс, Франция, и предоставить резервный вариант вручную:
-
У Михала проблема в том, что он берет первый результат, а не конкретный. Он использует результаты [0]. Я считаю нужным (я только что изменил его код) принимать ТОЛЬКО результат, тип которого - "locality", который всегда присутствует, даже в случае возможного ручного отката, если браузер не поддерживает геолокацию.
Его способ: полученные результаты отличаются от использования http://maps.googleapis.com/maps/api/geocode/json?address=bucharest&sensor=false, чем от использования http://maps.googleapis.com/maps/api/geocode /json?latlng=44.42514,26.10540&sensor=false (поиск по имени / поиск по широте и долготе )
Таким образом: те же результаты.
источник
Я использовал этот вопрос как отправную точку для своего собственного решения. Думал, что было бы целесообразно вернуть мой код, так как он меньше, чем у tabacitu
Зависимости:
Код:
источник
Я обнаружил, что javascript GeoCoder немного глючит, когда включил его в свои файлы jsp.
Вы также можете попробовать это:
источник
$.get(url).success(function(data)
на,$.get(url, function(data)
и он работает хорошоЯ написал эту функцию, которая извлекает то, что вы ищете, на основе данных,
address_components
возвращаемых API gmaps. Это город (например).Изменение
locality
кadministrative_area_level_1
для государства и т.д.В моем js-коде я использую вот так:
Вернется:
Waltham, MA
источник
Просто попробуйте этот код, этот код работает со мной
источник
Я создал небольшую функцию отображения:
Это решение для Angular 4, но я думаю, вы поняли идею.
Использование:
Таким образом,
address
объект будет примерно таким:Надеюсь, поможет!
источник
источник
@ Szkíta Было отличное решение, создав функцию, которая получает части адреса в именованном массиве. Вот скомпилированное решение для тех, кто хочет использовать простой JavaScript.
Функция для преобразования результатов в именованный массив:
Геокодируйте значения LAT / LNG:
источник