0

我刚刚开始学习如何操作 KML 文件。这是一个我不知道如何解决的问题....我创建了一个多边形并添加了一个要显示为气球的描述,但它会在 Google 地球开始工作时出现,然后才能看到多边形。我想要的是从多边形出现的特定距离显示气球(例如在 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>
4

1 回答 1

1

通常,您可以跳过渲染多边形,直到您“足够接近”它由Region元素定义,该元素通过计算给定区域何时映射到最小或最大像素数来确定。

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

要执行您想做的事情,您必须将 KML 文件与第二个 KML 文件包装在一起,该文件带有一个带有一个区域的 NetworkLink,该区域仅在该区域处于活动状态(又名足够接近)时才加载第二个 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 粘贴到此工具中以生成 KML,从而使区域边界区域可见。这有助于更轻松地调试区域。

于 2012-11-28T18:42:02.657 回答