我正在使用这个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>
答案 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。