- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我不知道您是否看到了惊人的 Mytrack 更新,但它允许将 kml 文件发送到 Google 地球应用程序并在 Google 应用程序中显示它(当然,如果安装的话)。
源代码在那里:http://code.google.com/p/mytracks/source/browse/
但我找不到实现这样事情的方法。
else if (playTrack) {
Intent intent = new Intent()
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, KmlTrackWriter.TOUR_FEATURE_ID)
.setClassName(GOOGLE_EARTH_PACKAGE, GOOGLE_EARTH_CLASS)
.setDataAndType(Uri.fromFile(new File(savedPath)), GOOGLE_EARTH_KML_MIME_TYPE);
startActivity(intent);
硬编码方式给出了这段代码:
Intent intent = new Intent()
.addFlags(
Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("com.google.earth.EXTRA.tour_feature_id","tour")
.setClassName("com.google.earth", "com.google.earth.EarthActivity")
.setDataAndType(Uri.fromFile(new File("/sdcard/test.kml")),
"application/vnd.google-earth.kml+xml");
startActivity(intent);
但是上面的代码只是显示了与这段代码结果相同的路径:
Intent mapIntent = new Intent(Intent.ACTION_VIEW);
Uri uri1 = Uri.parse("file:///sdcard/test.kml");
mapIntent.setData(uri1);
startActivity(Intent.createChooser(mapIntent, "Sample"));
我的目标是通过“播放”按钮获得相同的结果。
最佳答案
您需要指定 KML 文件的 URI 和 KML MIME 类型,如下所示。
File file = new File(Environment.getExternalStorageDirectory(), "sample_tour.kml");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.google-earth.kml+xml");
intent.putExtra("com.google.earth.EXTRA.tour_feature_id", "my_track");
startActivity(intent);
这目前没有记录,但我们正在寻求解决这个问题。
一定要分别使用 Intent::setDataAndType
而不是 Intent::setData
和 Intent::setType
(它们各自覆盖另一个).
“my_track”是对您的地标 ID 的引用。 Intent 额外自动开始游览。
<Placemark id="my_track">
<gx:Track>
...
</gx:Track>
</Placemark>
关于android - 我如何将 kml 文件发送到 Google 地球,就像 MyTracks(开源)一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11483657/
我是一名优秀的程序员,十分优秀!