Android Google Maps URL 查询 - 离线放置标记

Posted

技术标签:

【中文标题】Android Google Maps URL 查询 - 离线放置标记【英文标题】:Android Google Maps URL query - placing marker while offline 【发布时间】:2020-09-13 01:42:49 【问题描述】:

我正在使用 Google 的 published format for map URLs 从我的 android 应用启动以下意图:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com/maps/search/?api=1&query=51.196327,-7.325649")));

我要做的就是在地图上查询的位置放置一个标记。当我在线时它工作正常,但如果我离线,我得到的只是 无法连接 消息。即使我关闭消息,标记也不会出现。即使我下载了我正在标记的区域的离线地图,也会发生这种情况。

离线标记是我的应用程序的重要组成部分,所以我很想知道是否有办法通过 URL 放置图钉,即使下面的地图无法加载?如果有办法只放置一个标记并绕过任何本地搜索,那将是理想的。目前,地图坚持搜索附近不需要的东西。

【问题讨论】:

【参考方案1】:

实际上可以使用离线移动设备在谷歌地图中放置和显示标记。

您可以使用它的custom url scheme:

Uri gmmIntentUri = Uri.parse("geo:51.196327,-7.325649?q=51.196327,-7.325649");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) 
    startActivity(mapIntent);

geo: 之后设置中心坐标,然后q 参数将执行搜索(就像您所做的那样),如果您将坐标设置为搜索参数,它将在那里显示一个标记。

kotlin 中的相同示例:

val gmmIntentUri = Uri.parse("geo:51.196327,-7.325649?q=51.196327,-7.325649")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
if (mapIntent.resolveActivity(packageManager) != null) 
    startActivity(mapIntent)

您可以提供 else 条件来做某事,以防该设备上未安装谷歌地图应用。

【讨论】:

我刚刚尝试了geo: URL,它有效 - 谢谢!在一些不同的例子中也看到了它,所以它看起来是一个不错的方法。

以上是关于Android Google Maps URL 查询 - 离线放置标记的主要内容,如果未能解决你的问题,请参考以下文章

Android - 通过网页 url 启动谷歌地图

Android Google Maps v2 从资产中的图像加载 OverlayTile

将来自 url 的图像添加到自定义 InfoWindow google maps v2

无法通过 gradle 导入 com.google.maps.android:android-maps-utils

如何从 Android 上的 Google 地图共享 url 获取坐标

在 android 中调用 httpget 时出错(检索 google 方向)