能否通过PlaceId打开Google地图?

8

我有一个从谷歌地点API获取的地点ID,目的是通过类似下面的方法使用地点ID打开谷歌地图应用

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 Maps)。

我有一些问题:

  1. 如果我在Google Maps上使用纬度-经度来表示位置,而不是地点ID,如果“Cafe XYZ”移动到另一条街道,会发生什么情况?

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

因此,这些问题促使我考虑一种新的方法,只需发送地点ID到Google Maps(就像发送坐标一样)。


GooglePlacesAPI还提供了与placeid一起的纬度和经度。因此,使用由GooglePlacesAPI提供的lat-lng打开地图,而不是placeid。这很简单。 - Aditya
@Heisen-Berg 感谢您的评论。我刚刚修改了问题,以更清晰地解释“什么”和“为什么”。它还包括对您评论的回应。 - blackkara
2个回答

15

确实可以使用地点ID打开Google地图应用程序。为此,您必须使用于2017年5月推出的Google Maps网址。按照Google Maps网址文档,您可以构建以下"Eiffel Tower"(地点ID ChIJLU7jZClu5kcR4PcOOO6p3I0)的URL:

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无法起作用(不明白为什么!)。希望之前已经存储了地点名称。 - blackkara
1
即使您没有存储地名,只需为“query”参数使用一些随机值,它也应该可以正常工作,因为地点ID更重要。例如,https://www.google.com/maps/search/?api=1&query=qwerty&query_place_id=ChIJLU7jZClu5kcR4PcOOO6p3I0将返回“埃菲尔铁塔”,尽管我发送的是无用的query=qwerty参数。 - xomena
目前我只是在网页上尝试了 https://www.google.com/maps/search/?api=1&query=qwerty&query_place_id=ChIJLU7jZC‌​lu5kcR4PcOOO6p3I0,但返回的是与 qwerty 相关的值。看起来查询比地点 ID 更优先(我感到困惑)。 - blackkara
你是对的。这不可靠。看起来你需要地点名称和地点ID才能创建此URL。 - xomena
请阅读此链接中的“Map actions -> parameters”部分:https://developers.google.com/maps/documentation/urls/guide#search-action,您将了解有关这些参数的所有信息。 - Mkr

6

谢谢您的信息。虽然没有什么特别的,但它仍然可以与任何查询一起使用,例如11111 https://www.google.com/maps/search/?api=1&query=11111&query_place_id=ChIJKxjxuaNqkFQR3CK6O1HNNqY - wwwrrrxxx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接