0
Я использую Geoserver/PostGIS/OpenLayersOpenLayers: поиск из WFS слоя
Я успешно установить векторный слой. И теперь я пытаюсь создать функцию поиска. Но что-то идет не так.
Это мой код
<form>
<input id="sub01" type="submit" value="Search" onclick="changeFilter()">
</form>
\t
<script type="text/javascript">
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
\t
\t var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;
\t
var WGS84 = new OpenLayers.Projection("EPSG:4326");
var mercator = new OpenLayers.Projection("EPSG:900913");
var map = new OpenLayers.Map ("dMap", {
controls:[
],
maxResolution: 0.005,
displayProjection: WGS84,
units: 'degrees'
});
var wfs = new OpenLayers.Layer.Vector("Editable Features", {
renderers: renderer,
displayInLayerSwitcher: true,
strategies: [
new OpenLayers.Strategy.Fixed(),
new OpenLayers.Strategy.Cluster({distance:
15})
],
styleMap: new OpenLayers.StyleMap(style),
protocol: new OpenLayers.Protocol.WFS({
version: "1.1.0",
url: "http://localhost:8080/geoserver/wfs",
featureNS : "http://www.openplans.org/tour",
srsName: "EPSG:4326",
featureType: "tourism",
geometryName: "the_geom"
}),
extractStyles: true,
strategies: [new OpenLayers.Strategy.BBOX()],
filter: new OpenLayers.Filter.Logical({
type: OpenLayers.Filter.Logical.AND,
filters: [
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.
Comparison.EQUAL_TO,
property: prop1,
value: testfil
}),
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.
Comparison.EQUAL_TO,
property: prop2,
value: testfil2
})
]
})
});
var prop1 = "tourismtype";
var testfil = "Recreation";
var prop2 = "tourismname";
var testfil2 = "Park";
function changeFilter(prop1, prop2, testfil, testfil2){
wfs.destroyFeatures();
filter: new OpenLayers.Filter.Logical({
type: OpenLayers.Filter.Logical.AND,
filters: [
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: prop1,
value: testfil
}),
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: prop2,
value: testfil2
})
]
})
wfs.filter = filter;
wfs.refresh({force: true});
}
\t \t
</script>
Это не работает. Я пробовал редактировать свой код, я не знаю, что делать, я искал ответ, и мне ничего не помогло. Пожалуйста, сообщите ...
Спасибо.
есть какие-либо ошибки? –
нет, у меня нет никаких ошибок – Ehsan
На моей карте отображаются точки в основной загрузке, но они не изменяются при нажатии кнопки поиска, после перезагрузки карты она все еще показывает предыдущие точки – Ehsan