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

Масштабирование карты колесом мыши (MapScreen)

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Масштабирование карты колесом мыши (MapScreen)
 
Приветствую Вас, господа разработчики.
В связи с появившимися проблемами с компонентом MapView, а именно при переносе или перерисовки группы объектов большие лаги или исчезновения объектов
я решил сменить MapView на MapScreen.
И сразу проблема с масштабированием карты колесом мыши, представленный ниже код отлично работал с MapView, а вот с MapScreen все улетает.)))

Пишу на C# с использованием GisToolKit ActivX Free 14.0.0.1

Мой код:

private void axaxcMapView1_MouseWheel(object sender, MouseEventArgs e)
       {
           int numberOfTextLinesToMove = e.Delta * SystemInformation.MouseWheelScrollLines / 120;
           int newScale;
           if (numberOfTextLinesToMove > 0) newScale = (int)(MapScreen.ViewScale / 1.5);
           else newScale = (int)(MapScreen.ViewScale * 1.5);
           double metersX = mouseX + MapScreen.MapLeft;
           double metersY = mouseY + MapScreen.MapTop;
                   
           // Масштабирование с установкой точки масштабирования в центр экрана
           axMapPoint axaxMapPoint = new axMapPoint();
           MapPoint.cMapView = MapScreen.C_CONTAINER;
           MapPoint.PlaceInp = TxPPLACE.PP_PICTURE;
           MapPoint.SetPoint(metersX, metersY);
           MapScreen.ScaleInPoint(newScale, axaxMapPoint);
       }
 
Проверим. А "улетает" - это сдвигается не туда, не масштабируется?
 
Проверила  масштабирование MouseWheel + axMapScreen с помощью примера из инсталляции - \\GisToolActive14\Example\MS2012\C#\Traffic\ .

// масштабирование
private void onMouseWheel(object sender, MouseEventArgs e)
{
if (!axMapScreen.Active) return;
//если курсор над MapScreen
if ((e.X >= axMapScreen.Left) && (e.X <= axMapScreen.Left + axMapScreen.Width) &&
(e.Y >= axMapScreen.Top) && (e.Y <= axMapScreen.Top + axMapScreen.Height))
{
int scale = e.Delta * SystemInformation.MouseWheelScrollLines / 120;
// вычислим нужный центр карты
MapPoint.PlaceInp = axGisToolKit.TxPPLACE.PP_PICTURE;
MapPoint.SetPoint(axMapScreen.MapLeft + e.X, axMapScreen.MapTop + e.Y);
// вычислим новый масштаб
int iScale = axMapScreen.ViewScale;
if (scale < 0)
iScale = iScale * 2;
else
if (scale > 0)
iScale = iScale / 2;
axGisToolKit.axMapPoint IPnt = MapPoint.C_CONTAINER;
axMapScreen.ScaleInPoint(iScale, IPnt);

}
}
Проблему с масштабированием карты колесом мыши не смогла повторить..
 
Нашёл ошибку я MapPoint.PlaceInp не там объявил
Спасибо за пример.  
Страницы: 1
Читают тему (гостей: 1)



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

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