Получить страну из широты долготы
Я хотел бы знать, как я могу получить название страны из широты и долготы с помощью 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