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

Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 83
- Зарегистрирован: 19 мар 2011, 18:15
- Репутация: 0
Re: Добавление объекта к выделению используя OpenLayers
Буду честен, я сам начал пользоваться gxp неделю назад. Могу описать как построить Вьювер с панельками, инструментами, слоями и собственно картой. Но как видите по моему вопросу высший пилотаж мне пока недоступен. Но помочь готов.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Добавление объекта к выделению используя OpenLayers
Этого более чем достаточно!kliver писал(а):Буду честен, я сам начал пользоваться gxp неделю назад. Могу описать как построить Вьювер с панельками, инструментами, слоями и собственно картой.
Насчёт программного выделения фич - у контрола SelectFeature для этого есть 2 метода: select и unselect, на вход нужно подать саму фичу.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 83
- Зарегистрирован: 19 мар 2011, 18:15
- Репутация: 0
Re: Добавление объекта к выделению используя OpenLayers
Я тоже нашел эти методы, но я не совсем понимаю как выбрать требуемый объект. Не могли бы вы привести пример селектом в котором объект выбирается по какому-нибудь его атрибуту.
Если мой уровень устраивает, то постараюсь набрать текст за два-три дня.
Если мой уровень устраивает, то постараюсь набрать текст за два-три дня.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Добавление объекта к выделению используя OpenLayers
Супер! Конечно, набирайте.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.
-
- Участник
- Сообщения: 83
- Зарегистрирован: 19 мар 2011, 18:15
- Репутация: 0
Re: Добавление объекта к выделению используя OpenLayers
Спасибо, это то что нужно. Осталось всего ничего поправить класс в gxp.
-
- Участник
- Сообщения: 83
- Зарегистрирован: 19 мар 2011, 18:15
- Репутация: 0
Re: Добавление объекта к выделению используя OpenLayers
Все оказалось не так просто. После долгих попыток я выяснил, что после изменения каких-либо библиотек томкат нужно перезапускать. Но это мелочи. Главное вот, что: FeatureEditor работает с WMS слоем, а getFeaturesByAttribute относится к вектору. Что же делать?
И с текстом я немного наврал. Доступ к компьютеру у меня будет только с пятницы, поэтому и что то сделать смогу только в выходные.
И с текстом я немного наврал. Доступ к компьютеру у меня будет только с пятницы, поэтому и что то сделать смогу только в выходные.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Добавление объекта к выделению используя OpenLayers
Я не знаю, что такое FeatureEditor, но WMS в принципе не подразумевает никакого редактирования, может WFS?
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 83
- Зарегистрирован: 19 мар 2011, 18:15
- Репутация: 0
Re: Добавление объекта к выделению используя OpenLayers
Немного не так назвал gxp.featureEditor. С этим я разобрался, в процессе своей работы gxp создает WFS из WMS и поэтому getFeaturesByAttribute() работает. Делаю вот так
В алерте получаю 1 но объект на карте не выбирается. Может я select неверно приминяю? Как в средствах проверки узнать сколько элементов сейчас находится в селекте?
Код: Выделить всё
var ffff = featureManager.featureLayer.getFeaturesByAttribute("id",'123');
alert(ffff.length);
this.selectControl.select(ffff[0]);
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Добавление объекта к выделению используя OpenLayers
Свойство selectedFeatures.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 83
- Зарегистрирован: 19 мар 2011, 18:15
- Репутация: 0
Re: Добавление объекта к выделению используя OpenLayers
Ну вот, в selectedFeatures есть 1 объект. Но на карте это не отображается.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Добавление объекта к выделению используя OpenLayers
Может стиль отрисовки выделенных объектов не настроен?
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 83
- Зарегистрирован: 19 мар 2011, 18:15
- Репутация: 0
Re: Добавление объекта к выделению используя OpenLayers
Если про на карте выбирать обьекты то они отображаются или если насильно заставить то есть вызвать метод activate(). Но он гючит и показывает их выделенными только пока мои алерты высвечиваются. Запутанная ситауция с этим gxp.
-
- Участник
- Сообщения: 83
- Зарегистрирован: 19 мар 2011, 18:15
- Репутация: 0
Re: Добавление объекта к выделению используя OpenLayers
Идея использования gxp быстро накрылась медным тозом. В частности после того как я получил ответ на этот вопрос вот здесь https://getsatisfaction.com/opengeo/top ... tioncolumn .
Ну что ж придется возвращатся к OL и у меня такой вопрос. Как вызвать какой-нибудь контрол по нажатию на кнопку? Ну то есть я не хочу добавлять контролы на панель карты а хочу раскидать их по кнопкам на странице.
Ну что ж придется возвращатся к OL и у меня такой вопрос. Как вызвать какой-нибудь контрол по нажатию на кнопку? Ну то есть я не хочу добавлять контролы на панель карты а хочу раскидать их по кнопкам на странице.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей