我相信您可以通过在 Kml 中结合使用 ID 属性和 NetworkLinkControl 和 Update 元素来实现这一点。
MyFlyToRequest.kml 文件包含加载数据文件的 NetworkLink,其中包含您的数据,它的 flyToView 元素设置为 true。还要注意网络链接的 id 也是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 是加载的文件。它拥有您当前的数据。但是,它还会有一个额外的 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,它针对第一个MyFlyToRequest.kml 文件中的request NetworkLink。它只是将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>
最终文件 @987654336@ 再次简单地重新切换 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。
- TurnOffFlyTo.kml 中的
Update 三个禁用 MyFlyToRequest.kml 中的 flyto。
- 文件一、刷新、加载文件二...
如果您需要重新启用 flyto,您只需加载文件 4。如果 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