6

Timestamp要素を使用して KML 目印を作成することを考えています。これ自体はかなり簡単に実行できますが、KML が最初にロードされたときに、Google Earth が短い時間帯しか表示しない動作が好きではありません。デフォルトで全期間 (したがってすべての目印) を表示したいと思います。

これを行う方法はありますか?Google Earth の設定も、KML のドキュメントにも何もありません。

私が検討している代替案は、基本的に各目印を複製し、タイムスタンプ付きのセットとタイムスタンプなしのセットを別々のフォルダーに持つことです。フォルダは、ラジオボタン選択機能を使用します。KML には数千の目印が含まれる可能性があり、ノードを複製するのは無駄に思えるため、可能であればこれを避けたいと思います。

私が話している動作を確認したい場合は、目印付きの KML を含むこのソース例を次に示します。

更新:含まれている KML 目印の全スパンにデフォルト設定されていないタイム スライダーで見られる動作は、ネットワーク リンクを介してローカル ファイルにファイルが読み込まれていることが原因のようです。この場合、タイム スライダーの動作を制御する方法がわかりません。タイム スライダーを正しく設定する「更新時にフライ トゥ ビュー」をリンクに実行させることができますが、4 秒ごとに更新しているため、カメラを緯度/経度に移動したくありません。

4

1 に答える 1

7

デフォルトでは、Google Earth は KML の全時間を表示します。ただし、一般的な状況は、複数の KML ファイルが開いている/表示されているときに、Google Earth がデフォルトですべてのKML フィーチャの最も古い時間と最も新しい時間の全時間範囲を表示する場合です。また、 NetworkLinks経由で KML をロードしても、Google Earth で直接開く場合と異なり、完全な時間範囲は表示されません。

説明するには、最初に保存した場所のチェックを外して、他の KML with times を無効にしてから、この KML ファイルをロードします。1787 年から 1959 年までの全範囲を示すタイムラインに気付くでしょう。https://developers.google.com/kml/documentation/us_states.kml

時間範囲を事前に定義したい場合は、時間ビューを制限するCameraまたはLookAtを明示的に追加できます。たとえば、ビューを最初の 100 年に制限するには<gx:TimeSpan>、年の範囲を持つ要素を KML のルートレベル要素に追加できます。lat/lon/range 要素を含めることを忘れないでください。そうしないと、ビューはデフォルトで lat=0、lon=0、range=0 になります。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<Document>
    ....
    <LookAt>
            <gx:TimeSpan>
                    <begin>1787</begin>
                    <end>1887</end>
            </gx:TimeSpan>
            <longitude>-95.71</longitude>
            <latitude>37.09</latitude>
            <range>4119625</range>
            ...
    </LookAt>
    ...
</Document>
</kml>

目印またはフォルダを右クリックし、Google Earth で [スナップショット ビュー] を選択すると、タイマー スライダーが表示され、時間範囲が保存されたビューに取り込まれます。

そのため、時間で目印を複製することなく、時間範囲によって制約されたビューでのみ定義された目印をいくつか作成することで、必要なことを行うことができます。これらの特別な目印のそれぞれをクリックすると、表示したい時間範囲にタイム スライダーが変わります。

Networklinksを介して取得された時間を持つ KML フィーチャは異なる動作をし、時間範囲の一部のみがタイム スライダーで事前に選択されます。KML を直接ロードするのと同じように動作させるには、flyToViewを NetworkLink に追加する必要があります。

<NetworkLink>
  <flyToView>1</flyToView>
  <Link>
    <href>...</href>
  </Link>
</NetworkLink>

親 KML ファイルに時間ベースの機能を持つ複数の NetworkLink を含める場合のベスト プラクティスとして、その<TimeSpan>機能のコレクションの全時間範囲を含む要素を NetworkLinks に追加します。そうしないと、Google Earth が起動時にファイル全体を自動的に読み込みます。 .

<NetworkLink>
  <TimeSpan>
    <begin>1787</begin>
    <end>1887</end>
  </TimeSpan>
  <flyToView>1</flyToView>
  <Link>
    <href>...</href>
  </Link>
</NetworkLink>

参照:
https://developers.google.com/kml/documentation/kmlreference#timespan
https://developers.google.com/kml/documentation/kmlreference#gxtimespan

于 2012-09-25T14:03:30.477 に答える