OpenLayers addFeatures

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
bms
Интересующийся
Сообщения: 16
Зарегистрирован: 12 дек 2009, 16:35
Репутация: 0
Откуда: Москва

OpenLayers addFeatures

Сообщение bms »

В OL есть возможность создание слоя OpenLayers.Layer.Vector используя протокол wfs. То есть данные передаются, в виде json или любом другом формате, и рисуются на слое целиком. Для того, чтобы не грузить слой целиком, а добавлять данные к слою только когда их выберем из списка, хочется пойти другим путем:
1. Создать пустой слой OpenLayers.Layer.Vector
2. Применить к слою метод addFeatures(), где параметром передается OL.Feature.Vector.
Вопрос: Можно ли получить OL.Feature.Vector используя протокол wfs? То есть сделать нечто подобное:

Код: Выделить всё

layer = new OpenLayers.Layer.Vector('layer')
points = new OpenLayers.Feature.Vector({protocol: new OpenLayers.Protocol.WFS({.........})})
layer.addFeatures(points);
PS: Атрибута "protocol" у OpenLayers.Feature.Vector нет
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: OpenLayers addFeatures

Сообщение Denis Rykov »

WFS возвращает ответ в одной из версий формата GML, поэтому нужно просто запросить фичи с WFS-сервера, распарсить ответ, используя нужный формат и добавить их на слой. Как-то так, но нужно проверять:

Код: Выделить всё

var layer = new OpenLayers.Layer.Vector();
var gml = new OpenLayers.Format.GML.v3();
OpenLayers.Request.GET({
    url: 'http://demo.opengeo.org/geoserver/wfs?service=wfs&version=1.1.0&request=GetFeature&typeName=topp:states',
    success: function(e) {
        layer.addFeatures(gml.read(e.responseText));
    }
});
Spatial is now, more than ever, just another column- The Geometry Column.
bms
Интересующийся
Сообщения: 16
Зарегистрирован: 12 дек 2009, 16:35
Репутация: 0
Откуда: Москва

Re: OpenLayers addFeatures

Сообщение bms »

спасибо, примерно так и сделал, только ответ получал в формате JSON

Код: Выделить всё

response = {...}
var geojson_format = new OpenLayers.Format.GeoJSON();
layer.addFeatures(geojson_format.read(response));
Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и 1 гость