我相信你可以通过在Kml中使用ID
属性和NetworkLinkControl
和Update
元素的组合来实现此目的。
MyFlyToRequest.kml文件包含加载数据文件的NetworkLink,其中包含数据,它的flyToView
元素设置为true。通知过的网络链接也有request
MyFlyToRequest.kml
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLink id="request">
<name>My Fly To Request</name>
<Link>
<href>http://www.yourserver.com/MyFlyTo.kmz</href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>2</refreshInterval>
</Link>
<flyToView>1</flyToView>
</NetworkLink>
</kml>
第二个文件,MyFlyTo.kmz的ID,是加载的一个。它有你当前的数据,但是,它也会有一个额外的NetworkLink加载一个新的第三个文件。
MyFlyTo.kmz - 编辑
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document id="data">
<visibility>1</visibility>
<NetworkLink>
<name>Update MyFlyToRequest</name>
<Link>
<href>http://www.yourserver.com/TurnOffFlyTo.kml</href>
</Link>
</NetworkLink>
<Placemark>
<name>This is flown to once (hopefully)</name>
<Point>
<coordinates>52,0,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
新的第三个文件是TurnOffFlyTo.kml
的关键设立的一部分,它包含了NetworkLinkControl
为目标的request
网络链接在第一MyFlyToRequest.kml文件。它只是设置flyToView
元素为0
TurnOffFlyTo.kml
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLinkControl>
<Update>
<targetHref>http://www.yourserver.com/MyFlyToRequest.kml#request</targetHref>
<Change>
<NetworkLink id="request">
<!-- turn off the flyto behaviour -->
<flyToView>0</flyToView>
</NetworkLink>
</Change>
</Update>
</NetworkLinkControl>
</kml>
最终文件TurnOnFlyTo.kml
只需再次retoggles的一个FlyTo行为。
TurnOnFlyTo.kml
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLinkControl>
<Update>
<targetHref>http://www.yourserver.com/MyFlyToRequest.kml#request</targetHref>
<Change>
<NetworkLink id="request">
<!-- turn off the flyto behaviour -->
<flyToView>1</flyToView>
</NetworkLink>
</Change>
</Update>
</NetworkLinkControl>
</kml>
的逻辑如下。
- MyFlyToRequest.kml负载MyFlyTo.kml
flyto
被启用,因此所述视图移动第一第一标,等等,在MyFlyTo.kml
- 链路在MyFlyTo.kml负载TurnOffFlyTo.kml。
Update
in TurnOffFlyTo。kml三个在MyFlyToRequest.kml中禁用flyto
。
- 文件之一,刷新,加载文件中的两个...
如果需要重新启用一个FlyTo,您只需将装载文件四强。如果MyFlyTo.kmz中的数据是由您生成的,那么在TurnOffFlyTo.kml被调用的地方加载TurnOnFlyTo.kml就是一个简单的例子。
所有这一切说,这是没有测试,因此可能无法正常工作,虽然原则上我不明白为什么它不会。
如果听起来像你可能尝试的东西是一些应该帮助的资源。
NetworkLinkControl中参考
http://code.google.com/apis/kml/documentation/kmlreference.html#networklinkcontrol
使用更新
http://code.google.com/apis/kml/documentation/updates.html
这是一个很酷的想法。我没有详细介绍OP的一点是,地标数据经常发生变化。我想我可能不需要TurnOnFlyTo.kml,每次我只是重新加载前3个文件,但我不确定GE将执行的执行顺序。 –
另外,MyFlyTo.kmz似乎不是有效的kml文档。我不认为你可以有一个和节点。 –
有一个网络链接和文件是好的,有可能是一个错字,因为我只是写在答案中。尝试将地点标记和链接都放在文档元素中。 – Fraser