Страница 1 из 1

заполнение атрибутов OpenLayers-WFS

Добавлено: 18 апр 2009, 15:10
graver
доброе время суток

работаю в связке geoserver+openlayers
работаю с шейп файлами из примеров geoserver
возник вопрос: как можно добавить атрибуты во вновь созданный объект WFS?

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

<script type="text/javascript">
        OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;

        var map;
        function init(){
            map = new OpenLayers.Map('map');
            var political = new OpenLayers.Layer.WMS(
                "Манхеттен", 
                "http://127.0.0.1:8080/geoserver/wms",
                {layers: 'tiger:poly_landmarks',
                 format: 'image/png'}
            );

	var roads = new OpenLayers.Layer.WMS(
                "дороги", 
                "http://127.0.0.1:8080/geoserver/wms",
                {layers: 'tiger:tiger_roads',
	    transparent:true,
                 format: 'image/png'}
            );
			

            var places = new OpenLayers.Layer.WFS(
                "Местечки",
                "http://127.0.0.1:8080/geoserver/wfs",
                {typename: 'tiger:poi'},
                {
                    typename: 'poi',
                    featureNS: 'http://www.census.gov',
                    extractAttributes: true
                }
            );
            places.style = OpenLayers.Util.applyDefaults({strokeColor: "#ff0000"}, 
                    OpenLayers.Feature.Vector.style["default"]);

	map.addLayers([political,places]);

            var panel = new OpenLayers.Control.Panel(
                {displayClass: 'olControlEditingToolbar'}
            );

            var drawPoint = new OpenLayers.Control.DrawFeature(
                places, OpenLayers.Handler.Point,
                {displayClass: 'olControlDrawFeaturePoint'}
            );
            drawPoint.featureAdded = function(feature) {
                feature.layer.eraseFeatures([feature]);
                // cast to multipoint
                feature.geometry = new OpenLayers.Geometry.MultiPoint(
                    feature.geometry
                );
                feature.style.strokeColor = "#ff000f";
                feature.state = OpenLayers.State.INSERT;
                feature.layer.drawFeature(feature);
            }

            panel.addControls(
                [new OpenLayers.Control.Navigation(), drawPoint]
            );
            map.addControl(panel);
            map.addControl(new OpenLayers.Control.LayerSwitcher());

            map.zoomToExtent(
                new OpenLayers.Bounds(-74.047185, 40.679648,
                    -73.907005, 40.882078)
            );
        }
    </script>

Re: заполнение атрибутов OpenLayers-WFS

Добавлено: 18 апр 2009, 17:41
Максим Дубинин
очень интересно, я сам так никогда не делал, но может нужно сначала сделать extractAttributes? А потом их модифицировать для новой feature? Еще что-то не вижу commit'а обратно на WFS.

Re: заполнение атрибутов OpenLayers-WFS

Добавлено: 18 апр 2009, 18:35
graver
extract задал в true
как вытащить из него гмл не знаю.
так объекты он создает, но ,увы, заполняет только геометрические поля. информационные оставляет без внимания.

сейчас попробовал работать с mysql.. пока что трудность в сохранении в бд новых объектов, созданных в опенлаерсах

Re: заполнение атрибутов OpenLayers-WFS

Добавлено: 18 апр 2009, 19:35
graver
из того что реализовал
feature.geometry дает результат в виде wkb, который после некоторго дополнения можно записать в мускул.
поэтому наличие транзакций в пространственном мускуле не нужно. возможно это извращение, но ajax и вот этот вот подход позволят вывернутся))

Re: заполнение атрибутов OpenLayers-WFS

Добавлено: 18 апр 2009, 21:04
Максим Дубинин
хм, но это уже не WFS получается? я правильно понял?
получаете вы данные по WFS из шейпа, а сохраняете в MySQL, так?

Re: заполнение атрибутов OpenLayers-WFS

Добавлено: 18 апр 2009, 21:19
graver
да, получается так
но мне важно выполнение фукционала.

на данный момент возникла проблема с разными доменами, а именно :
имеется денвер, имеется геосервер
оба они запускаются на 127.0.0.1
с различием в портах 80 и 8080 соответственно.
возникает проблема, которая заключается в том, что геосервер не дает данные на 127.0.0.1:80.
мне не суть важно на каком сервере разместить основной сайт, но я в этом новичок и мне немного непонятно как заставить геосервер выполнять php скрипты. в таком случае я переношу сайт на геосервер.
другого решения пока не нашел.
кто как совмещал эти два монстра и как их в таком случае настроить?