6

Mytrackのすばらしいアップデートを見たかどうかはわかりませんが、kmlファイルをGoogle Earthアプリに送信して、Googleアプリ内に表示することができます(もちろん、インストールされている場合)。

ここに画像の説明を入力してください

ソースコードは次のとおりです:http ://code.google.com/p/mytracks/source/browse/

しかし、私はそのようなことを達成する方法を見つけることができません。

私はここで何かを見つけたと思います:http ://code.google.com/r/jshih-mytracks3/source/browse/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java?spec = svn5178eb75934b7f0c4c23ec26b7d79a0787de18b8&r = 5178eb75934b7f0c4c23ec26b7d79a0787de18b8

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")); 

私の目的は、「再生」ボタンを使用して同じ結果を取得することです。

4

4 に答える 4

6

次のように、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::setDataAndTypeand ではなくIntent::setDataand を別々に使用してくださいIntent::setType(それぞれが他をオーバーライドします)。

「my_track」は目印 ID への参照です。インテント エクストラは、ツアーを自動的に開始します。

<Placemark id="my_track">
 <gx:Track>
  ...
 </gx:Track>
</Placemark>
于 2012-08-14T00:03:22.320 に答える
3

ディスクからのkmlの代わりにリンクを使用することは可能ですか?このようなもの:

intent.setDataAndType(Uri.parse("http://sites.cyclingthealps.com/other/downloads/doc.kml"), "application/vnd.google-earth.kml+xml");

ありがとう

于 2012-12-05T20:46:35.660 に答える
0
File KML = new File("/sdcard/doc.kml");
Intent i = getPackageManager().getLaunchIntentForPackage("com.google.earth");
i.setDataAndType(Uri.fromFile(KML), "xml");
startActivity(i);

ソース: http://enladodelbien.blogspot.com/2015/06/kmlkmz-to-google-earth.html

于 2015-07-03T04:12:26.217 に答える