我正在构建将数据提供给独立Google地球客户端的应用程序。我想发送一组初始数据,然后使用<NetworkLinkControl>
和<Update><cookie>
标签动态更新它,以便在服务器上进行更改。我使用KML(JAK)库的Java API生成KML。不幸的是,虽然我可以证实GE正在刷新我的NetworkLink并拉下我发送的更新,但我的更新没有在GE出现。经过大量阅读,似乎可能是更新的<targetHref>
可能是问题,但我99.9%确定我通过相同的字符串发送。如何使用NetworkLinkControl和KML(JAK)的Java API正确更新Google地球KML?
让我困惑的部分是我看到冲突信息是否需要将<cookie>
元素的值附加到<targetHref>
。实际上,当我从静态服务器URL提供手写测试KML文件时,实际上看到了一个较早的原型更新,因此我怀疑它不是。实际上,目前令人沮丧的是:我已经看到了在自己的机器上更新工作,但现在无法使用看起来像有效且正确的KML。
目前的设置是这样的(剥离为清楚起见外来XML命名空间; “$ CLIENT_ID” 是一个GUID类的字符串):
<kml xmlns="http://www.opengis.net/kml/2.2"
xmlns:gx="http://www.google.com/kml/ext/2.2"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:xal="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><NetworkLink>
<Link>
<href>http://server/kmlupdates/${CLIENT_ID}</href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>1.0</refreshInterval>
<viewRefreshTime>0.0</viewRefreshTime>
<viewBoundScale>0.0</viewBoundScale>
</Link>
</NetworkLink></kml>
:
根KML文件从http://server/kml/ $ {CLIENT_ID}服务
初始内容KML从http://server/kmlupdates/ $ {} CLIENT_ID服务:
<kml><NetworkLinkControl>
<minRefreshPeriod>0.0</minRefreshPeriod>
<maxSessionLength>-1.0</maxSessionLength>
<cookie>cookie=0|kmlRequestType=updates|projectID=6|lastUpdateSeenIndex=-1</cookie>
</NetworkLinkControl>
<Document id="myProject">
<name>My ProjectProject</name>
<Placemark id="pm1"><name>point1</name>
<Point><coordinates>-117.0,35.0</coordinates></Point>
</Placemark>
</Document></kml>
后来更新KML从http://server/kmlupdates/ $服{} CLIENT_ID:
<kml><NetworkLinkControl>
<minRefreshPeriod>0.0</minRefreshPeriod>
<maxSessionLength>-1.0</maxSessionLength>
<cookie>cookie=0|kmlRequestType=updates|projectID=6|lastUpdateSeenIndex=0</cookie>
<Update>
<targetHref>http://server/kmlupdates/${CLIENT_ID}</targetHref>
<Change>
<Placemark targetId="pm1">
<name>Name changed by Update Change</name>
</Placemark>
</Change>
</Update>
</NetworkLinkControl></kml>
如果任何人有什么我失踪这里任何建议,我会非常感激。谢谢!
唯一纽带,答案是没有用的;你能否在你的答案中包括一些代码,以及你认为它的相关性? –
已经更新了更多细节... –