Необходимо создать слой WFS получающий данные GET запросом. Сервер не понимает JSONP, поэтому для доступа к серверу (он сторонний) настроен proxy. OSM слои (тайловые) стягиваются на ура, а вот WFS слой не получается даже создать нормально. Просто не понимаю как, хотя и примеры смотрел и гуглил, но что-то не доходит ни как.
Запрос к серверу на получение WFS:
Код: Выделить всё
localhost/proxy?service=WFS&version=1.0.0&srsname=EPSG:4326&request=GetFeature&typeName=TheNameLayer
Код: Выделить всё
var layer = new OpenLayers.Layer.Vector(
'Название слоя',
{
//strategies: [new OpenLayers.Strategy.BBOX()],
strategies: [new OpenLayers.Strategy.Fixed(), new OpenLayers.Strategy.Save()],
layers: 'TheNameLayer',
protocol: new OpenLayers.Protocol.WFS({
version: "1.0.0",
url: "/proxy",
featurePrefix: '',
featureType: 'TheNameLayer',
srsname: 'EPSG:4326'
}),
visibility: false
}
);
Код: Выделить всё
http://localhost/proxy
Пробовал получать данные и так (через протокол Script) :
Код: Выделить всё
var protocol = new OpenLayers.Protocol.Script({
url: serverUrl,
params: {
service: "WFS",
version: "1.0.0",
srsname: "EPSG:4326",
request: "GetFeature",
typeName: 'TheNameLayer'
}
});
Но вот не задача - при таком протоколе в параметры добавляется ещё один параметр
Код: Выделить всё
callback=OpenLayers.Protocol.Script.registry.c{N}
Так как же правильно создать WFS слой (что бы он тянул данные GET запросом приведенного вида) ?
--------------------------------------------------
Дополнение:
--------------------------------------------------
Получилось послать запрос, используя Script, без callack, так
Код: Выделить всё
var protocol = new OpenLayers.Protocol.Script({
url: serverUrl,
params: {
service: "WFS",
version: "1.0.0",
srsname: "EPSG:4326",
request: "GetFeature",
typeName: layerName
},
callbackTemplate: "",
callbackKey: ""
});
Код: Выделить всё
localhost/proxy?service=WFS&version=1.0.0&srsname=EPSG:4326&request=GetFeature&typeName=TheNameLayer&=
Похожу он все равно ищет в ответе callback функцию и пытается её вызвать, а её то нет в помине в ответе сервера!Resource interpreted as Script but transferred with MIME type text/xml: "http://localhost/proxy?service=WFS&vers ... eNameLayer&=".
OpenLayers.js:24953
OpenLayers.Protocol.Script.OpenLayers.Class.createRequest
OpenLayers.Protocol.Script.OpenLayers.Class.read
OpenLayers.Strategy.Fixed.OpenLayers.Class.load
OpenLayers.Events.OpenLayers.Class.triggerEvent
OpenLayers.Layer.OpenLayers.Class.setVisibility
OpenLayers.Control.LayerSwitcher.OpenLayers.Class.updateMap
OpenLayers.Control.LayerSwitcher.OpenLayers.Class.onButtonClick
OpenLayers.Events.OpenLayers.Class.triggerEvent
OpenLayers.Events.buttonclick.OpenLayers.Class.buttonClick
OpenLayers.Events.OpenLayers.Class.triggerEvent
OpenLayers.Events.OpenLayers.Class.handleBrowserEvent
(anonymous function)
Uncaught SyntaxError: Unexpected token <
Если кто подключал WFS с GET запросом к серверу, подскажите как быть ?