我正在通過Google地球上的<NetworkControlLink>
將新座標和相關數據點添加到<gx:Track>
。我見過很多關於如何在<Point>
對象上創建<gx:Track>
的示例,<ExtendedData>
以及<Update>
如何創建對象,但我沒有看到很多討論這兩個對象的示例。我能找到的最接近的是這個環節,幾乎擊中了要害:http://groups.google.com/group/kml-support-advanced/browse_thread/thread/0d2cbefd087d576e?pli=1gx:擴展數據上的跟蹤和動態更新
不幸的是,這個環節沒有得到任何迴應,而原來的海報沒有提供他的orig_track.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>
現在我在一個文件test.kml
定義<Placemark>
這樣我認爲我的問題可能在於<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>
我希望這是不夠清楚明白!預先感謝您提供的任何指導。
感謝您的視頻鏈接;這是非常豐富的。 我評論說ExtendedData只是爲了讓更新工作起作用,但我仍然遇到了麻煩。我模仿了Sean Askay演示的例子。他的NetworkLink似乎只能從網絡上運行。例如,我爲軌道更新演示(Mt.肯尼亞航班)下拉了所有kml文件,將父級NetworkLink更改爲本地文件夾,並試圖在本地運行示例。它不會更新。在向本地文件提供鏈接路徑/ URL時是否存在一些細微差別? – nowls007
更新:Google地球將NetworkLinks指向本地文件視爲「安全違規」。它只在被引用的文件通過HTTP託管時纔有效。我建立了一個小型的本地HTTP服務器並使其工作。 下一步將獲得ExtendedData數組的工作和更新! – nowls007