使用Openlayers 3

时间:2016-08-10 14:36:05

标签: openlayers-3 geoserver gml ogc

我尝试将GML文件加载到矢量图层并将其绘制在地图上。由于某些原因,虽然它们被解析并添加到矢量图层,但这些特征并未在地图上显示。

我尝试使用来自GML的{​​{1}}文件(对源代码进行了少量修改),Geoserver似乎没有问题消化它。

我是否遗漏了某些内容,或者openlayers 3解析器是否存在不支持自定义文件的内容?

代码:

GML

原始(function() {} ( 'use strict'; var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: ol.proj.transform([0, 30], 'EPSG:4326', 'EPSG:3857'), zoom: 2 }) }); var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", "/echo/xml/", true); xmlhttp.onload = function () { var format = new ol.format.GML2(); var xmlDoc = xmlhttp.responseXML; // Read and parse all features in XML document var features = format.readFeatures(xmlDoc, { featureProjection: 'EPSG:4326', dataProjection: 'EPSG:3857' }); var vector = new ol.layer.Vector({ source: new ol.source.Vector({ format: format }) }); // Add features to the layer's source vector.getSource().addFeatures(features); map.addLayer(vector); }; xmlhttp.send(); )); 文件位于IOC stations GML。我在本地制作了一份副本以避免GML

1 个答案:

答案 0 :(得分:1)

似乎所有东西都已到位,但是虽然该代码加载了这些功能,但这些功能仍然需要与它们相关联。这可以通过创建ol.geom来实现,在本例中为ol.geom.Point

代码:

var vector = new ol.layer.Vector({
    source: new ol.source.Vector({
        format: format
    })
});

/** This is new **/
for (var i = 0; i < features.length; i++) {

    var coordinates = [parseFloat(features[i].get('long')), parseFloat(features[i].get('lat'))];
    // Create the new geometry object
    var geom = new ol.geom.Point(ol.proj.transform(coordinates, 'EPSG:4326', 'EPSG:3857'));

    features[i].setGeometry(geom);
}
/****/

vector.getSource().addFeatures(features);