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

Умное масштабирование

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3
RSS
Умное масштабирование, масштабирование участка над которым курсор мышки
 
Цитата
Andrey Gheleznyakov написал:
Origin это экземпляр класса TCompMapPoint и его надо создавать прежде чем использовать.Положите на форму компонент TMapPoint. В нем уже будет настроенный экземпляр TCompMapPoint .
Да, так и хотел вначале сделать,
но затем решил не отходить от первоисточника.

Теперь так:
procedure Tform_main.mvMapMouseWheel(Sender: TObject; Shift: TShiftState;
 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
Var
// tp1 : TPoint;
// Origin : TCompMapPoint;
fX,fY : double;
X9,Y9 : double;
begin

ShowMessage ('1');

X9 := mvMap.MapLeft;

ShowMessage ('X9 = '+FloatToStr(X9));

Y9 := mvmap.MapTop;

ShowMessage ('Y9 = '+FloatToStr(Y9));

MapPoint1.SetPoint(X9,Y9); // Здесь ошибка в ходе выполнения программы не выдается, все хорошо

ShowMessage ('2');

form_main.mvMap.ScaleInPoint(Round(form_main.mvMap.ViewScale*2), MapPoint1); // А здесь выдает ошибку уже при компиляции: не совместимые типы TCompMapPoint и TMapPoint
// Мне нужно, чтобы карта при масштабировании, всегда масштабировалась, устанавливая в центр карты ту точку карты, в которой сейчас находится указатель мыши

{
With form_main.mvMap.ScreenToClient(MousePos) do MapPoint1.SetPoint(X9+form_main.mvMap.MapLeft,Y9+form_main.mvMap.MapTop);
 case Sign(WheelDelta)of
   -1:
   form_main.mvMap.ScaleInPoint(Round(form_main.mvMap.ViewScale*2), MapPoint1);
   +1:
   form_main.mvMap.ScaleInPoint(Round(form_main.mvMap.ViewScale/2), MapPoint1);
 end;
}

 MapPoint1.GetPoint(fX, fY);
 Handled:= True;
 
Для масштабирования с помощью колеса мыши можно воспользоваться компонентом MapManager
 
Цитата
Andrey Gheleznyakov написал:
Для масштабирования с помощью колеса мыши можно воспользоваться компонентом MapManager
Прочитал Руководство по компоненту MapManager
Добавил на форму, указал mvMap
Не совсем понятно когда ему вызвать метод StartAction
Сделал так:
procedure Tform_main.N34Click(Sender: TObject);
begin
ShowMessage ('Активируем MapManager1');

MapManager1.StartAction;

ShowMessage ('Активировали MapManager1');
end;

В событии

procedure Tform_main.mvMapMouseWheel(Sender: TObject; Shift: TShiftState;
 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin

end;

Убрали все совсем

Результат, при прокручивании колеса мыши, карта не масштабируется.

//
Нам бы пока лучше подошел бы предыдущий код.
Похоже вместо TMapPoint лучше использовать пока TCompMapPoint;
Действительно в коде нет его создания.
Просьба подсказать как его создать?
И какие еще ошибки в коде,
чтобы добиться масштабирования карты с перемещением ее центра
в точку указателя мыши?
 
Из файла справки по TCompMapPoint
"Класс координат карты.

"Класс обеспечивает пересчет координат между различными  системами и осуществляет доступ к  координатам объекта карты. Экземпляры класса создаются автоматически и доступны только  через свойства других классов."

Для TMapPoint

"Компонент обеспечивает пересчет координат между различными
системами. Для пересчета координат используется экземпляр класса TCompMapPoint, который в компоненте создается автоматически."
 
 
Посмотрите пример MapManager, в котором показа работа с колесом мыши для масштабирования.
 
Цитата
Andrey Gheleznyakov написал:
Посмотрите пример MapManager, в котором показа работа с колесом мыши для масштабирования.
Яснее не стало.
Кручу колесо мыши, карта не масштабируется.
Может еще что-то нужно сделать?
1.PNG (22.95 КБ)
2.PNG (20.22 КБ)
Изменено: Сергей Викторович - 18.02.2022 14:59:55
 
Из описания примера

Для масштабирования изображения карты используются:
>     -  Увеличить изображение;
<      -  Уменьшить изображение;
Ctrl + колесо мыши    -  Уменьшить или увеличить изображение;
=                     -  Отобразить карту в ее исходном масштабе;
Ctrl + W              -  Отобразить всю карту в окне.

Из файла -справки по компоненту TMapManager

Компонент TMapManager предназначен для управления картой c помощью клавиатуры и
мыши и позволяет выполнять масштабирование, перемещение изображения карты,
просмотр фотографий в формате JPEG с координатной привязкой к местности.

Для масштабирования изображения карты используются:

>     -  Увеличить изображение;

<      -  Уменьшить изображение;

Ctrl + колесо мыши    -  Уменьшить или увеличить  изображение;

=                                  -  Отобразить карту в ее  исходном масштабе;

Ctrl + W                       -  Отобразить всю карту в  окне.

Для перемещение курсора используются:

Стрелки              -  Перемещение курсора по карте на один  пиксел;

Shift + Стрелки   -  Ускоренное перемещение курсора по карте  (по 8 пикселов).

Для перемещения изображения карты используется:

Нажатие левой кнопки мыши + перемещение мыши -  Перемещение  экрана в сторону движения курсора мыши.

Страницы: Пред. 1 2 3
Читают тему (гостей: 1)



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

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