android - 谷歌地图 : open URL by coordinates but show the location name

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

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

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

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

我试过类似的东西

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

运气不好。本地图打开时,它会显示坐标,而不是地名。

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

动机:坐标比地点名称更准确、更明确。例如,有俄亥俄州耶路撒冷和以色列耶路撒冷,它们相隔半个地球。或者,“卢浮宫”,它只是一栋建筑,但却是一座跨越四条街、有多个入口的巨大建筑。坐标解决了这些问题,但它们不是“人类可读的”。您不能向用户显示“49.3697,0.8711”并期望他们认出奥马哈海滩。

谢谢

最佳答案

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

您将需要一个额外的步骤来执行此操作。对坐标执行反向地理编码请求并获取地点 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 服务的 Java 客户端库:

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

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

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

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

希望对您有所帮助!

关于android - 谷歌地图 : open URL by coordinates but show the location name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48761441/

相关文章:

Android:如何以编程方式在 LinearLayout 中将 TextView 水平居中

android - React Native - Android 模拟器的文本转换问题

javascript - 如何摆脱谷歌地图中的小矮人?

javascript - 如何在页面加载时初始化反向地理编码?

android - Google Geocoding API 限制

android - 如何使用 green DAO 知道所有打开的数据库连接..?

android - 悬停效果在 Android 浏览器中不起作用

java - Google map 在我的 Android 应用程序中显示空白页?

javascript - map fitBounds() 放大到数组中的最后一个标记

java - 反向地理编码获取街道名称Android