【问题标题】:Google Maps: open URL by coordinates but show the location name谷歌地图:按坐标打开 URL 但显示位置名称
【发布时间】:2018-02-13 07:22:11
【问题描述】:

我一直在尝试从坐标 URL 打开 Google 地图(特别是在 Android 上,但不一定),例如

https://www.google.com/maps/search/?api=1&query=51.5055,-0.0754

但是当地图打开时,我希望它显示位置名称,例如“塔桥”。不是坐标51.5055,-0.0754

我尝试过类似的东西

https://www.google.com/maps/search/?api=1&query=51.5055,-0.0754&query_place_id=Tower+Bridge

没有运气。地图打开时会显示坐标,而不是地名。

我可以“注入”位置名称(类似于https://....&location_name=Traitors+Gate)和/或地图从坐标中显示位置名称(反向地理编码)。

动机:坐标比位置名称更准确,更不模棱两可。例如,有耶路撒冷,哦,有耶路撒冷,以色列,在半个世界之外。或者,“卢浮宫”,它只是一栋建筑,却是一栋横跨四条街道的巨大建筑,有多个入口。坐标解决了这些问题,但它们不是“人类可读的”。您不能向用户展示“49.3697,0.8711”并期望他们认出奥马哈海滩。

谢谢

【问题讨论】:

  • 我希望!静态地图强制静态地图。这意味着你不能启动谷歌地图应用程序,你不能使用动态地图......标记很好,但你确实想将地图瞄准一个点,并让用户做任何他们用它做的事情,当“目的地”是标记。通过静态地图,您只需显示地图的图像:(

标签: android google-maps reverse-geocoding google-maps-urls


【解决方案1】:

很遗憾,Google 地图网址不支持这种发送标签。您应该发送一个有效的地点 ID 值,以便在 Google 地图应用中获得正确的地点名称。

您将需要一个额外的步骤来执行此操作。对坐标执行反向地理编码请求并获取地点 ID。

https://maps.googleapis.com/maps/api/geocode/json?latlng=51.5055%2C-0.0754&language=en&key=YOUR_API_KEY

这将返回塔桥的地点 ID ChIJlRsEuUgDdkgRSM7ciIhVooM。在 Geocoder 工具中查看此示例:

https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D51.5055%252C-0.0754

您可以在 GitHub 上找到适用于 Google Maps API Web Services 的 Java 客户端库:

https://github.com/googlemaps/google-maps-services-java

您可以使用这个库来执行地理编码请求,或者您也可以使用 Places API 附近搜索来获取最近的地点。请注意,网络服务需要不同的 API 密钥,因为它们不支持您在 Maps Android API 的 API 密钥中使用的 Android 应用限制。

获得地点 ID 值后,只需创建 Google 地图 URL 链接。例如

https://www.google.com/maps/search/?api=1&query=51.5055,-0.0754&query_place_id=ChIJlRsEuUgDdkgRSM7ciIhVooM

我希望这会有所帮助!

【讨论】:

  • 是的,就是这样 :) 正如我所怀疑的,我需要在 2 个电话中完成此操作。没有更短的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多