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 要素の 1 つを削除すると、Google Earth はバルーン テンプレートからのエンティティ置換を表示します。たとえば、<SimpleData name="ElevationGain">10000</SimpleData> 「上昇は $[TrailHeadType/ElevationGain] メートルです」のように、バルーンに表示される行を削除します。これはあまり見栄えがよくありません。

SimpleData が欠落している場合、バルーンからの線を表示しないように Google Earth に指示する方法はありますか?

前もって感謝します

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 を生成するときに欠落している可能性のある情報シナリオごとに異なるスタイルを適用することになりました。

それは非常にぎこちなく感じられ、1 つまたは複数のアイテムが欠落し、他のアイテムが存在するというシナリオが多数ある場合、すぐに混乱する可能性があります.

*間違っていたいです。

アップデート

このためのコードを見て、実際にすべてのテキストをスキーマの目印フィールドに入れ、データがないときに空のノードを出力することになりました-これもエレガントではありませんが、最終的に追加のスタイルは必要ありませんでした. あなたの例に基づいて、次のようなものです:

<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 に答える