我希望在Google地球的<gx:Track>
上向<NetworkControlLink>
添加新坐标和相关数据点。我已经看到很多关于如何使用<gx:Track>
创建<ExtendedData>
以及如何在通用<Update>
对象上执行<Point>
的示例,但我没有看到很多讨论都。我能找到的最接近的东西是这个链接,几乎击中了头上的钉子:http://groups.google.com/group/kml-support-advanced/browse_thread/thread/0d2cbefd087d576e?pli=1
不幸的是,这个链接没有得到任何回复,原始海报没有提供他的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>
我希望这清楚到可以理解!提前感谢您提供的任何指导。
答案 0 :(得分:0)
我建议使用MultiTrack而不是轨道并更新(添加新的Track子项以扩展GPS路径)。
但是,ExtendedData是另一回事,我还没有测试过更新。如果它不能按预期工作,请在此处留下评论,如果适用,请在发生的事情和更新后的代码中留言。或者,您可以删除ExtendedData,然后重新创建它。
您可能也会对http://www.unchartable.com/2011/05/google-io-high-performance-kml-for.html的Sean Askay的博客文章感兴趣(相关视频大约需要17分钟,该帖子中包含一些带有工作曲目更新示例的演示代码的链接)。< / p>