Android:从Google地图获取无效的KML文件

3

我正在尝试使用技术获取并展示来自maps.google.com的实时.kml文件。

Uri.parse("geo:0,0?q=http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=104538451667315338387.0004887d133ba2ab6eec9&ll=42.029611,-93.646109&spn=0.011396,0.022724&z=16l&output=kml");

Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapUri);

startActivity(Intent.createChooser(mapIntent, "lol"));

然而,在打开地图视图后,我收到了一条通知,上面写着“社区地图无法显示,因为它包含错误”。

只有当我直接从maps.google下载.kml文件时才会出现此错误。如果我将完全相同的链接复制到地址栏中,下载.kml文件并上传到其他地方,则可以正常工作。我希望能够直接从Google获取地图,这样我就可以进行更改,并立即反映给我的用户。

4个回答

2

我曾经遇到过同样的问题——如果你使用"&"作为参数分隔符,Google Maps for Android会截断URL,因此请改用"%26"代替:

Intent navigateToIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(
    "geo:0,0?q=http://m.konzoomer.com/kml?id=" + id +
    "%26latitudeE12=" + latitudeE12 + "%26longitudeE12=" + longitudeE12 +
    "%26radiusMeters=" + radiusMeters));

1
尝试在某个地方(例如通过System.out.println)显示Android下载的数据作为文本,可能包含Google错误消息描述。

我该怎么做?对此不太熟悉,而且在谷歌搜索“Android-downloaded”只会返回下载安卓的地方。 - John Moffitt
尝试使用附加了“&output=kml”的链接打开,结果下载管理器显示无法下载该文件,因为此设备(模拟器)不支持该内容。尝试不使用“&output=kml”打开链接,可以显示包含自定义内容的地图。 - John Moffitt

1

我一段时间前就解决了这个问题,想着更新一下,帮助其他人。我使用的解决方案是复制自定义地图的链接,添加 &output=kml,并使用链接缩短服务。由于某种原因,Android 不喜欢 Google Maps 给出的 URL,但对文件本身没有任何问题。

这远非一个优雅的解决方案,因为我依靠 Google Maps 和我的 URL 缩短器来确保将 KML 文件传递给用户手机。如果其中任何一个失败,我的系统将无法运行。

我愿意尝试其他选项,如果有更好的解决方法,我会改变我的答案。


0

如果您只使用普通的maps.google.com链接创建意图,而不使用"&output=kml",会发生什么?


尝试不使用&output=kml仍会出现相同的错误:“无法显示社区地图,因为它包含错误”。 - John Moffitt

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