Файл KML в Google Планета Земля показывает имя замены объекта

У меня есть вопрос относительно учебного пособия по BalloonStyle в документации KML: Документация по 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?

Заранее спасибо


person berkley    schedule 28.08.2013    source источник


Ответы (2)


Я не думаю*, ​​что вы можете сделать то, что вы здесь просите, т. е. применить условную логику к этому тексту стиля. У меня было подобное требование в прошлом (некоторые фрагменты данных отсутствовали в некоторых моих метках), и в итоге я применил разные стили для каждого из возможных сценариев отсутствия информации при создании 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> 
person Matthew    schedule 28.08.2013
comment
Спасибо за этот ответ... ;) - person berkley; 01.09.2013

Поскольку мои данные довольно часто меняются, я теперь предоставляю файл xml, связанный с файлом css, и встраиваю его в описание в виде iframe. Для автономного использования создайте kmz и поместите в него xml и css.

Небольшой учебник можно найти здесь: http://www.w3schools.com/xml/xml_display.asp

В кмл это выглядит так:

<description>
    <![CDATA[
        <iframe src="http://www.w3schools.com/xml/cd_catalog_with_css.xml"></iframe>
    ]]>
</description>
person berkley    schedule 01.09.2013