1

我有一个关于 KML 文档中的 BalloonStyle 教程的问题: BalloonStyle 文档

玩弄这个 KML 文件:

<kml xmlns="http://www.opengis.net/kml/2.2"> 
<Document>   
  <name>ExtendedData+SchemaData</name>   
  <open>1</open>    
  <!-- Create a balloon template referring to the user-defined type -->
  <Style id="trailhead-balloon-template">     
    <BalloonStyle>       
      <text>
        <![CDATA[         
          <h2>My favorite trails!</h2>         
          <br/><br/>         
          The $[TrailHeadType/TrailHeadName/displayName] is <i>$[TrailHeadType/TrailHeadName]</i>.        
          The trail is $[TrailHeadType/TrailLength] miles.         <br/>        
          The climb is $[TrailHeadType/ElevationGain] meters.         <br/><br/>       
        ]]>
      </text>     
    </BalloonStyle>
  </Style>     

  <!-- Declare the type "TrailHeadType" with 3 fields -->
  <Schema name="TrailHeadType" id="TrailHeadTypeId">     
    <SimpleField type="string" name="TrailHeadName">       
      <displayName><![CDATA[<b>Trail Head Name</b>]]></displayName>     
    </SimpleField>     
    <SimpleField type="double" name="TrailLength">       
      <displayName><![CDATA[<i>The length in miles</i>]]></displayName>     
    </SimpleField>     
    <SimpleField type="int" name="ElevationGain">       
      <displayName><![CDATA[<i>change in altitude</i>]]></displayName>     
    </SimpleField>   
  </Schema>       

  <!-- Instantiate some Placemarks extended with TrailHeadType fields -->    
  <Placemark>     
    <name>Easy trail</name>     
    <styleUrl>#trailhead-balloon-template</styleUrl>     
    <ExtendedData>       
      <SchemaData schemaUrl="#TrailHeadTypeId">        
        <SimpleData name="TrailHeadName">Pi in the sky</SimpleData>         
        <SimpleData name="TrailLength">3.14159</SimpleData>         
        <SimpleData name="ElevationGain">10</SimpleData>       
      </SchemaData>     
    </ExtendedData>     
    <Point>       
      <coordinates>-122.000,37.002</coordinates>     
    </Point>   
  </Placemark>    
  <Placemark>     
    <name>Difficult trail</name>     
    <styleUrl>#trailhead-balloon-template</styleUrl>     
    <ExtendedData>
      <SchemaData schemaUrl="#TrailHeadTypeId">         
        <SimpleData name="TrailHeadName">Mount Everest</SimpleData>        
        <SimpleData name="TrailLength">347.45</SimpleData>         
        <SimpleData name="ElevationGain">10000</SimpleData>       
      </SchemaData>    
    </ExtendedData>    
    <Point>       
      <coordinates>-121.998,37.0078</coordinates>     
    </Point>   
  </Placemark>   
</Document> 
</kml>

当您删除其中一个 SimpleData 元素时,Google 地球会显示气球模板中的实体替换。例如,您删除<SimpleData name="ElevationGain">10000</SimpleData> 它在气球中显示的行,例如“爬升是 $[TrailHeadType/ElevationGain] 米”。这看起来不太好。

知道如何告诉 Google 地球,如果缺少 SimpleData,它不应该显示气球中的线吗?

提前致谢

4

2 回答 2

0

由于我的数据经常以某种方式发生变化,我现在提供了一个链接到 css 文件的 xml 文件,并将其作为 iframe 嵌入到描述中。对于离线使用,创建一个kmz并将xml和css放入其中。

对于一个小教程看看这里: http ://www.w3schools.com/xml/xml_display.asp

在 kml 中,它看起来如下:

<description>
    <![CDATA[
        <iframe src="http://www.w3schools.com/xml/cd_catalog_with_css.xml"></iframe>
    ]]>
</description>
于 2013-09-01T15:29:37.897 回答
0

我不认为* 你可以做你在这里问的 - 即在这种样式文本中应用条件逻辑。过去我也有类似的要求(我的一些地标中缺少某些数据),我最终在生成 KML 时为每个可能的丢失信息场景应用了不同的样式。

它感觉既非常笨重,而且如果您有大量的场景,即一件或多件物品丢失而其他物品存在,它很快就会变得一团糟。

*很想弄错。

更新

只是查看了我的代码,实际上我最终将所有文本放在了架构的地标字段中,并在我没有数据时打印出空节点 - 也不太优雅,但最终不需要额外的样式. 根据您的示例,例如:

<BalloonStyle>       
  <text>
    <![CDATA[         
      <h2>My favorite trails!</h2>         
      $[TrailHeadType/TrailHeadName/displayName] 
      $[TrailHeadType/TrailLengthBalloonText]               
      $[TrailHeadType/ElevationGainBalloonText]              
    ]]>
  </text>     
</BalloonStyle>

<Placemark>     
 <name>Difficult trail</name>     
 <styleUrl>#trailhead-balloon-template</styleUrl>     
 <ExtendedData>
  <SchemaData schemaUrl="#TrailHeadTypeId">         
    <SimpleData name="TrailHeadName">Mount Everest</SimpleData>        
    <SimpleData name="TrailLength">347.45</SimpleData>         
    <SimpleData name="ElevationGain">10000</SimpleData> 

    <SimpleData name="TrailHeadNameBalloonText"><![CDATA[The trail name is Mount Everest</br>]]></SimpleData>        
    <SimpleData name="TrailLengthBalloonText"><![CDATA[The trail is 347.45 miles.</br>]]></SimpleData>         
    <SimpleData name="ElevationGainBalloonText"><![CDATA[The climb is 10000 meters.</br>]]></SimpleData> 
  </SchemaData>    
 </ExtendedData>    
 <Point>       
  <coordinates>-121.998,37.0078</coordinates>     
 </Point>   
</Placemark>   

然后,当您没有数据时,将该项目留空:

<Placemark>     
 <name>Difficult trail</name>     
 <styleUrl>#trailhead-balloon-template</styleUrl>     
 <ExtendedData>
  <SchemaData schemaUrl="#TrailHeadTypeId">         
    <SimpleData name="TrailHeadName">Mount Everest</SimpleData>        
    <SimpleData name="TrailLength">347.45</SimpleData>         
    <SimpleData name="ElevationGain">10000</SimpleData> 

    <SimpleData name="TrailHeadNameBalloonText"><![CDATA[The trail name is Mount Everest</br>]]></SimpleData>        
    <SimpleData name="TrailLengthBalloonText"></SimpleData>         
    <SimpleData name="ElevationGainBalloonText"></SimpleData> 
  </SchemaData>    
 </ExtendedData>    
 <Point>       
  <coordinates>-121.998,37.0078</coordinates>     
 </Point>   
</Placemark> 
于 2013-08-28T22:47:53.690 回答