忽略地标查看范围

Placemarks lookat range ignored

我正在使用这个 KML 文件(我们称之为 load.kml)

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
  <NetworkLink>
    <refreshVisibility>1</refreshVisibility>
    <flyToView>1</flyToView>
    <Link> <href>C:\Users\bridenstinek\workspace\AlertServlet\resources\outboundKML\test.kml</href>
      <refreshMode>onInterval</refreshMode>
    <refreshInterval>20</refreshInterval>
    </Link>
  </NetworkLink>
</Document>
</kml>

将 Google Earth 指向一个 kml 文件(我们称之为 test.kml)。当我定期加载 test.kml(不使用 load.kml)时,我设置的范围正常工作(缩放级别是我设置的方式)。

但是当使用 load.kml 加载 test.kml 时,范围不正确。地标放大得非常远,忽略了我在 test.kml 文件中设置的范围。

load.kml 内是否有覆盖范围的内容?

test.kml的例子:

<?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" xmlns:location="http://example.com">
<Document>
    <name>Example</name>

    <Style id="alertKMLStyle">
        <BalloonStyle>
        <text><![CDATA[<center>
  <b><font color="#CC0000" size="+8">$[name]</font></b>
  <br/></center><br/>
  <font size="+2">$[description]</font>
  <br/><br/>
  ]]></text>
        </BalloonStyle>
    </Style>

    <Placemark>
        <name>Example Name</name>
        <description>Example Description</description>
        <LookAt>
            <location:coordinates>800</location:coordinates>
            <longitude>2.294</longitude>
            <latitude>48.858</latitude>
            <altitude>0.5</altitude>
            <heading>12.23742976490019</heading>
            <tilt>0</tilt>
            <range>115718.4889366544</range>
            <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
            </LookAt>

            <styleUrl>#alertKMLStyle</styleUrl>
            <gx:balloonVisibility>1</gx:balloonVisibility>

            <Point>
                <gx:drawOrder>1</gx:drawOrder>
            <coordinates>2.294,48.858,0</coordinates>
            </Point>

    </Placemark>
</Document>
</kml>

直接加载 KML 与通过 NetworkLink 加载时存在一些未记录的差异。

当您通过 NetworLink 加载 KML 时,它会在最外层元素(即 test.kml 文件中的文档)中查找 LookAt 或 Camera。

您可以 1) copy/move <LookAt> 从地标到 test.kml 中的父文档元素或 2) 复制 <LookAt> 并插入 NetworkLink在 load.kml 中并使 flyToView=0.

如果目标 KML 具有时间戳,则通过网络链接的行为与直接加载它不同。见相关 issue.