Google地球KML无法正确渲染气球样式

时间:2011-05-06 15:08:02

标签: kml google-earth-plugin

这个问题一直困扰着我大约2天谷歌没有帮我解决这个问题。基本上,下面的代码应该定义气球中的文本。不幸的是,它不是这样的。如果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文档。去搞清楚。有人有想法吗?

2 个答案:

答案 0 :(得分:2)

您稍后添加的KML文档可能无法访问您在单独的KML文档中定义的#sitegeom ID,它不在范围内。

通过将样式定义放在单独的文件中,尝试关注Google地球文档instructions re: this

  

如果样式定义位于同一文件中,则在样式ID前面加上#符号。如果样式定义位于外部文件中,请在元素中包含完整的URL。

e.g:

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

答案 1 :(得分:1)

也许问题不是那么清楚,但我认为,您需要在KML中描述Placemark并在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>

这是正确的想法吗?