【问题标题】:Is It Possible To Open Google Maps By PlaceId?是否可以通过 PlaceId 打开谷歌地图?
【发布时间】:2018-01-27 10:31:01
【问题描述】:

我有一个从 Google Places API 获得的地点 ID,目的是通过地点 ID 打开 Google 地图应用程序,如下面的类似方法

Uri gmmIntentUri = Uri.parse(String.format(Locale.ENGLISH,"geo:%f,%f", lat, lon));
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(mapIntent);
}

有什么办法吗?

当用户从 Place API 输入“埃菲尔铁塔”时,我已经有了纬度、经度。我正在存储这些值以供下次使用(假设我们从本地数据库中列出了某种访问过的地方,用户点击其中一个,应用导航到谷歌地图)

我有一些顾虑

  1. 如果我使用纬度-经度来指示地点而不是地点 ID 在谷歌地图上,如果“Cafe XYZ”移动另一条街道会发生什么 ?

  2. 如果我每次都使用地点 ID 来接收“Cafe XYZ”的最后位置 (而不是存储在我的本地数据库中的值)应用程序很容易达到请求限制

所以这些担忧让我想到了一种只发送地点 ID 谷歌地图的方法(比如发送坐标)

【问题讨论】:

  • GooglePlacesAPI 还提供latitudelongitudeplaceid。所以使用lat-lng 提供的GooglePlacesAPI 打开地图而不是placeid。这很简单。
  • @Heisen-Berg 感谢您的评论。我只是修改了问题以清楚地解释什么和为什么。它还包括对您的评论的回复。

标签: android google-maps google-places-api


【解决方案1】:

确实,有一种方法可以使用地点 ID 打开 Google 地图应用。为此,您必须使用 2017 年 5 月推出的 Google Maps URLs。按照 Google 地图 URL 的文档,您可以为“埃菲尔铁塔”构建以下 URL(地点 ID ChIJLU7jZClu5kcR4PcOOO6p3I0)

https://www.google.com/maps/search/?api=1&query=Eiffel%20Tower&query_place_id=ChIJLU7jZClu5kcR4PcOOO6p3I0

因此,您的代码将类似于

Uri gmmIntentUri = Uri.parse("https://www.google.com/maps/search/?api=1&query=Eiffel%20Tower&query_place_id=ChIJLU7jZClu5kcR4PcOOO6p3I0");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(mapIntent);
}

我希望这会有所帮助!

【讨论】:

  • 谢谢,太棒了。但它不适用于仅发送地点 ID(不明白为什么!)希望我之前存储过地名。
  • 即使您没有存储地名,只需为query 参数使用一些随机值,它应该可以工作,因为地名更重要。例如https://www.google.com/maps/search/?api=1&query=qwerty&query_place_id=ChIJLU7jZClu5kcR4PcOOO6p3I0 将返回“埃菲尔铁塔”,虽然我发送了垃圾query=qwerty 参数。
  • 目前我刚刚在网络上(在浏览器上)尝试了https://www.google.com/maps/search/?api=1&query=qwerty&query‌​_place_id=ChIJLU7jZC‌​lu5kcR4PcOOO6p3I0,但返回了qwerty 相关值。似乎比地点 ID 更优先考虑查询(我很困惑)
  • 你是对的。这是不可靠的。您似乎需要地点名称和地点 ID 才能创建此 URL。
  • 请阅读地图操作部分 -> 此链接中的参数developers.google.com/maps/documentation/urls/…,您将了解有关这些参数的所有信息
【解决方案2】:

可能已经很晚了,但我能够使用除了 LatLog 之外我们应该拥有的信息来使它工作 使用纬度/经度坐标以及地点 ID 搜索 CenturyLink 字段会得到以下地图:

https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393&query_place_id=ChIJKxjxuaNqkFQR3CK6O1HNNqY

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 2015-12-10
  • 2016-12-06
  • 1970-01-01
  • 2014-04-16
  • 2014-07-10
相关资源
最近更新 更多