【发布时间】:2011-05-28 17:13:41
【问题描述】:
我想知道如何使用 JavaScript 从纬度和经度中获取国家/地区名称。我愿意使用 Google Maps 的 JavaScript API。我也可以获取城市和邮编吗?
编辑:我的目标是自动填写地址字段,而不是在地图上显示。
【问题讨论】:
标签: javascript google-maps geolocation
我想知道如何使用 JavaScript 从纬度和经度中获取国家/地区名称。我愿意使用 Google Maps 的 JavaScript API。我也可以获取城市和邮编吗?
编辑:我的目标是自动填写地址字段,而不是在地图上显示。
【问题讨论】:
标签: javascript google-maps geolocation
我不知道它是否适用于谷歌地图,但有一个 Web 服务可以返回国家代码并将纬度和经度作为参数。
这是一个例子:
http://api.geonames.org/countryCodeJSON?lat=49.03&lng=10.2&username=demo
返回一个 JSON 数据:
{"languages":"de","distance":"0","countryCode":"DE","countryName":"Germany"}
我还找到了一点说明:
任何给定点的iso国家代码。
- Web 服务类型:REST
- 网址:
ws.geonames.org/countryCode?- 参数:
lat、lng、type、lang、radius(沿海地区最近国家的缓冲区以公里为单位)- 结果:返回给定纬度/经度的 iso 国家/地区代码
使用参数
type=xml,此服务返回一个带有iso 国家代码和国家名称的xml 文档。可选参数 lang 可用于指定国家/地区名称应使用的语言。 JSON 输出使用type=JSON生成
见docs
编辑:请注意demo 只是一个演示用户,您应该在http://www.geonames.org/login 创建一个用户帐户才能使用该服务。
【讨论】:
是的,您可以使用谷歌地图查找给定纬度和经度的国家/地区。使用reverse geocoding service。
您可以从服务器的响应中获取国家、城市、邮政编码和完整地址。查看链接中的示例以获取详细信息;)
【讨论】:
<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>
【讨论】:
如果需要一个独立的库(即没有服务器/互联网连接,并且速度很快),并且只需要国家信息,那么以下基于 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 的国家代码。
【讨论】:
Google Geocoding API 以 JSON 格式提供这些结果。它有一个免费层,但您需要为对 API 的无限制请求付费。
请求的 API 链接如下所示:
'https://maps.googleapis.com/maps/api/geocode/json?latlng=11.2742848,75.8013801&key=YOUR_API_KEY_HERE'
【讨论】:
如果您使用的是 golang,您可以使用这两个库之一来获取国家/地区,您甚至不需要进行 api 调用,因为数据集是内置的,因此它是无限的。
【讨论】: