1

我正在寻找将新坐标和相关数据点添加到Google 地球中的<gx:Track>a上。<NetworkControlLink>我已经看到了很多关于如何创建<gx:Track>s<ExtendedData>以及如何<Update>对通用<Point>对象执行 s 的示例,但我还没有看到很多讨论这两者的例子。我能找到的最接近的是这个链接,它几乎一针见血: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>and向其中添加元素<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 而不是轨道并更新它(添加新的 Track 子项以扩展 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 回答