Добавление объекта к выделению используя OpenLayers

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
kliver
Участник
Сообщения: 83
Зарегистрирован: 19 мар 2011, 18:15
Репутация: 0

Добавление объекта к выделению используя OpenLayers

Сообщение kliver »

День добрый.

Задался целью редактирования слоев с помощью ОпенЛауерс. Но дело в том, что использую не чистый ОЛ, а gxp. Собственно редактирование было сделать нетрудно добавив FeatureManager и FeatureEditor на панельуправления. Теперь другая задача. Если использовать вышеуказанные инструменты, то после активизации кнопки редактирования объекта нужно этот объект еще и выбрать на карте. А я же хочу, что бы объект нужно было выбирать в списке объектов и сразу же включалось редактирование объекта. За выбор объекта соответственно отвечает контрол OpenLayers.Control.SelectFeature.
Дак вот вопрос как выбирать объекты на карте программно?
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Добавление объекта к выделению используя OpenLayers

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

Отлично, нашёлся человек, который использует Gxp :) Я как-то хотел написать заметку по этой штуки, но руки не доходят, да и честно сказать на практике совсем с ним не работал, так поставил "на посмотреть". Не могли бы вы используя документацию и личный опыт таки дописать вот эту статью? Конкретно по вашему вопросу отпишусь чуть позже.
Spatial is now, more than ever, just another column- The Geometry Column.
kliver
Участник
Сообщения: 83
Зарегистрирован: 19 мар 2011, 18:15
Репутация: 0

Re: Добавление объекта к выделению используя OpenLayers

Сообщение kliver »

Буду честен, я сам начал пользоваться gxp неделю назад. Могу описать как построить Вьювер с панельками, инструментами, слоями и собственно картой. Но как видите по моему вопросу высший пилотаж мне пока недоступен. Но помочь готов.
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Добавление объекта к выделению используя OpenLayers

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

kliver писал(а):Буду честен, я сам начал пользоваться gxp неделю назад. Могу описать как построить Вьювер с панельками, инструментами, слоями и собственно картой.
Этого более чем достаточно!

Насчёт программного выделения фич - у контрола SelectFeature для этого есть 2 метода: select и unselect, на вход нужно подать саму фичу.
Spatial is now, more than ever, just another column- The Geometry Column.
kliver
Участник
Сообщения: 83
Зарегистрирован: 19 мар 2011, 18:15
Репутация: 0

Re: Добавление объекта к выделению используя OpenLayers

Сообщение kliver »

Я тоже нашел эти методы, но я не совсем понимаю как выбрать требуемый объект. Не могли бы вы привести пример селектом в котором объект выбирается по какому-нибудь его атрибуту.

Если мой уровень устраивает, то постараюсь набрать текст за два-три дня.
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Добавление объекта к выделению используя OpenLayers

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

kliver писал(а):Если мой уровень устраивает, то постараюсь набрать текст за два-три дня.
Супер! Конечно, набирайте.

getFeaturesByAttribute и ещё пара тройка методов.

Например, откройте страницу и в консоли (firebug, chrome dev tool) наберите команду:

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

map.controls[4].select(map.layers[1].getFeaturesByAttribute('title', 'GIS-LAB')[0])
Spatial is now, more than ever, just another column- The Geometry Column.
kliver
Участник
Сообщения: 83
Зарегистрирован: 19 мар 2011, 18:15
Репутация: 0

Re: Добавление объекта к выделению используя OpenLayers

Сообщение kliver »

Спасибо, это то что нужно. Осталось всего ничего поправить класс в gxp.
kliver
Участник
Сообщения: 83
Зарегистрирован: 19 мар 2011, 18:15
Репутация: 0

Re: Добавление объекта к выделению используя OpenLayers

Сообщение kliver »

Все оказалось не так просто. После долгих попыток я выяснил, что после изменения каких-либо библиотек томкат нужно перезапускать. Но это мелочи. Главное вот, что: FeatureEditor работает с WMS слоем, а getFeaturesByAttribute относится к вектору. Что же делать?

И с текстом я немного наврал. Доступ к компьютеру у меня будет только с пятницы, поэтому и что то сделать смогу только в выходные.
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Добавление объекта к выделению используя OpenLayers

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

Я не знаю, что такое FeatureEditor, но WMS в принципе не подразумевает никакого редактирования, может WFS?
Spatial is now, more than ever, just another column- The Geometry Column.
kliver
Участник
Сообщения: 83
Зарегистрирован: 19 мар 2011, 18:15
Репутация: 0

Re: Добавление объекта к выделению используя OpenLayers

Сообщение kliver »

Немного не так назвал gxp.featureEditor. С этим я разобрался, в процессе своей работы gxp создает WFS из WMS и поэтому getFeaturesByAttribute() работает. Делаю вот так

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

var ffff = featureManager.featureLayer.getFeaturesByAttribute("id",'123');
							alert(ffff.length);
							this.selectControl.select(ffff[0]);
В алерте получаю 1 но объект на карте не выбирается. Может я select неверно приминяю? Как в средствах проверки узнать сколько элементов сейчас находится в селекте?
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Добавление объекта к выделению используя OpenLayers

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

Свойство selectedFeatures.
Spatial is now, more than ever, just another column- The Geometry Column.
kliver
Участник
Сообщения: 83
Зарегистрирован: 19 мар 2011, 18:15
Репутация: 0

Re: Добавление объекта к выделению используя OpenLayers

Сообщение kliver »

Ну вот, в selectedFeatures есть 1 объект. Но на карте это не отображается.
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Добавление объекта к выделению используя OpenLayers

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

Может стиль отрисовки выделенных объектов не настроен?
Spatial is now, more than ever, just another column- The Geometry Column.
kliver
Участник
Сообщения: 83
Зарегистрирован: 19 мар 2011, 18:15
Репутация: 0

Re: Добавление объекта к выделению используя OpenLayers

Сообщение kliver »

Если про на карте выбирать обьекты то они отображаются или если насильно заставить то есть вызвать метод activate(). Но он гючит и показывает их выделенными только пока мои алерты высвечиваются. Запутанная ситауция с этим gxp.
kliver
Участник
Сообщения: 83
Зарегистрирован: 19 мар 2011, 18:15
Репутация: 0

Re: Добавление объекта к выделению используя OpenLayers

Сообщение kliver »

Идея использования gxp быстро накрылась медным тозом. В частности после того как я получил ответ на этот вопрос вот здесь https://getsatisfaction.com/opengeo/top ... tioncolumn .
Ну что ж придется возвращатся к OL и у меня такой вопрос. Как вызвать какой-нибудь контрол по нажатию на кнопку? Ну то есть я не хочу добавлять контролы на панель карты а хочу раскидать их по кнопкам на странице.
Ответить

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя