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

Re: Вопрос по GeoServer+OpenLayers

Добавлено: 24 авг 2011, 05:20
Kris
В примере на openlayers.org встретилась интересная возможность: получение координат вершин нарисованного многоугольника.

Хочу получить доступ к координатам вершин последнего нарисованного многоугольника. Как бы к ним обратиться?

А еще как можно удалить нарисованный многоугольник?

Re: Вопрос по GeoServer+OpenLayers

Добавлено: 24 авг 2011, 07:02
Denis Rykov
Чтобы получить доступ к последнему нарисованному объекту, просто вешаем обработчик на событие "featureadded" контрола OpenLayers.Control.DrawFeature. По приведенной вами ссылке данная задача решается добавлением следующих строк в функцию init():

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

drawCtrl = map.getControlsByClass('OpenLayers.Control.DrawFeature')[2];
drawCtrl.events.register("featureadded", drawCtrl, function(e) {
    console.log(geojson.write(e.feature, true));
    console.log(e.feature.geometry.getVertices());
}); 
Для удаления объекта используется метод removeFeatures векторного слоя. Пример удаления последнего объекта в приведенном вами примере:

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

map.layers[0].removeFeatures(map.layers[0].features[map.layers[0].features.length-1]) 

Re: Вопрос по GeoServer+OpenLayers

Добавлено: 24 авг 2011, 07:27
Kris
Супер теперь могу получить координаты, Спасибо!
Удаление пока не проверял, как закончу с обработкой координат займусь удалением.

Re: Вопрос по GeoServer+OpenLayers

Добавлено: 25 авг 2011, 08:14
Kris
У меня есть код, позволяющий при клике на точку, получить для нее инфу:

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

map.events.register('click', map, function (e) {
                    document.getElementById('nodelist').innerHTML = "Загрузка... подождите...";
                    var params = {
                        REQUEST: "GetFeatureInfo",
                        EXCEPTIONS: "application/vnd.ogc.se_xml",
                        BBOX: map.getExtent().toBBOX(),
                        X: e.xy.x,
                        Y: e.xy.y,
                        INFO_FORMAT: 'text/html',
                        QUERY_LAYERS: map.layers[2].params.LAYERS,
                        FEATURE_COUNT: 50,
                        Layers: 'i###########################',
                        Styles: '',
                        Srs: 'EPSG:4326',
                        WIDTH: map.size.w,
                        HEIGHT: map.size.h,                        
                        format: format};
                    if(cql_query)
                    { params.CQL_FILTER=cql_query; }
                    OpenLayers.loadURL("###################", params, this, setHTML, setHTML);
                    OpenLayers.Event.stop(e);
                });
и

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

function setHTML(response){
			var http; 
			if (response.responseText != "") {
				document.getElementById('nodelist').innerHTML = response.responseText;
			}
			else
			{
				document.getElementById('nodelist').innerHTML = '<html> <body>Данные не могут быть загружены</body> </html>';				
			}
        };
А мне нужно получить информацию о всех объектах выделенных в области(многоугольник). В коде отсев идет по координатам клика .
Можно ли указать в параметрах отсева координаты области?

Re: Вопрос по GeoServer+OpenLayers

Добавлено: 25 авг 2011, 08:47
Mavka
Измените название топика и на разные вопросы создавайте отдельные темы.