我正在構建將數據提供給獨立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>
如果任何人有什麼我失蹤這裏任何建議,我會非常感激。謝謝!
唯一紐帶,答案是沒有用的;你能否在你的答案中包括一些代碼,以及你認爲它的相關性? –
已經更新了更多細節... –