如何将 Google Maps plus 代码转换为 Lng 和 Lat 坐标

Posted

技术标签:

【中文标题】如何将 Google Maps plus 代码转换为 Lng 和 Lat 坐标【英文标题】:How can I convert Google Maps plus codes to Lng & Lat coordinates 【发布时间】:2019-10-10 04:05:51 【问题描述】:

我正在做一个项目,我正在使用一些旧的谷歌地图。例如,它需要经纬 gps 坐标来获取医院的位置。

我找不到以这种格式“lng,lat”检索该信息的方法

例如:(34.417514, 8.7518123)

新的谷歌地图唯一拥有的是加号(https://plus.codes/ 使用),它们用作位置坐标。

你们能帮我找到一种方法将它们转换为 lng lat 格式,或者直接从谷歌地图网站检索 lng 和 lat。

或者通过将我的地理位置以加码格式保存在 android studio(当然是在数据库中)而不是使用 lat lng

https://www.up-00.com/i/00125/m4kadq6c7aeb.png

【问题讨论】:

您的代码在哪里,您尝试过什么? 我现在没有 android 应用程序代码,因为它在我的另一台计算机上,而且我离家很远,但我正在开发一个 Web 仪表板,该仪表板可以检索 lat lng 坐标并放置它们在这样的谷歌地图链接中:www。 google .com / maps / place /@lng,lat 但它仍然非常不准确,而且显然加上代码更容易和更易于使用来生成有效的谷歌地图位置链接 【参考方案1】:

您可以通过 Plus codes API 将 Plus 代码转换为 lat/lng 格式。如果您有完整的(“+”字符前的 8 位数字,例如您所在位置的 8F6CCQCW+2F)加码,您可以在本地(无需任何互联网请求)以这种方式使用 OpenLocationCode.decode() 方法:

...
OpenLocationCode olc = new OpenLocationCode("8F6CCQCW+2F");
Log.d(TAG, "Lat = " + olc.decode().getCenterLatitude() + "  Lng = " + olc.decode().getCenterLongitude());
...

如果您有短加号(“+”字符前少于 8 位数字,例如您所在位置的 CCQCW+2F Gafsa,Gafsa 是该区域,并且使用它而不是使用完整的加号)您可以使用 HttpURLConnection

`https://plus.codes/api?address=CCQCW%2B2F Gafsa&key=YOUR_GEOCODING_API_KEY`

%2B 代表+ 符号)

(注意!您需要Geocoding API Key 用于地理编码Gafsa 部分,即区域,您需要一个带有短加号的区域) 并从其 JSON 响应中获取 location.latlocation.lng 标签:


  "plus_code": 
    "global_code": "8F6CCQJG+",
    "geometry": 
      "bounds": 
        "northeast": 
          "lat": 34.432500000000005,
          "lng": 8.777500000000003
        ,
        "southwest": 
          "lat": 34.43000000000001,
          "lng": 8.775000000000006
        
      ,
      "location": 
        "lat": 34.431250000000006,
        "lng": 8.776250000000005
      
    ,
    "locality": 
  ,
  "status": "OK"

对于“替代”(以加码格式保存我的地理位置),您可以(完全本地)使用encode() 类的OpenLocationCode 方法:

OpenLocationCode.encode(34.43125, 8.77625)

【讨论】:

【参考方案2】:

Python 解决方案:

>>> import openlocationcode
>>> openlocationcode.decode('8F6CCQCW+2F')
[34.42, 8.796125, 34.420125, 8.79625, 34.4200625, 8.7961875, 10]

【讨论】:

很抱歉,但它显示此错误 openlocationcode.decode('8F6CCQCW+2F') Traceback(最近一次调用最后):文件“”,第 1 行,在 AttributeError: 模块 'openlocationcode' 没有属性 'decode'

以上是关于如何将 Google Maps plus 代码转换为 Lng 和 Lat 坐标的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google Maps API v3 中使用 SVG 标记

使用 Google Maps API 将邮政编码转换为纬度/经度坐标?

如何在 Android Google Maps API v2 中将 LatLng 和半径转换为 ​​LatLngBounds?

Android:无法使用 Google Maps Fragment 进行共享元素转换

如何在 JavaFX 桌面应用程序中使用 Google Maps API?

Android - 上下文 - Google Maps V2 - 类型不匹配:无法从 Object 转换为 WindowManager