Страница 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
Измените название топика и на разные вопросы создавайте отдельные темы.