Задача:
1. Есть слой "События"
2. Новая точка заводится по клику в выбранной точке карты
3. Необходимо дать возможность оператору мышкой скорректировать выбранную точку события
Первый вариант , который пришел в голову-
1. По клику заводим element(графический объект)
2. Стандартными средствами можно точно установить его местоположение
3. Затем по какому-то событию уже заводится запись в таблице , соотвествующей слою, т.е.
создается новое свойство (feature)
Недостаток такого подхода - если придется менять точку события уже ранее созданного свойства, то этот
подход уже не годится.
Вопрос.
Можно ли также двигать символ свойства, как и символ элемента?
Спасибо for advance!
Как подвигать feature на mapControl?
-
- Завсегдатай
- Сообщения: 423
- Зарегистрирован: 15 май 2010, 06:13
- Репутация: 7
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Как подвигать feature на mapControl?
Объясните:
1) Что такое символ свойства и что такое символ элемента
2) Какой порядок действий у оператора должен быть по вашему мнению для изменения чего-то, включая диалоги и иные "всплывающие" предупреждения.
Грамотная постановка задачи - на половину ее решение.
1) Что такое символ свойства и что такое символ элемента
2) Какой порядок действий у оператора должен быть по вашему мнению для изменения чего-то, включая диалоги и иные "всплывающие" предупреждения.
Грамотная постановка задачи - на половину ее решение.
-
- Завсегдатай
- Сообщения: 423
- Зарегистрирован: 15 май 2010, 06:13
- Репутация: 7
Re: Как подвигать feature на mapControl?
В объектной модели понятие элемента:1) Что такое символ свойства и что такое символ элемента
Map elements
Elements are used in the map or the page layout to display basic shapes, text labels, and so on. In page layout, they also display marginalia. Elements are useful to display on or around the map information that is not directly conveyed by the geographic features.
При создании в слое "События" нового элемента на первом шаге символ , соотвествующий типу события положить на карту, а затем уже просто ввести параметры события - я это делаю в отдельном классе базы данных.
Для "отметки " события на карте, можно либо сразу выполнить процедуру добавления в таблицу событий нового элемента. К таблице привязан соответствующий слой на карте и при обновлении новое событие будет видно на карте. Но пока не совсем ясно как в этом случае редактировать положение символа на карте.
С графическим элементом, описанным выше работать в этом плане легче - он и создается и редактируется и двигается стандартными средствами слоя графики
1.Выбираем инструменты графики,
2. рисуем окружность, например.
3. Выделяем элемент
4. Перемещаем в новое месть.
Под этим я имел ввиду перемещение "символа элемента".
С другой стороны, объекту featureLayer соответствует некоторый a renderer for a layer, который обеспечивает отображение свойств на карте с помощью символов.
Вот эти символы я есть необходимость подвигать - если необходимо уточнить координаты события.
1. Оператор кликает на символ слоя2) Какой порядок действий у оператора должен быть по вашему мнению для изменения чего-то, включая диалоги и иные "всплывающие" предупреждения.
2. Из контекстного меню или кнопкой входит в режим перемещения символа.
3. Перемещает символ куда нужно (далее нужно будет сделать и клонирование символа в несколько точек)
4. Выходит из режима редактирования.
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Как подвигать feature на mapControl?
То что вы описали - повтор функционала Редактора в ArcGIS. Причем редактор еще позволяет проверять топологию, прилипание делать, шаги отмены и многое другое. А графические элементы, как вы правильно процитировали "Elements are useful to display on or around the map information that is not directly conveyed by the geographic features"
Т.е. это не географическая информация, а просто некоторая графика (экранная).
Поэтому, если вы делаете свой "велосипед" надо четко понимать, для чего вы его делаете, какие преимущества перед стандартными средствами он дает и т.д.
Я так понимаю вы пошли путем custom renderer, а теперь хотите функционал, как минимум custom feture class.
Т.е. это не географическая информация, а просто некоторая графика (экранная).
Поэтому, если вы делаете свой "велосипед" надо четко понимать, для чего вы его делаете, какие преимущества перед стандартными средствами он дает и т.д.
Я так понимаю вы пошли путем custom renderer, а теперь хотите функционал, как минимум custom feture class.
-
- Завсегдатай
- Сообщения: 423
- Зарегистрирован: 15 май 2010, 06:13
- Репутация: 7
Re: Как подвигать feature на mapControl?
Не совсем так. Мне нужен функционал чем проще, тем лучше. В связи с жесткими ограничениями по времени.
1. Сейчас я делаю слой из .lyr файла, а его пока неясно можно ли редактировать.
2. Я работаю не в desktop , а пишу свое приложение.
3. Учитывая условия в которых работают с этой программой , функционал должен быть максимально прост. В данной задаче - просто подредактировать положение символа, обозначающего положение события. Редактор, по крайней мере в исходном виде, излишне сложен, как мне представляется.
Идеальный вариант - повторить функционал для изменения положения элемента. Ничего лишнего. Просто кликнуть на символ , и подвинуть его. Для пользователя , естественно, по барабану , что это feature renderer или map element.
Прикладная задача оператора - в условиях ограничений по времени зафиксировать положение события, и, возможно, иметь возможность его подкорректировать. Речь не идет о работе с картографической информацией в объеме редактора. Работа ведется с СОБЫТИЕМ , а не с картой. Параметры события создаются и редактируются в отдельных классах , связанных с работой с базой данных. (mysql, да и функционал работы с картой, по видимому я перенесу на qgis)
Безусловно реализовать такой функционал возможно, но, как раз не хочется изобретать велосипед, по возможности. Нужно нечто подобное drug and drop. Мы же знаем символ, на который кликнули, дальше отслеживать перемещение мышки и менять x,y символа соответственно.
Другой вариант меньше нравится , но тоже возможен:
Оператор создает новый элемент, в новом положении события - а потом по какому-то действию (например, кликом на кнопке панели) - "перемещает" старый символ в новое положение, замещая "элемент" - т.е. координаты элемента переносятся в символ, "элемент" стирается и active view перерисовывается.
В этом случае не нужно самому делать drug and drop. Хотя этот вариант приходит на ум исключительно из-за ограничений по времени. drag and drop символа - это правильно. Можно обезопасить это действие включением специального режима ...
1. Сейчас я делаю слой из .lyr файла, а его пока неясно можно ли редактировать.
2. Я работаю не в desktop , а пишу свое приложение.
3. Учитывая условия в которых работают с этой программой , функционал должен быть максимально прост. В данной задаче - просто подредактировать положение символа, обозначающего положение события. Редактор, по крайней мере в исходном виде, излишне сложен, как мне представляется.
Идеальный вариант - повторить функционал для изменения положения элемента. Ничего лишнего. Просто кликнуть на символ , и подвинуть его. Для пользователя , естественно, по барабану , что это feature renderer или map element.
Прикладная задача оператора - в условиях ограничений по времени зафиксировать положение события, и, возможно, иметь возможность его подкорректировать. Речь не идет о работе с картографической информацией в объеме редактора. Работа ведется с СОБЫТИЕМ , а не с картой. Параметры события создаются и редактируются в отдельных классах , связанных с работой с базой данных. (mysql, да и функционал работы с картой, по видимому я перенесу на qgis)
Безусловно реализовать такой функционал возможно, но, как раз не хочется изобретать велосипед, по возможности. Нужно нечто подобное drug and drop. Мы же знаем символ, на который кликнули, дальше отслеживать перемещение мышки и менять x,y символа соответственно.
Другой вариант меньше нравится , но тоже возможен:
Оператор создает новый элемент, в новом положении события - а потом по какому-то действию (например, кликом на кнопке панели) - "перемещает" старый символ в новое положение, замещая "элемент" - т.е. координаты элемента переносятся в символ, "элемент" стирается и active view перерисовывается.
В этом случае не нужно самому делать drug and drop. Хотя этот вариант приходит на ум исключительно из-за ограничений по времени. drag and drop символа - это правильно. Можно обезопасить это действие включением специального режима ...
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Как подвигать feature на mapControl?
Я же говорил, что грамотная постановка вопроса, половина его решения:
При движении будет генериться метод http://edndoc.esri.com/arcobjects/9.2/C ... seMove.htm
в нем перерисовку и делайте.
Создайте свой инструмент как описано тут (там тоже ссылки): viewtopic.php?f=16&t=9180#p54079Tereha писал(а):Нужно нечто подобное drug and drop. Мы же знаем символ, на который кликнули, дальше отслеживать перемещение мышки и менять x,y символа соответственно.
При движении будет генериться метод http://edndoc.esri.com/arcobjects/9.2/C ... seMove.htm
в нем перерисовку и делайте.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость