有人可以告诉我是否有办法将kml文件加载到Android中的谷歌地图。
感谢
答案 0 :(得分:8)
请在此处找到一个代码示例,它可以从google获取kml数据并将其绘制到地图上:
答案 1 :(得分:3)
几个月前,我一直在寻找类似的功能,但找不到从SDCard加载文件的方法 - 甚至使用内容提供商。 我从那时起就没看过。
然而,我发现了一种方法,因为我已经在与网络服务器通信
,因此证明是有用的getting maps to accept a dynamically generated KML file?
这允许我将KML从我的应用程序发送到服务器(通信已经到位),服务器存储KML,分配一个随机字符串,然后将其返回给应用程序,然后应用程序将链接传递给服务器风格:
final Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=http://website.com/kml_gen.php?id=1kj312"));
startActivity(myIntent);
服务器返回了要使用的地图应用的KML列表。
以下评论后的更新:
final Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=http://code.google.com/apis/kml/documentation/KML_Samples.kml"));
startActivity(myIntent);
尝试运行上面的代码 - 您将看到运行它时,谷歌地图应用程序已打开,它将请求kml文件,在这种情况下是来自谷歌的示例文件。这是一个带叠加层的地图,但它现在是谷歌地图应用程序,不再在您的应用程序中运行。
对于此解决方案,您需要将KML文件存储在某个Web服务器上 - 这有一个小问题,即用户需要数据连接(无论如何地图都需要 - 但是如果kml文件很大并且连接慢可能有延迟)。
你提到你有一个服务器产生一些动态数据和一些静态的东西。如果静态内容对每个人都相同,并且每次服务器生成一些数据时,我都会想让Web服务器生成一个格式良好的KML文档,包括两组数据 - 谷歌地图应用程序,据我所知只会从网络服务器加载一个KML文件。
另一个我用过的解决方案已在上面发布了 - 如果你手机上有静态数据(我会带有数据的数据库),创建一个绘制项目的覆盖图,并请求来自服务器的动态结果,将其添加到自定义叠加层。此选项意味着您必须编写任何您想要的额外功能 - 即在地图中搜索位置,卫星视图..... 确保在单独的线程而不是UI线程中执行操作,特别是在构建大型叠加层时,或者您可能会获得强制关闭/等待对话框。
答案 2 :(得分:0)
我在地图上使用了GPX文件(Android 1.5),但没有任何内容可以加载KML或GPX。如果没有在较新版本的Android中添加,我猜你必须自己阅读该文件。这就是我10个月前所做的......