2011-05-06 64 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>