这个问题一直困扰着我大约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文档。去搞清楚。有人有想法吗?
答案 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>
这是正确的想法吗?