是否可以通过 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 地图)
我有一些顾虑
如果我使用经纬度来表示地点而不是地点id
在 Google 地图上,如果 "Cafe XYZ" 移动到另一条街道会发生什么
?
如果我每次都使用地点 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,得到以下地图:
我有一个从 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 地图)
我有一些顾虑
如果我使用经纬度来表示地点而不是地点id 在 Google 地图上,如果 "Cafe XYZ" 移动到另一条街道会发生什么 ?
如果我每次都使用地点 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,得到以下地图: