【问题标题】:Openlayers 3 how to add kml using a string variable?Openlayers 3如何使用字符串变量添加kml?
【发布时间】:2017-06-15 23:42:51
【问题描述】:

有没有办法像这样在 openlayer 3 中添加 kml 向量,但 kml 来自字符串变量?

  var vector = new ol.layer.Vector({
            source: new ol.source.Vector({
              url: 'https://openlayers.org/en/v4.2.0/examples/data/kml/2012-02-10.kml',
              format: new ol.format.KML()
            })
          });

我试过这段代码,但它不起作用。

var kmlString = result;
var features = new ol.format.KML().readFeatures(kmlString);

var KMLvectorSource = new ol.source.Vector({
    features: features
});


var KMLvector = new ol.layer.Vector({ source: KMLvectorSource });

//KMLvector.addFeatures(features);
map.addLayer(KMLvector);

提前致谢。

【问题讨论】:

    标签: kml openlayers-3


    【解决方案1】:

    您缺少 kml 功能的投影定义和转换。 https://openlayers.org/en/v4.2.0/examples/data/kml/2012-02-10.kml 中存在的 kml 要素被投影在 EPSG:4326 中,而您的地图被投影在 EPSG:3857 中。因为 kml 通常会被投影到 4326,所以在大多数情况下 kml 的 EPSG 代码应该是 4326。

    现在回到你的问题。更改此行:

    var features = new ol.format.KML().readFeatures(kmlString);

    到这里:

    var features = new ol.format.KML().readFeatures(kmlString,{ dataProjection:'EPSG:4326', featureProjection:'EPSG:3857' });

    【讨论】:

    • 顺便说一句,我不使用 openlayers 的 kml。我有一个字符串变量,其中包含其投影在 3857 的字符串。我已经尝试过该代码,但它不起作用没有错误,但没有显示 kml 层
    • 除了将其传递给字符串之外,还有其他方法可以从数据库中加载 kml
    • 您的问题是如何从字符串加载它。最好决定你真正想要什么,这样我们就不会浪费时间。
    • 对不起,我已经弄明白了。我的 kml 文件有问题。无论如何,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多