1

<gx:Track>GoogleEarthのオーバーに新しい座標と関連するデータポイントを追加したいと考えてい<NetworkControlLink>ます。<gx:Track>を使用してsを作成する方法と、ジェネリックオブジェクトでsを実行する方法について多くの例を見てきましたが、両方について説明している例はあまり見ていませ<ExtendedData>ん。私が見つけた最も近いものは、このリンクです。これは、ほとんど頭に釘を打ちます:http: //groups.google.com/group/kml-support-advanced/browse_thread/thread/0d2cbefd087d576e? pli= 1<Update><Point>

残念ながら、このリンクには応答がなく、元の投稿者は彼のファイルを提供していませんでしたorig_track.kml。そうでなければ、彼が解決策を見つけたと主張して以来、私は彼が行っていたことをリバースエンジニアリングできたでしょう。

今、私は<Placemark>ファイルでこのようなものを定義していますtest.kml

<Placemark>
    <name>Target</name>
    <description>...</description>
    <gx:Track id="orig_track">
        <when>2012-05-29T22:45:00Z</when>
        <when>2012-05-29T22:45:10Z</when>
        <gx:coord>-84.396863 33.774566 285</gx:coord>
        <gx:coord>-84.396917 33.774474 285</gx:coord>
        <ExtendedData>
            <SchemaData schemaUrl="#schemaId" id="testID">
                <gx:SimpleArrayData name="sig_strength">
                    <gx:value>60</gx:value>
                    <gx:value>65</gx:value>
                </gx:SimpleArrayData>
                <gx:SimpleArrayData name="gps_lock">
                    <gx:value>true</gx:value>
                    <gx:value>true</gx:value>
                </gx:SimpleArrayData>
            </SchemaData>
        </ExtendedData>
    </gx:Track>
</Placemark>

<NetworkLinkControl>次のようなオブジェクトを使用して更新しようとしています。

<NetworkLinkControl>
    <Update>
        <targetHref>test.kml<targetHref>
        <Create>
            <gx:Track targetId="orig_track_10003">
                <when>2012-05-29T22:45:20Z</when>
                <when>2012-05-29T22:45:30Z</when>
                <when>2012-05-29T22:45:40Z</when>
                <when>2012-05-29T22:45:50Z</when>
                <gx:coord>-84.396992 33.774443 285</gx:coord>
                <gx:coord>-84.397078 33.774421 285</gx:coord>
                <gx:coord>-84.397188 33.774363 286</gx:coord>
                <gx:coord>-84.397316 33.774298 287</gx:coord>
            </gx:Track>
            <SchemaData schemaUrl="test.kml#schemaId" targetId="testID">
                <gx:SimpleArrayData>
                    <gx:value>60</gx:value>
                    <gx:value>60</gx:value>
                    <gx:value>65</gx:value>
                    <gx:value>65</gx:value>
                </gx:SimpleArrayData>
                <gx:SimpleArrayData>
                    <gx:value>true</gx:value>
                    <gx:value>true</gx:value>
                    <gx:value>true</gx:value>
                    <gx:value>true</gx:value>
                </gx:SimpleArrayData>
            </SchemaData>
        </Create>
    </Update>
</NetworkLinkControl>

私の問題は、のインスタンスがどのように<SchemaData>参照されるかにあるのではないかと思います。私が間違っていない場合<Schema>は、配列に含めるフィールドを定義し、<Placemark>上記を定義するときに、。を使用して配列をインスタンス化します<SchemaData><Update>作成した配列のインスタンスを取得し、とを使用してそれに要素を追加する方法がわかりません<Create>。私<Schema>はこのように見えます:

<Schema name="schema" id="schemaId">
    <gx:SimpleArrayField name="sig_strength" type="int">
        <displayName>Signal Strength</displayName>
    </gx:SimpleArrayField>
    <gx:SimpleArrayField name="gps_lock" type="bool">
        <displayName>GPS Lock Status</displayName>
    </gx:SimpleArrayField>
</Schema>

これが理解できるほど明確であったことを願っています!あなたが提供できるかもしれないどんなガイダンスにも前もって感謝します。

4

1 に答える 1

0

トラックの代わりに MultiTrack を使用し、それを更新することをお勧めします (新しいトラックの子を追加して GPS パスを拡張します)。

ただし、ExtendedData は別の問題であり、これを更新することはテストしていません。期待どおりに動作しない場合は、何が起こったのか、該当する場合は更新されたコードについてコメントを残してください。または、ExtendedData を削除してから再作成することもできます。

Sean Askay によるhttp://www.unchartable.com/2011/05/google-io-high-performance-kml-for.htmlのブログ投稿にも興味があるかもしれません(約 17 分の関連動画、投稿には、動作するトラック更新の例を含むいくつかのデモ コードへのリンクがあります)。

于 2012-05-31T21:59:11.140 に答える