我正在运行此脚本:
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空间”错误?与那个问题有关吗?或者我是否需要对地理服务器进行任何调整才能发布地图?如果您只在浏览器中输入网址,则会获得geojson代码。非常感谢提前
答案 0 :(得分:0)
只是指出你的geojson文件没有问题,但它有两个点,一个在布达佩斯附近,另一个靠近也门(我使用了http://geojsonlint.com/)
那会是问题吗?
答案 1 :(得分: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()
})
});
要检查的最后一件事是您的地图和数据使用相同的投影。这一行:
ol.proj.transform([16.37, 48.21], 'EPSG:4326', 'EPSG:3857'),
表示您希望您的地图位于EPSG:3857。我无法看到你已经将地图设置为任何地方的投影。当您使用MapQuestOpenAriel图层时,我认为这是正确的投影。如果您的所有数据都在同一个项目中,那么这可能不是问题。您需要确保您的georss数据在该投影中。查看通过GeoRSS Feed输入的数据,它似乎位于EPSG:4326中。这意味着它无法在您的地图上正确投影。这意味着您需要重新投影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'变量的任何文档。这可能意味着您正在使用不同的库或更旧的库。如果是这种情况,我上面所说的可能是不帮助