我正在通过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