【问题标题】:delaying balloon component in a KML code在 KML 代码中延迟气球组件
【发布时间】:2012-11-28 15:58:15
【问题描述】:

我刚刚开始学习如何操作 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>

【问题讨论】:

    标签: kml balloon


    【解决方案1】:

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

    此外,&lt;gx:balloonVisibility&gt; 标签会在加载 KML 时强制显示说明气球,无论 Region 是否处于活动状态。在 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 粘贴到此 tool 以生成 KML,使区域边界区域可见。这有助于更轻松地调试区域。

    【讨论】:

    • 关于 ,我使用了它,因为没有它的气球只能通过单击该功能来激活......所以我想在不点击的情况下显示它,但距离合适功能.....
    • 它确实有效.....TNX....我怎样才能改变出现的距离?和PLZ给我一个简短的解释?(如果可能的话)
    • 添加了关于改变距离的说明...需要反复试验才能使其恰到好处。
    猜你喜欢
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多