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

Перестала рисоваться линия на карте

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2
RSS
Перестала рисоваться линия на карте, mapViewUserObject
 
Цитата
Andrey Gheleznyakov написал:
В принципе и это сработает (первые байты одинаковые), но если объявляете Maptype.IMG_LINE, то для наглядности, лучше использовать струтуру TIMGLINE = packed record     // (128) ЛИНИЯ   Color : TColor;        // Цвет линии (COLORREF)   Thick : integer;       // Толщина линииend;
Начинает проясняться.
Т.е. правильно будет так:

Мы объявили BlackLine                 : TPAINTPARM;             // Вид контура фрагмента на экране

BlackLine.Image := Maptype.IMG_LINE;
BlackLine.Parm  := @ImageLine;
BlaclLine.Mode  := R2_COPYPEN;  // R2_XORPEN;

Заполняем ImageLine                 : Maptype.TIMGLINE;      // Описание пунктирной линии (контур фрагмента)

Color := $00F0F0F0; // black
Thick := 250;       // mkm

Объявляем  Data                           : TPLACEDATA;
Заполняем Data Значениями
Data.Points:=@points;
Data.PolyCounts:=@SelectPoints;
Data.Count:=1;

Этот массив
points[SelectPoint].X := xx;
points[SelectPoint].Y := yy;
заполняется по каждому клику мыши координатами в метрической системе PP_PLANE

с помощью компонента MapPoint1
координаты нормальные в метрах


SelectPoint номер точки вычисляется по клику мыши на карте
SelectPoints количество обработанных таким способом точек

По каждому клику мыши затем рисуется линия
MapTopLeft.X:=form_main.mvMap.MapLeft;
MapTopLeft.Y:=form_main.mvMap.MapTop;
form_main.mvMap.ConvertMetric(MapTopLeft.X, MapTopLeft.Y, PP_PICTURE, PP_PLANE);
mapViewUserObject(form_main.mvMap.MapHandle,form_main.mvMap.Handle, MapTopLeft, BlueLine, Data, integer(PP_PLANE));

Есть ошибки в моем понимание этого процесса?
Изменено: Сергей Викторович - 23.04.2021 15:17:58
 
Thick := 250; это меньше пиксела. Используйте константу  MKMINPIX * к-во пикселов;

Рисоваться линия должна не только по каждому клику мышки, но на после каждой отрисовки обласnи карты в MapView
 
У Вас ошибка в указании системы координат.
В функции mapViewUserObject(mvMap.MapHandle,mvMap.Handle, MapTopLeft, BlackLine, Data, integer(PP_MAP));
Не integer(PP_MAP), а cPP_MAP, так как используется обозначение системы координат ГИС-ядра, а не компонентов GIS ToolKit.
 
 
Да, теперь все хорошо.
Спасибо.
Изменено: Сергей Викторович - 26.04.2021 12:43:32
Страницы: Пред. 1 2
Читают тему (гостей: 1)



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

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