OL + MapServer. GetFeature из нескольких слоев одновременно
Добавлено: 22 апр 2010, 09:01
Может быть кто-то сталкивался с такой проблемой, когда заранее неизвестно, из какого WFS-слоя пользователь будет выбирать объекты с помощью OpenLayers.Control.SelectFeature?
Например, есть карта города, где пользователь может выделить полигональный дом или линейную улицу, находящиеся в разных слоях.
Если в параметрах протокола передать названия слоев через запятую, как здесь:
или даже массивом строк, как здесь
то 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, спасайте! Проект горит.
Например, есть карта города, где пользователь может выделить полигональный дом или линейную улицу, находящиеся в разных слоях.
Если в параметрах протокола передать названия слоев через запятую, как здесь:
Код: Выделить всё
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, спасайте! Проект горит.
