地标范围范围被忽略

时间:2015-01-05 21:37:40

标签: kml google-earth

我正在使用这个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地球指向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>

1 个答案:

答案 0 :(得分:1)

当您直接加载KML而不是通过NetworkLink时,存在一些未记录的差异。

当您通过NetworLink加载KML时,它会在最外面的元素中查找LookAt或Camera,它是test.kml文件中的Document。

您可以1)将地标中的<LookAt>复制/移动到test.kml中的父文档元素或2)复制<LookAt>并插入load.kml中的NetworkLink并制作flyToView = 0。

如果目标KML有时间戳,那么通过Networklinks的行为是不同的,然后直接加载它。请参阅相关的issue