Получить страну из широты долготы

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

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

Ответ 1

Я не знаю, работает ли он с картами google, но есть веб-служба, которая возвращает код страны и принимает в качестве параметров значение lat и long.

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

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

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

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

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

См. docs

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

Ответ 2

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

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

http://maps.googleapis.com/maps/api/geocode/json?latlng=11.2742848,75.8013801

Ответ 3

<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>

Ответ 4

Если необходима автономная библиотека (то есть без подключения к серверу/интернету и быстро), и только информация о стране требуется, следующая библиотека, основанная на данных 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, кода страны для latlng.

Ответ 5

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

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

Ответ 6

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

https://github.com/SocialHarvest/geobed

https://github.com/bradfitz/latlong