На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Способ задания объекта

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1 2 След.
RSS
Способ задания объекта
 
Добрый день.

Подскажите пожалуйста, как сделать функционал, используя MAPAPI, аналогичный в Операторе, как "способ задания объекта":



я создаю объект на карте используя функцию mapRegisterObjectByKey, а далее добавляю объекту метрику в точках клика.

Можете привести пример, как например, создать площадной объект с неким кодом 'xxxxx' в форме окружности с радиусом 1 км, например, и в форме прямоугольника по 2 точкам для наглядности.

Заранее спасибо.
Изменено: Сергей - 22.10.2019 18:10:21 (Вставил картинку, как ссылку на внешнем ресурсе. Не понял, как вставить картинку напрямую.)
 
Здравствуйте.

Если сложно с примером, может скажете, в какую сторону посмотреть?

Спасибо.
 
Приветствую!

А зачем куда-то смотреть? Нужно просто запрограммировать функцию расчета точек окружности по заданному центру и радиусу (тут надо определиться, нужна окружность на изображении карты или на поверхности земли), и прямоугольника по двум точкам (или трем, в зависимости от того нужен строго горизонтальный прямоугольник или наклонный). Рассчитанными точками заполнить метрику объекта и сохранить его. И никуда смотреть не надо)

С уважением,
Матвеев П.В.
 
Цитата
Павел Матвеев написал:
Нужно просто запрограммировать функцию расчета точек окружности по заданному центру и радиусу
Т.е. нет такого функционала, чтобы создать какой-то площадной объект по ключу из классификатора и задать ему программно вид, например, окружность с таким-то радиусом?
Просто непонятно сколько точек надо для той же окружности, чтобы она выглядела как окружность на карте, а не как полигон.

Спасибо.
 
Приветствую!

Я не встречал в АПИ такого.
Количество точек экспериментально можно подобрать сколько требуется, а для созданного объекта задать сглаживание дополнительно.

С уважением,
Матвеев П.В.
 
Цитата
Павел Матвеев написал:
Я не встречал в АПИ такого.

День добрый.

Я предполагал, что может как-то используя параметры визуализации, такие как, например, IMGCIRCLE, где можно задать радиус. Но если так, то как это сделать - не пойму. Поэтому и хотел уточнить у разработчиков, как это делать. Самому рассчитывать точки метрики или через API это как-то можно сделать? Но ответа так пока и не прозвучало.

Спасибо.
 
Промахнулся веткой
Изменено: Владимир Егоров - 30.10.2019 20:39:36
 
Здравствуйте!

Прошу прощения за задержку с ответом.
Цитата
Сергей написал:
Можете привести пример, как например, создать площадной объект с неким кодом 'xxxxx' в форме окружности с радиусом 1 км, например, и в форме прямоугольника по 2 точкам для наглядности.
Общий подход в реализации конкретного способа нанесения состоит в том, чтобы предварительно выполнить построение метрики с помощью вспомогательной функции. Например, для построения метрики объекта в виде окружности можно использовать функцию mapBuildEllpse (mapapi.h):
Код
 // Построить эллипс по двум точкам и параметрам полуосей
 // Координаты точек в метрах в системе документа
 // centre - координаты центра эллипсоид в метрах на местности
 // bigaxis - большая полуось в метрах на местности
 // littleaxis - малая полуось в метрах на местности
 // angle - угол поворота большой полуоси в радианах против часовой стрелки
 //         от направления на восток
 // count - число точек метрики (от 16 до 128)
 // Создаваемому объекту присваивается признак отображения сплайном,
 // что позволяет минимизировать число точек метрики
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapBuildEllpse(HOBJ info, DOUBLEPOINT * center, double bigaxis, double littleaxis,
                                        double angle, long int count);
 
Цитата
Александр Савелов написал:
Общий подход в реализации конкретного способа нанесения состоит в том, чтобы предварительно выполнить построение метрики с помощью вспомогательной функции. Например, для построения метрики объекта в виде окружности можно использовать функцию mapBuildEllpse (mapapi.h):
Здравствуйте, Александр.

Спасибо за ответ.

Посмотрел в Операторе и заметил, что в зависимости от зума количество точек меняется(только в большую сторону, в меньшую не замечал, видел цифры 100 и 181).
Как это отслеживать, сколько точек метрики должно быть?

Спасибо!
 
Здравствуйте!

В стандартном диалоге нанесения объекта при построении метрики эллипса число точек метрики определяется путем произведения эмпирически подбираемого множителя и базового масштаба карты (функция mapGetMapScale, mapapi.h):
Код
// Запросить базовый масштаб карты
// hmap - идентификатор открытых данных
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetMapScale(HMAP hmap);
Страницы: 1 2 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности