是否可以通过 PlaceId 打开 Google 地图?

Is It Possible To Open Google Maps By PlaceId?

我有一个从 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);
}

有办法吗?

当用户从地方 API 输入例如 "Eiffel Tower" 时,我已经有了纬度和经度。我正在存储这些值以供下次使用(假设我们正在从本地数据库中列出一些访问过的地方,并且用户单击其中一个并且应用程序导航到 Google 地图)

我有一些顾虑

  1. 如果我使用经纬度来表示地点而不是地点id 在 Google 地图上,如果 "Cafe XYZ" 移动到另一条街道会发生什么 ?

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

所以这些担忧让我想到了一种方法,只需发送地点 ID Google 地图(如发送坐标)

的确,有一种方法可以使用地点 ID 打开 Google 地图应用。为此,您必须使用 2017 年 5 月推出的 Google Maps URLs。根据 Google 地图 URLs 的文档,您可以构建以下内容URL 用于 "Eiffel Tower"(地点 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);
}

希望对您有所帮助!

这可能已经太晚了,但我能够使用除了 LatLog 之外我们应该拥有的信息让它工作 使用 latitude/longitude 坐标和地点 ID 搜索 CenturyLink Field,得到以下地图:

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