Google Earth KML неправильно отображает стиль Balloon

#kml #google-earth-plugin

#kml #google-earth-plugin

Вопрос:

Эта проблема мучает меня около 2 дней, Google не помогает мне разобраться с этим. В принципе, приведенный ниже код должен определять текст внутри balloon. К сожалению, это работает не так. В итоге мы получаем то, что кажется запасным вариантом, если GE не сможет обработать стиль, определенный в KML.

Вот один (из многих) способов, которыми я пытался внедрить KML непосредственно в плагин GE для рендеринга.

 var kmlString = ''  
'<?xml version="1.0" encoding="UTF-8"?>'  
'<kml xmlns="http://www.opengis.net/kml/2.2">'  
'  <Document>'  
'    <Style id="sitegeom">'  
'      <BalloonStyle>'  
'       <text>'  
'           <![CDATA['  
'           this is<br>a test'  
'           ]]>'            
'       </text>'  
'      </BalloonStyle>'  
'    </Style>'  
'  </Document>'  
'</kml>';

var kmlObject = $wnd.ge.parseKml(kmlString);
$wnd.ge.getFeatures().appendChild(kmlObject);
  

Код, на котором основан этот фрагмент, взят непосредственно из GE docs. Поди разберись. У кого-нибудь есть идея?

Ответ №1:

Документ KML, который вы добавляете позже, скорее всего, не сможет получить доступ к идентификатору #sitegeom, который вы определили в начале в отдельном документе KML, это не входит в область видимости.

Попробуйте следовать инструкциям Google Earth doc re: this, поместив определение стиля в отдельный файл:

Если определение стиля находится в том же файле, перед идентификатором стиля поставьте знак #. Если определение стиля находится во внешнем файле, включите полный URL-адрес в элемент.

например:

 <styleUrl>http://www.example.com/path/to/your/style.kml#sitegeom</styleUrl>
  

Ответ №2:

Возможно, вопрос не совсем ясен для меня, но я думаю, вам нужно описать Placemark в вашем KML и определить свой стиль styleUrl следующим образом:

 <?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <Style id="sitegeom">
      <BalloonStyle>
       <text>
           <![CDATA[
          this is<br>a test
           ]]>          
       </text>
      </BalloonStyle>
    </Style>
    <Placemark>
        <Point>
            <coordinates>104.30000001,52.283333343333</coordinates>
        </Point>
        <styleUrl>#sitegeom</styleUrl>
    </Placemark>
  </Document>
</kml>
  

Это правильная идея?

Комментарии:

1. Не совсем… метки берутся из совершенно другого объекта KML, который создается «на лету» на более позднем этапе кода.