Например, есть карта города, где пользователь может выделить полигональный дом или линейную улицу, находящиеся в разных слоях.
Если в параметрах протокола передать названия слоев через запятую, как здесь:
Код: Выделить всё
control = new OpenLayers.Control.GetFeature(
{
protocol: new OpenLayers.Protocol.WFS({
url: "http://localhost/cgi-bin/mapserv.exe?MAP=C:\\ABL\\nsk.map&",
featureType: 'buildings,streets',
geometryName: 'msGeometry',
featurePrefix: 'ms',
srsName: "EPSG:4326"
}),
click: true
});
Код: Выделить всё
control = new OpenLayers.Control.GetFeature(
{
protocol: new OpenLayers.Protocol.WFS({
url: "http://localhost/cgi-bin/mapserv.exe?MAP=C:\\ABL\\nsk.map&",
featureType: ['buildings','streets'],
geometryName: 'msGeometry',
featurePrefix: 'ms',
srsName: "EPSG:4326"
}),
click: true
});
то OpenLayers формирует запрос, в котором в атрибуте typeName указанные слои передаются через запятую.
Это вроде как не соответствует спецификации WFS, где в этом случае требуется две ветви XML в запросе (по одной на каждый слой).
Вот здесь человек описывает ровно то же самое, и говорит, что решил проблему в OL, только вот не сообщает, каким образом

http://osgeo-org.1803224.n2.nabble.com/ ... 58608.html
Вот здесь человек пишет, что решал такую проблему редактированием исходного кода OpenLayers еще аж в 2008 году.
http://openlayers.org/pipermail/dev/200 ... 03829.html
Но я так понимаю, там и версия OL была другая, да и не айс делать такую хирургию.
Хочется верить, что это можно сделать штатными средствами.
Знатоки OpenLayers, спасайте! Проект горит.
