我正在使用geoserver和openlayers 3,我在geoserver中有一个托管层,我希望使用ol3作为wfs层进行显示。它没有显示任何错误,但我没有得到地图。它适用于wms,但不适用于wfs。 我使用wamp服务器托管我的应用程序。
请有人帮我解决这个问题吗?这是我的代码:
var v=new ol.layer.Vector({
source: new ol.source.Vector({
format: new ol.format.WFS({
version: '1.1.0',
url: 'http://localhost:8080/geoserver/wfs',
featurePrefix: 'opengeo',
featureType: 'comgeo',
featureNS: 'http://localhost:8080/opengeo',
geometryName: 'geom'
})
})
});
var map = new ol.Map({
target: 'map-id',
layers: [v],
view: new ol.View({
projection: 'EPSG:4326',
center: [0, 0],
zoom: 1
})
});
我在论坛中读到我需要设置代理,我这样做,我的代理工作正常,但我不知道如何在我的代码中使用它(Openlayers.ProxyHost)。 当我使用firebug时,在网络/图像选项卡下,我可以看到wms请求,但不能查看wfs。 提前谢谢。
答案 0 :(得分:2)
最后,我解决了我的问题,所以我想和你分享解决方案。
我以前的代码中首先出现了一些错误,这是设置wfs
图层的正确方法:
var u = "http://localhost/geoserver/wfs?&service=wfs&version=1.1.0&request=GetFeature&typeNames=opengeo:comgeo";
var v = new ol.layer.Vector({
title: 'comgeo',
source: new ol.source.Vector({
url: '/cgi-bin/proxy.cgi?url='+ encodeURIComponent(u),
format: new ol.format.WFS({
})
})
});
u
是wfs请求,paramvalue opengeo
是地理服务器中的工作区,comgeo
是图层。
您需要使用encodeURIComponent
函数来转义此网址,因此您不会收到如下的着名错误:
无法从http请求中确定地理标志服务请求
我的网址/cgi-bin/proxy.cgi?url=
的第一部分是因为如果您的应用程序从其他位置运行(我使用wamp
来托管我的),您需要一个代理。
要让您的代理工作,请尝试本教程: set proxy
像我的代码一样使用代理,这个
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
在ol3
中无法使用。
答案 1 :(得分:1)