从经纬度获取国家

IT技术 javascript google-maps geolocation
2021-03-16 10:58:33

我想知道如何使用 JavaScript 从纬度和经度获取国家名称。我愿意使用 Google Maps 的 JavaScript API。我也可以得到城市和邮编吗?

编辑:我的目标是自动填写地址字段,而不是在地图上显示它。

6个回答

我不知道它是否适用于谷歌地图,但有一个网络服务返回一个国家代码并将纬度和经度作为参数。

这是一个例子:http :
//api.geonames.org/countryCodeJSON?lat=49.03&lng=10.2&username=demo

返回一个 JSON 数据: {"languages":"de","distance":"0","countryCode":"DE","countryName":"Germany"}

我还找到了一个小说明:

任何给定点的 iso 国家/地区代码。

  • 网络服务类型:REST
  • 网址: ws.geonames.org/countryCode?
  • 参数:lat, lng, type, lang, radius(沿海地区最近国家的缓冲区,以公里为单位)
  • 结果:返回给定纬度/经度的 iso 国家/地区代码

使用参数,type=xml此服务返回一个带有 iso 国家/地区代码和国家/地区名称的 xml 文档。可选参数 lang 可用于指定国家/地区名称应使用的语言。 JSON 输出使用type=JSON

查看文档

编辑:请注意,这demo只是一个演示用户,您应该在http://www.geonames.org/login创建一个用户帐户才能使用该服务。

如果其他人(如我)在将结果与某些常量进行比较时遇到问题,请注意 ISO 代码后有一个换行符。
2021-04-17 10:58:33
此 Web 服务需要 17 秒来响应示例请求。对同步 UI 使用这么慢的服务是不合理的。
2021-04-24 10:58:33
在 2,000 个请求后节流。
2021-05-01 10:58:33
您应该使用高级 api ( api.geonames.org ) 以获得更快的响应...... WS* 真的很慢..
2021-05-05 10:58:33
也许您检查时服务器很慢。我刚才和昨天检查过:两次它都立即响应。
2021-05-07 10:58:33

Google Geocoding API 以 JSON 格式提供这些结果。它有一个免费层,但您需要为对 API 的无限制请求付费。

请求的 API 链接如下所示:

'https://maps.googleapis.com/maps/api/geocode/json?latlng=11.2742848,75.8013801&key=YOUR_API_KEY_HERE'
无限制访问是什么意思?
2021-04-17 10:58:33
我更新了截至 2019 年 11 月的响应。您必须将 API KEY 添加到 URL 才能访问 API 端点。
2021-04-17 10:58:33
除非坐标附近有兴趣点,否则不起作用。如果没有,则不返回任何内容。
2021-04-24 10:58:33
它不再起作用了。请参阅:{ "error_message" : "您必须使用 API 密钥来验证对 Google Maps Platform API 的每个请求。有关其他信息,请参阅g.co/dev/maps-no-account ", "results" : [] , "状态" : "REQUEST_DENIED" }
2021-05-08 10:58:33
Google Maps Geocoding API 对免费使用有一些限制。例如每天最大免费请求数为 2,500。每秒最大免费请求数为 10。有关更多详细信息,您可以访问developer.google.com/maps/documentation/geocoding/usage-limits
2021-05-10 10:58:33

如果需要一个自包含的库(即没有服务器/互联网连接,并且速度快),并且只需要国家信息,那么以下基于 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) { ... });

使用codelatlng 的国家代码调用回调

希望我能让这个工作,但这意味着你需要包括所有的瓷砖和 worldjson。
2021-04-21 10:58:33
哈利lua!不需要一些不稳定的“免费”地理定位服务器的解决方案
2021-04-27 10:58:33
@headduck 执行此操作时出现 CORS 错误?知道我能做什么吗?
2021-05-02 10:58:33
当 javascript 无法在本地读取 json 文件时,如何在没有服务器的情况下使其工作?
2021-05-05 10:58:33
<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>
似乎不起作用,因为j.maxmind.com/app/geoip.js脚本不再加载。
2021-05-12 10:58:33

是的,您可以使用谷歌地图查找给定纬度和经度的国家/地区。使用反向地理编码服务

您可以从服务器的响应中获取国家、城市、邮政编码和完整地址。查看链接中的示例以了解详细信息;)