首页 文章

来自geoserver的geojson图层未显示(openlayer)

提问于
浏览
0

我有这个脚本运行:

var map;

  var map = new ol.Map({
  target: 'map',
  renderer: ol.RendererHint.CANVAS,
  view: new ol.View2D({
    center: ol.proj.transform([16.37, 48.21], 'EPSG:4326', 'EPSG:3857'),
    zoom: 11
  }),
  layers: [
    new ol.layer.Tile({
      source: new ol.source.MapQuestOpenAerial()
    }),
    new ol.layer.Vector({
      source: new ol.source.Vector({
        url: 'http://ginyu.at:8080/geoserver/wienbike/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=wienbike%3Ainput2&maxfeatures=50&outputformat=json',
        parser: new ol.parser.GeoJSON()
      })
    })
  ]
});

为什么图层没有显示 . 我有时会从地理服务器中获得“不够的permgen空间”错误?与那个问题有关吗?或者我是否需要对地理服务器进行任何调整才能发布 Map ?如果您只在浏览器中输入网址,则会获得geojson代码 . 提前谢谢了

2 回答

  • 0

    只是指出你的geojson文件没有问题,但它有两个点,一个在布达佩斯附近,另一个靠近也门(我用了http://geojsonlint.com/

    enter image description here

    那会是问题吗?

  • 0

    如果您使用的是Openlayers,则可以尝试使用Openlayers GeoRSS图层而不是矢量图层 . 使用矢量图层获取数据时,有许多事情需要在openlayers内部进行配置 .

    尝试类似的东西:

    new OpenLayers.Layer.GeoRSS( 'GeoRSS Layer', 'http://ginyu.at:8080/geoserver/wienbike/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=wienbike%3Ainput2&maxfeatures=50&outputformat=json');
    

    如果转到链接显示GeooRSS代码,那么问题就在于geoserver,而不是openlayers如何处理数据 .

    如果你真的想使用矢量,那么尝试使用这些选项让Openlayers知道如何处理数据 . 特别重要的是策略,因为这可以让Openlayers知道何时去获取数据和格式,因为它让它知道数据的格式 .

    new OpenLayers.Layer.Vector("GeoRSS Layer", {
        strategies: [new OpenLayers.Strategy.Fixed()],
        protocol: new OpenLayers.Protocol.HTTP({
            url: "http://ginyu.at:8080/geoserver/wienbike/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=wienbike%3Ainput2&maxfeatures=50&outputformat=jsonl",
            format: new OpenLayers.Format.GeoRSS()
        })
    });
    

    最后要检查的是,您的 Map 和数据使用相同的投影 . 这条线:

    ol.proj.transform([16.37, 48.21], 'EPSG:4326', 'EPSG:3857'),
    

    建议您期望您的 Map 位于EPSG:3857 . 我无法看到你已经将 Map 设置为任何地方的投影 . 当您使用MapQuestOpenAriel图层时,我认为这是正确的投影 . 如果您的所有数据都在同一个项目中,那么这可能不是问题 . 您需要确保您的georss数据在该投影中 . 查看通过GeoRSS Feed输入的数据,它似乎位于EPSG:4326中 . 这意味着它无法在您的 Map 上正确投影 . 这意味着您需要重新投影GeoRSS数据的坐标 . 我们可以通过在Openlayers GeoRSS层中指定投影来实现:

    new OpenLayers.Layer.GeoRSS( 'GeoRSS Layer', 
                                  'http://ginyu.at:8080/geoserver/wienbike/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=wienbike%3Ainput2&maxfeatures=50&outputformat=json',
                                   {projection: new OpenLayers.Projection("EPSG:4326")}
    );
    

    我无法找到关于Openlayers的'parser'变量的任何文档 . 这可能意味着你正在使用不同的库或更旧的库 . 如果是这种情况,我上面所说的可能没有帮助 .

相关问题