在 ol3 中显示 WFS 图层
Display WFS layer in ol3
我正在使用 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)。
当我在 network/images 选项卡下使用 firebug 时,我可以看到 wms 请求,但看不到 wfs。
提前致谢。
您似乎混淆了 OpenLayers 2 和 OpenLayers 3。请看一下 this or this example. These examples are using JSONP 这样您就不需要代理了。
终于解决了我的问题,所以我想和你分享解决方案。
首先,我之前的代码中存在一些错误,这是设置 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请求,参数值opengeo
是geoserver中的工作空间,comgeo
是层。
你需要使用 encodeURIComponent
函数来转义这个 url,这样你就不会得到像 :
这样的著名错误
Could not determine geoserver request from http request
我的 url /cgi-bin/proxy.cgi?url=
的第一部分是因为如果您的应用程序是 运行 来自另一个位置(我正在使用 wamp
托管我的)。
要让您的代理正常工作,请尝试本教程:
set proxy
像我的代码一样使用代理,这个
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
在 ol3
中不可用。
我正在使用 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)。 当我在 network/images 选项卡下使用 firebug 时,我可以看到 wms 请求,但看不到 wfs。 提前致谢。
您似乎混淆了 OpenLayers 2 和 OpenLayers 3。请看一下 this or this example. These examples are using JSONP 这样您就不需要代理了。
终于解决了我的问题,所以我想和你分享解决方案。
首先,我之前的代码中存在一些错误,这是设置 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请求,参数值opengeo
是geoserver中的工作空间,comgeo
是层。
你需要使用 encodeURIComponent
函数来转义这个 url,这样你就不会得到像 :
Could not determine geoserver request from http request
我的 url /cgi-bin/proxy.cgi?url=
的第一部分是因为如果您的应用程序是 运行 来自另一个位置(我正在使用 wamp
托管我的)。
要让您的代理正常工作,请尝试本教程: set proxy
像我的代码一样使用代理,这个
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
在 ol3
中不可用。