Получить страну от широты долготы - PullRequest
46 голосов
/ 21 декабря 2010

Я хотел бы знать, как я могу получить название страны по широте и долготе, используя JavaScript.Я открыт для использования JavaScript API Карт Google.Могу ли я также получить город и почтовый индекс?

Редактировать: Моя цель - заполнить поле адреса автоматически, а не отображать его на карте.

Ответы [ 6 ]

62 голосов
/ 21 декабря 2010

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

Вот пример:
http://api.geonames.org/countryCodeJSON?lat=49.03&lng=10.2&username=demo

Возвращает данные JSON: {"languages":"de","distance":"0","countryCode":"DE","countryName":"Germany"}

Я также нашел небольшое описание:

Код страны iso любой заданной точки.

  • Тип веб-сервиса: REST
  • URL: ws.geonames.org/countryCode?
  • Параметры: lat, lng, type, lang, radius (буферв км для ближайшей страны в прибрежных районах)
  • Результат: возвращает код страны iso для данной широты / долготы

С параметром type=xml эта служба возвращает документ XML сiso код страны и название страны.Необязательный параметр lang можно использовать для указания языка, на котором должно быть указано название страны. Вывод JSON производится с type=JSON

См. документы

Редактировать: Обратите внимание, что demo является просто демонстрационным пользователем, и вы должны создать учетную запись пользователя на http://www.geonames.org/login, чтобы использовать эту услугу.

11 голосов
/ 05 декабря 2015

Google Geocoding API предоставляет эти результаты в формате JSON.Это бесплатно, но вам может потребоваться оплата за неограниченный доступ.

Попробуйте ссылку ниже

http://maps.googleapis.com/maps/api/geocode/json?latlng=11.2742848,75.8013801
9 голосов
/ 01 марта 2012
<form id="form1" runat="server">
<div>
    <script type="text/javascript" src="http://j.maxmind.com/app/geoip.js" ></script>
    <br />Country Code:
    <script type="text/javascript">document.write(geoip_country_code());</script>
    <br />Country Name:
    <script type="text/javascript">document.write(geoip_country_name());</script>
    <br />City:
    <script type="text/javascript">document.write(geoip_city());</script>
    <br />Region:
    <script type="text/javascript">document.write(geoip_region());</script>
    <br />Region Name:
    <script type="text/javascript">document.write(geoip_region_name());</script>
    <br />Latitude:
    <script type="text/javascript">document.write(geoip_latitude());</script>
    <br />Longitude:
    <script type="text/javascript">document.write(geoip_longitude());</script>
    <br />Postal Code:
    <script type="text/javascript">document.write(geoip_postal_code());</script>

</div>
</form>
7 голосов
/ 20 сентября 2015

Если желательна автономная библиотека (т. Е. Нет подключения к серверу / Интернету и требуется быстрый), и требуется только информация о стране, может пригодиться следующая библиотека на основе данных openstreetmap - https://github.com/hlaw/codegrid-js

<script type="text/javascript" src="[path]/codegrid.js"></script>
grid = codegrid.CodeGrid(); // initialize

grid.getCode (lat, lng, function (err, code) { ... });

Обратный вызов вызывается с code, кодом страны для латинского номера.

5 голосов
/ 21 декабря 2010

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

. Страна, город, почтовый индекс и полный адрес можно получить из ответа, полученного с сервера.Проверьте пример по ссылке для деталей;)

0 голосов
/ 03 июня 2016

Если вы используете golang, вы можете использовать одну из этих двух библиотек, чтобы получить страну, и вам даже не нужно совершать вызов API, так как набор данных встроен, поэтому он неограничен.

https://github.com/SocialHarvest/geobed

https://github.com/bradfitz/latlong

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