Map Server+OpenLayers.Protocol.WFS
Добавлено: 07 окт 2015, 09:11
				
				Хочу сделать ,чтобы работало выделение слоев в OL. По-видимому не работает запрос OpenLayers.Protocol.WFS.fromWMSLayer 
полный js:
В ответе chrome выдает 
В созданных слоях select и hover ничего не происходит
Запрос на атрибуты работает корректно
			полный js:
Код: Выделить всё
var map, infoControls, green, select, hover, control1;
		function load() {
			map = new OpenLayers.Map('map', {
				maxExtent: new OpenLayers.Bounds(12638228, 6656449, 12667930, 6676928),
				projection: "EPSG:28412",
				units: "m"
			});
			green = new OpenLayers.Layer.WMS("Геоботаника",
				"http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/geobotanic.map&", 
				{'layers': 'green', transparent: false, format: 'PNG'},
				{isBaseLayer: true}
				);
			var gidro = new OpenLayers.Layer.WMS("Основная гидрография",
				"http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/geobotanic.map&", 
				{'layers': 'gidro', transparent: true, format: 'PNG'},
				{isBaseLayer: false}
				);
			var river = new OpenLayers.Layer.WMS("Мелкие реки",
				"http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/geobotanic.map&", 
				{'layers': 'river', transparent: true, format: 'PNG'},
				{isBaseLayer: false}
				);
			var styleMap = new OpenLayers.StyleMap({
				'strokeWidth': 5,
				'strokeColor': '#ff0000'
			});
			select = new OpenLayers.Layer.Vector("Selection", {
				styleMap: new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"])
			});
			hover = new OpenLayers.Layer.Vector("Hover");
			control1 = new OpenLayers.Control.GetFeature({
				protocol: OpenLayers.Protocol.WFS.fromWMSLayer(green, {
					featureType: "green",
					version: "1.0.0",
					url:  "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/geobotanic.map&SERVICE=WFS&srsName=EPSG:28412",
					srsName:"EPSG:28412",
					geometryName: "mygeom"
				}),
				box: false,
				hover: true
			});
			control1.events.register("featureselected", this, function(e) {
				select.addFeatures([e.feature]);
			});
			control1.events.register("featureunselected", this, function(e)
			{
				select.removeFeatures([e.feature]);
			});
			control1.events.register("hoverfeature", this, function(e) {
				hover.addFeatures([e.feature]);
			});
			control1.events.register("outfeature", this, function(e) {
				hover.removeFeatures([e.feature]);
			});
			map.addControl(control1);
			control1.activate();
			infoControls = {
				click: new OpenLayers.Control.WMSGetFeatureInfo({
					url: 'http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/geobotanic.map&', 
					title: 'Identify features by clicking',
					layers: [green],
					queryVisible: true,
					infoFormat: 'text/html'
				})
			};
			map.addLayers([river,green,gidro,select,hover]); 
			for (var i in infoControls) { 
				infoControls[i].events.register("getfeatureinfo", this, showInfo);
				map.addControl(infoControls[i]); 
			}
			map.addControl(new OpenLayers.Control.LayerSwitcher());
			infoControls.click.activate();
			map.zoomToMaxExtent();
			map.addControl(new OpenLayers.Control.MousePosition());
		}
		function showInfo(evt) {
			if (evt.features && evt.features.length) {
				highlightLayer.destroyFeatures();
				highlightLayer.addFeatures(evt.features);
				highlightLayer.redraw();
			} else {
				document.getElementById('responseText').innerHTML = evt.text;
			}
		}Код: Выделить всё
<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.0.0" maxFeatures="10" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd">
<wfs:Query typeName="feature:green">
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:BBOX><ogc:PropertyName>mygeom</ogc:PropertyName>
<gml:Box xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:28412">
<gml:coordinates decimal="." cs="," ts=" ">12655892.568359,6667240.0429688 12656182.626953,6667530.1015625</gml:coordinates>
</gml:Box>
</ogc:BBOX>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>Запрос на атрибуты работает корректно