在KML代码中延迟气球组件

时间:2012-11-28 15:58:15

标签: kml balloon

我刚开始学习如何操作KML文件。这是一个我不知道如何克服的问题....我创建了一个多边形并添加了一个描述以显示为气球,但只要Google Earth开始工作就可以看到多边形。我想要的是从多边形出现的特定距离显示气球(例如在LookAt元素的范围距离内)。 有谁知道如何管理? 我的代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" mlns: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">
    <LookAt>
    <longitude>17.99514610290434</longitude>
    <latitude>59.36293893395309</latitude>
    <altitude>0</altitude>
    <range>597.51212259908</range>
    <tilt>52.34415598649959</tilt>
    <heading>105.3974737169693</heading>

</LookAt>
<Placemark>
    <name>Stadium</name>

    <description>
        <![CDATA[
        this is <b><i>Råsunda soccer stadium</i></b>
        ]]>
    </description>
        <gx:balloonVisibility>1</gx:balloonVisibility>


        <styleUrl>#msn_ylw-pushpin</styleUrl>
    <Polygon>
        <extrude>1</extrude>
        <tessellate>1</tessellate>
        <altitudeMode>absolute</altitudeMode>
        <outerBoundaryIs>
            <LinearRing>
                <coordinates>
                    17.99514610290434,59.36293893395309,100 17.99651951950199,59.36209399425741,100 17.99752330705672,59.36252751885282,100 17.99613146514916,59.36335387902954,100 17.99514610290434,59.36293893395309,100 
                </coordinates>
            </LinearRing>
        </outerBoundaryIs>
    </Polygon>
</Placemark>
</Document>
</kml>

1 个答案:

答案 0 :(得分:1)

通常你可以跳过渲染多边形,直到你得到Region元素所定义的足够“接近”,这是通过计算给定区域何时映射到最小或最大像素数来确定的。 p>

此外,无论Region是否处于活动状态,<gx:balloonVisibility>标记都会强制在加载KML时显示描述气球。直接在KML中添加区域仍会显示弹出气球。

要执行您想要执行的操作,您必须使用带有NetworkLink的第二个KML文件包装KML文件,其中RegionLink仅在区域处于活动状态时(即足够接近)加载秒KML,此时描述为与多边形一起显示。

<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>

  <LookAt>
        <longitude>17.99514610290434</longitude>
        <latitude>59.36293893395309</latitude>
        <altitude>0</altitude>
        <heading>105.3974737169693</heading>
        <tilt>52.34415598649959</tilt>
        <range>597.51212259908</range>
    </LookAt>

  <NetworkLink>
    <Region>
        <LatLonAltBox>
          <north>59.363792</north>
          <south>59.361556</south>
          <east>17.998029</east>
          <west>17.994443</west>
        </LatLonAltBox>
        <Lod>
          <minLodPixels>128</minLodPixels>
          <maxLodPixels>-1</maxLodPixels>
        </Lod>
      </Region>

      <Link>
        <href>target.kml</href>
      </Link>     
  </NetworkLink>

 </Document>

</kml>

target.kml文件包含您提供的原始KML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<kml xmlns="http://www.opengis.net/kml/2.2">    
 <Placemark>
    <name>Stadium</name>
    ...
 </Placemark>    
</kml>

您可以通过调整 minLodPixels 值和/或区域大小来更改要素+气球显示的距离。目前,当由多边形周围的区域定义的区域在屏幕上至少为128个像素时,将显示该特征。更改为32或64和/或使区域区域更大,使其看起来更快。

注意Google地球客户端不会为您提供编辑工具,甚至不会在地图上查看区域边界框,因此调试此操作非常棘手。您可以将KML粘贴到此tool中以生成KML,从而使区域边界区域可见。这有助于更轻松地调试区域。