开放图层导出为 KML 并保留我的地图样式

Openlayers export to KML and keep my map styles

本文关键字:保留 我的 地图 样式 KML 图层      更新时间:2023-09-26

>我成功地从Openlayers编写了KML,但是kml文件中不存在任何样式(颜色,笔触等)。 是否可以使用样式生成 KML?

我在这里发现了一个类似的问题:https://gis.stackexchange.com/questions/17031/openlayers-format-kml-write-style

提前谢谢。

到目前为止,WRITE 方法还没有使用 'extractStyles':true, 属性,如下所示。只有 READ 方法可以。

我看到的唯一方法就是简单地重新创建它们。在下面的示例中,我创建了我想要的 KML 样式,并将其注入到创建 kml 字符串的开放层中。

myorg.Util.GetKMLFromFeatures = function (features, strfolderName, strfolderDescription) {
    var format = new OpenLayers.Format.KML({
        'maxDepth': 10,
        'extractStyles': true,
        'internalProjection': myorg.UI.Map.getMap().baseLayer.projection,
        'externalProjection': myorg.UI.Map.Projections.Geographic
    });
    var kmlStyle = "<Style id='OutlineOnlyStyle'><PolyStyle><color>ff0000cc</color><fill>0</fill><outline>1</outline></PolyStyle></Style>";
    format.foldersName = strfolderName;
    format.foldersDesc = strfolderDescription;
    //add style description
    var kml = format.write(features).replace(/<Folder>/g, '<Folder>' + kmlStyle)
    .replace(/><name>/g, '><styleUrl>#OutlineOnlyStyle</styleUrl><name>');
    return kml;
};