kml - 具有外部样式的 openlayers kml

标签 kml openlayers

我正在尝试将我的 kml 样式移动到外部文档以与 OpenLayers 一起使用。当这些样式直接包含在 kml 文件中时,它们就会起作用。

起初我以为我可以使用直接的 kml 和 styleUrl 标签来实现此目的:

<styleUrl>http://localhost/map.kml#myIcon</styleUrl>

但是,当我尝试这样做时,map.kml 文件永远不会被请求,并且标记不会显示。我已经验证 styleUrl 网址有效。

我正在使用以下方式加载我的 KML:

new OpenLayers.Layer.GML('Name', 'kml_path', {
  format: OpenLayers.Format.KML,
    formatOptions: {
      extractStyles: true,
      extractAttributes: true
    },
    projection: map.displayProjection
});

OpenLayers.Format.KML API 中有一些名为“styles”和“styleBaseUrl”的诱人选项,但我找不到任何有关它们的用途或如何使用它们的文档。有人有这方面的经验吗?

最佳答案

一种方法是,拥有一个带有样式的单独的 SLD 外部文件,并将其应用到您的 GML 图层。

查看 SLD OpenLayers 代码示例 http://openlayers.org/dev/examples/sld.html只需将示例图层替换为您的图层并替换 sld-tasmania.xml 文件中的样式即可。这样,您就不需要 formatOptions 中的 extractStyles 选项。

关于kml - 具有外部样式的 openlayers kml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5461437/

相关文章:

kml - 使用网络链接和自签名 Web 服务器

kml - kml 气球中的 "Driving directions:",抑制 - Kml 文档文件没有说明

r - getKMLcoordinates 返回列表列表而不是段列表

javascript - OpenLayers - 适合当前范围正在缩小

apache - 打开图层GetFeatureInfo代理设置

javascript - 传单 (geojson) 多边形上的简单标签

android - 如何在谷歌地图android中加载KML/KMZ文件?

swift - 尝试更改正在渲染的 KML 的透明度和填充颜色

css - 摆脱瓷砖之间的 OpenLayers 差距

OpenLayers:不显示 WMS 图层