首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NetworkLinkControl和Java API for KML (JAK)正确更新Google Earth KML?

如何使用NetworkLinkControl和Java API for KML (JAK)正确更新Google Earth KML?
EN

Stack Overflow用户
提问于 2011-08-31 04:43:14
回答 3查看 4.5K关注 0票数 3

我正在构建一个应用程序,将数据提供给一个独立的Google Earth客户端。我想发送一组初始数据,然后在服务器上发生变化时使用<NetworkLinkControl><Update><cookie>标记动态更新它。我正在使用Java API for KML (JAK)库生成KML。不幸的是,虽然我可以确认GE正在刷新我的NetworkLink并下载我正在发送的更新,但我的更新都没有显示在GE中。经过大量阅读,似乎更新的<targetHref>可能是问题所在,但我99.9%确定我发送的是相同的字符串。

让我感到困惑的部分原因是,我在是否需要将<cookie>元素的值附加到<targetHref>的问题上看到了相互矛盾的信息。当我从静态服务器URL提供手写的测试KML文件时,我确实看到了一个早期的原型更新,所以我怀疑它不是。实际上,这就是目前令人沮丧的地方:我已经在我自己的机器上看到了更新工作,但现在无法使用看起来有效和正确的KML使其工作。

当前的设置如下所示(为清晰起见,去掉了无关的XML名称空间;"$CLIENT_ID“是一个类似GUID的字符串):

http://server/kml/${CLIENT_ID}提供的根KML文件:

代码语言:javascript
复制
<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>

http://server/kmlupdates/${CLIENT_ID}提供的初始内容KML:

代码语言:javascript
复制
<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>

http://server/kmlupdates/${CLIENT_ID}提供的更新KML:

代码语言:javascript
复制
<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>

如果有人对我在这里遗漏的地方有任何建议,我将非常感谢。谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-31 23:21:49

我最初的问题版本遗漏了两个事实,这两个事实后来证明是相关的: 1)我使用Java API for KML来生成它;2) <kml>中的XML名称空间。在读了无数遍this Google KML Group post之后,我终于明白了这一点。

问题出在最后一个XML名称空间"xmlns:xal“。出于某些原因,从KML中删除它将允许<Update>标记实际更改Google Earth中的项目。JAK不允许您更改名称空间,但您可以手动将其从编组字符串中剥离。

非常奇怪,但至少我找到了一个解决方案。

票数 4
EN

Stack Overflow用户

发布于 2020-01-14 20:14:55

根据https://developers.google.com/kml/documentation/kmlreference

代码语言:javascript
复制
<xal:AddressDetails> is used by KML for geocoding in Google Maps only.
Currently, Google Earth does not use this element; use <address> instead.
票数 0
EN

Stack Overflow用户

发布于 2015-10-07 02:37:35

我有一些示例使用不同的方法在这里做一些其他可能与您相关的事情(因为您的目的是“发送一组初始数据,然后使用标签动态更新它”):

https://sites.google.com/site/canadadennischen888/home/kml/auto-refresh-3d-tracking

方法是所有的更改都来自服务器Restful服务。希望能有所帮助。详细信息如下:

如何进行动态自动刷新3D追踪:

  1. 准备一个RestFul服务来从DB生成KML文件(KML示例在上面的链接中)
  2. 我的其他jsp代码将生成一个KMZ文件,其中有一个指向我的Restful服务的链接。KMZ文件有onInterval (如在底部)
  3. Jsp网页允许用户下载KMZ文件。
  4. 当谷歌地球打开KMZ文件时,谷歌地球会自动刷新,从Restful service
  5. Everytime中获取新数据刷新,服务器会将最新更新的KML数据与新数据一起发送到GE。

KMZ示例:

代码语言:javascript
复制
    <?xml version="1.0" encoding="UTF-8"?>
     <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" 
     xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
     <NetworkLink> 
     <name>Dennis_Chen_Canada@Hotmail.com</name> 
     <open>1</open> 
     <Link> 
     <href>http://localhost:9080/google-earth-project/rest/kml/10001/20002</href> 
     <refreshMode>onInterval</refreshMode> 
     </Link>
     </NetworkLink>
     </kml>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7249565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档