2011-05-06 62 views
2

這個問題一直困擾着我大約2天谷歌不幫我把這一個搞清楚。基本上,以下的代碼應當在氣球內定義文本。不幸的是,這不是那種方式。如果GE無法處理KML中定義的風格,那麼我們最終會看到似乎是後備方案。谷歌地球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文檔。去搞清楚。任何人有想法?

回答

1

也許問題不適合我那麼清楚,但我認爲,你需要描述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> 

是不是個好主意?

+0

不太......地標來自完全不同的KML對象,該對象在代碼稍後動態創建。 – 2011-05-12 15:06:13

2

您稍後添加的KML文檔可能無法在單獨的KML文檔中訪問您在開始時定義的#sitegeom ID,它不在範圍內。

嘗試以下的谷歌地球文檔instructions re: this,通過將樣式定義在一個單獨的文件:

如果樣式定義是在同一文件中,以#號之前的樣式ID。如果樣式定義位於外部文件中,請將完整的URL包含在元素中。

例如爲:

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