可以通过PlaceId打开谷歌地图吗?

时间:2018-01-27 10:31:02

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

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

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的“艾菲尔铁塔”。我将这些值存储在下一个用法中(假设我们列出了一些来自本地数据库的访问位置,用户点击其中一个并且应用导航到Google地图)

我有一些顾虑

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

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

  3. 因此,这些问题使我想到了一种只发送地图ID谷歌地图的方式(如发送坐标)

2 个答案:

答案 0 :(得分:8)

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

我希望这有帮助!

答案 1 :(得分:1)

这可能已经太晚了,但我能够使其与LatLog之外的其他信息一起使用 使用纬度/经度坐标以及地点ID搜索CenturyLink字段,结果显示在以下地图中:

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

enter image description here