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

Openlayers 来自geoserver的geojson层未显示(openlayer),openlayers,geojson,geoserver,Openlayers,Geojson,Geoserver,我正在运行以下脚本: 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({

我正在运行以下脚本:

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()
      })
    })
  ]
});

为什么图层没有显示。我有时会收到来自geoserver的“permgen空间不足”错误?这与那个问题有关吗?或者我是否需要对geoserver进行任何调整以发布地图?如果只在浏览器中输入url,则会得到geojson代码。非常感谢您的geojson文件没有问题,但它有两个点,一个在布达佩斯附近,另一个在也门附近(我用过)


这就是问题所在吗?

如果您使用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知道何时去获取数据ect和格式,因为它让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()
    })
});
最后要检查的是,地图和数据使用相同的投影。该行:

ol.proj.transform([16.37, 48.21], 'EPSG:4326', 'EPSG:3857'),
表示您希望您的地图位于EPSG:3857中。我看不出你把地图设置到了那个投影的任何地方。当您使用MapQuestOpenAriel图层I时,很明显这是正确的投影。如果您的所有数据都在同一个项目中,那么这可能不是问题。不过,您需要确保您的georss数据位于该投影中。查看通过GeoRSS提要获得的数据,它似乎在EPSG:4326中。这意味着它将无法正确投影到您的地图上。这意味着您将需要重新投影Georgs数据的坐标。我们可以通过在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”变量的任何文档。这可能意味着您正在使用另一个库或更旧的库。如果是这种情况,我上面所说的可能没有帮助。

thx。这不应该是问题。我只是从数据库中删除了记录。我认为这与geoserver有关。。