【问题标题】:How can I convert Google Maps plus codes to Lng & Lat coordinates如何将 Google Maps plus 代码转换为 Lng 和 Lat 坐标
【发布时间】: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 但它仍然非常不准确,而且显然加上代码更容易和更易于使用来生成有效的谷歌地图位置链接

标签: android google-maps maps coordinates open-location-code


【解决方案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'
    猜你喜欢
    • 2020-01-20
    • 2010-11-12
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2011-11-19
    • 2017-09-06
    相关资源
    最近更新 更多