2

这个问题困扰了我大约 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 文档。去搞清楚。有人有想法吗?

4

2 回答 2

2

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

尝试按照 Google 地球文档说明 re: this,将样式定义放在单独的文件中:

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

例如:

<styleUrl>http://www.example.com/path/to/your/style.kml#sitegeom</styleUrl>
于 2011-05-18T02:53:17.690 回答
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>

这是正确的想法吗?

于 2011-05-11T19:54:29.417 回答