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

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

Добавлено: 17 июл 2012, 11:21
kliver
День добрый.

Задался целью редактирования слоев с помощью ОпенЛауерс. Но дело в том, что использую не чистый ОЛ, а gxp. Собственно редактирование было сделать нетрудно добавив FeatureManager и FeatureEditor на панельуправления. Теперь другая задача. Если использовать вышеуказанные инструменты, то после активизации кнопки редактирования объекта нужно этот объект еще и выбрать на карте. А я же хочу, что бы объект нужно было выбирать в списке объектов и сразу же включалось редактирование объекта. За выбор объекта соответственно отвечает контрол OpenLayers.Control.SelectFeature.
Дак вот вопрос как выбирать объекты на карте программно?

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

Добавлено: 17 июл 2012, 11:41
Denis Rykov
Отлично, нашёлся человек, который использует Gxp :) Я как-то хотел написать заметку по этой штуки, но руки не доходят, да и честно сказать на практике совсем с ним не работал, так поставил "на посмотреть". Не могли бы вы используя документацию и личный опыт таки дописать вот эту статью? Конкретно по вашему вопросу отпишусь чуть позже.

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

Добавлено: 17 июл 2012, 11:58
kliver
Буду честен, я сам начал пользоваться gxp неделю назад. Могу описать как построить Вьювер с панельками, инструментами, слоями и собственно картой. Но как видите по моему вопросу высший пилотаж мне пока недоступен. Но помочь готов.

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

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

Насчёт программного выделения фич - у контрола SelectFeature для этого есть 2 метода: select и unselect, на вход нужно подать саму фичу.

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

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

Если мой уровень устраивает, то постараюсь набрать текст за два-три дня.

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

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

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

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

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

map.controls[4].select(map.layers[1].getFeaturesByAttribute('title', 'GIS-LAB')[0])

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

Добавлено: 17 июл 2012, 13:25
kliver
Спасибо, это то что нужно. Осталось всего ничего поправить класс в gxp.

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

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

И с текстом я немного наврал. Доступ к компьютеру у меня будет только с пятницы, поэтому и что то сделать смогу только в выходные.

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

Добавлено: 18 июл 2012, 10:46
Denis Rykov
Я не знаю, что такое FeatureEditor, но WMS в принципе не подразумевает никакого редактирования, может WFS?

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

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

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

var ffff = featureManager.featureLayer.getFeaturesByAttribute("id",'123');
							alert(ffff.length);
							this.selectControl.select(ffff[0]);
В алерте получаю 1 но объект на карте не выбирается. Может я select неверно приминяю? Как в средствах проверки узнать сколько элементов сейчас находится в селекте?

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

Добавлено: 18 июл 2012, 11:18
Denis Rykov
Свойство selectedFeatures.

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

Добавлено: 18 июл 2012, 11:21
kliver
Ну вот, в selectedFeatures есть 1 объект. Но на карте это не отображается.

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

Добавлено: 18 июл 2012, 11:53
Denis Rykov
Может стиль отрисовки выделенных объектов не настроен?

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

Добавлено: 18 июл 2012, 12:37
kliver
Если про на карте выбирать обьекты то они отображаются или если насильно заставить то есть вызвать метод activate(). Но он гючит и показывает их выделенными только пока мои алерты высвечиваются. Запутанная ситауция с этим gxp.

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

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