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有关。。