我正在开发一个应用程序,该应用程序使用KML文件启动Google地球,该文件通过<NetworkLink>
链接到其他本地文件,该文件执行时间间隔刷新。我正在尝试定义一个KML文件,该文件将地图(飞到)特定位置居中。
Network Link有一个标记,可以飞到文件中的第一个地标或FlyTo。但是,这将在文件刷新时执行fly,在我的情况下,就是Time Interval到期时。有没有什么方法可以让fly-to命令只在链接的网络文件发生变化时执行,而不是每次都执行?有没有办法让Fly To只处理一次,直到链接文件以某种方式改变?我的NetworkLink文件定义如下:
<NetworkLink>
<name>My Fly To Request</name>
<Link>
<href>MyFlyTo.kmz</href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>2</refreshInterval>
</Link>
</NetworkLink>
应用程序将经常更新特定地标,以便在用户请求时居中。它不是一个需要集中的静态地标,而是一个经常变化的地标。
答案 0 :(得分:2)
我相信您可以通过结合使用ID
属性以及Kml中的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>
最终文件TurnOnFlyTo.kml
只是再次回复了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>
逻辑如下。
flyto
已启用,因此视图会移动MyFlyTo.kml中的第一个第一个地标等Update
三次禁用MyFlyToRequest.kml中的flyto
。如果您需要重新启用flyto,只需加载File 4即可。如果您正在生成MyFlyTo.kmz中的数据,那么在调用TurnOffFlyTo.kml的地方加载TurnOnFlyTo.kml就是一个简单的例子。
所有这一切都说,这没有经过测试,因此可能无法正常工作,虽然原则上我不明白为什么它不会。
如果听起来像你可能会尝试的东西,那么一些资源应该有所帮助。
NetworkLinkControl参考
http://code.google.com/apis/kml/documentation/kmlreference.html#networklinkcontrol
使用更新