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

Как правильно определять координаты по указателю мыши

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Как правильно определять координаты по указателю мыши
 
Здравствуйте, взял пример отслеживания координат из myfirst
Код
// x, y - в пикселях из QDMapView::SignalMouseMove(int x, int y, int modkeys)
void QGISWidget::updateCurrentCoordinates(int x, int y)
{
    HMAP mapHandle = map->GetMapHandle();
    int mapX, mapY;
    map->GetMapLeftTop(&mapX, &mapY);
    mapX += x;
    mapY += y;

    ppPicturePlane->SetPlaceIn(PP_PICTURE);
    ppPicturePlane->SetPlaceOut(PP_PLANE);
    ppPicturePlane->SetPoint(x, y);
    ppPicturePlane->GetPoint(&pointInPlane.X, &pointInPlane.Y);

    double height = mapGetPrecisionHeightTriangle(mapHandle, pointInPlane.x, pointInPlane.y);
    HANDLE egmMatrixHandle = 0;
    if (height > ERRORHEIGHT)
        egmMatrixHandle = mapOpenEgmPro(0, 0);

    mapSetCurrentPointFormat(mapHandle, CoordinatesType);

    WCHAR coordinatesStringWide[128];   coordinatesStringWide[0] = 0;
    mapPlaneToPointFormatStringPro(mapHandle, &pointInPlane.x, &pointInPlane.y, &height, egmMatrixHandle,
                                   coordinatesStringWide, sizeof(coordinatesStringWide));

    QString coordinatesQString = WcharToQString(coordinatesStringWide);
    ui->text2->setText(coordinatesQString);
}
Но координаты не совпадают с показываемыми в Панораме и с метрикой объекта: https://disk.yandex.ru/i/0gYYGuXXTQAdhQ (мышь наведена на узел сети)
x и y из QDMapView в какой системе координат приходят, не влияет ли смещение окна компонента на вычисление координат, там у меня слев еще панель и сверху toolBar https://disk.yandex.ru/i/Zjt9LI6PIVDV0g
 
Здравствуйте!

Для диагностики проблемы пришлите, пожалуйста, следующую информацию:
- версию используемой ГИС Панорама;
- скриншот паспорта карты из ГИС Панорама для основной карты и графа дорог;
- скриншот значения метрики для указанного узла из ГИС Панорама.
 
Панорама 15.4.2.36 x64
https://disk.yandex.ru/d/VoOLohaw9vZkeA
https://disk.yandex.ru/i/sus1kf82977HFg
https://disk.yandex.ru/i/5iqoQZkIhjLH8w
https://disk.yandex.ru/i/8y1KZeavCfUxig
https://disk.yandex.ru/i/wfSjWIy-QsKyPA
 
Цитата
Константин Ганюшин написал:
Но координаты не совпадают с показываемыми в Панораме и с метрикой объекта:  https://disk.yandex.ru/i/0gYYGuXXTQAdhQ  (мышь наведена на узел сети)
Добрый день!
Скорее всего в данных есть объект с ошибочной метрикой, который дает такое смещение.
Предлагаем в настольной версии программы ГИС Панорама выполнить Контроль векторной карты с использованием стандартной схемы.
Результат контроль просьба прислать нам для анализа.
 
https://disk.yandex.ru/d/xbDf51cO_oEsoQ
 
Добрый день!

В результатах контроля есть ошибки в блоке "Контроль самопересечений и входимости подобъектов"
У объектов с уникальными номерами 95 и 2137 есть проблемные точки (выбросы или вхождения).
Они могли бы (теоретически) дать ошибку в определении координат курсора, но без данных сложно давать заключение.
Если у Вас есть возможность прислать эту карту нам на почту технической поддержки, то мы бы провели более глубокое исследование проблемы.
С уважением, Демиденко Р.А.
 
Не в карте дело.
Вот определение координат в Панораме и приложении, где все сделано на чистом MAPAPI (тогда еще конструктора для Windows не было) https://disk.yandex.ru/i/skFXb16fukWgdw. Совпадают координаты.
Код
void MainWindow::onMapMouseMove(int x, int y, int modkeys)
{
    int l,t;
    vMap->GetMapLeftTop(&l,&t);
    double px=x+l;
    double py=y+t;

    mapPictureToPlane(vMap->mapHandle(),&px,&py);

    QString sx; sx.setNum(px,'f',2);
    QString sy; sy.setNum(py,'f',2);
    ui->text->setText(QString("X=%1 Y=%2").arg(sx).arg(sy));
...
}

Вот все тоже самое, но отображение карты и определение координат на QDMap... - компонентах: https://disk.yandex.ru/i/LCIPIDx-OHIVYg . Явно не совпадает определение координат.
Изменено: Валерий Парусов - 19.04.2025 05:38:15
 
Здравствуйте!

Проверили пересчет координат по текущему положению курсора на карте Ногинска из состава инсталляции на новой версии ГИС Конструктор (версия 15.0.5.9). Пересчет выполняется корректно: значения координат в строке статуса в приложении на компонентах ГИС Конструктора и в ГИС Панорама идентичны.
Обновленная версия ГИС Конструктор для Windows доступна для скачивания на нашем сайте (https://gisinfo.ru/download/download.htm#12).
Для детального исследования причин расхождений значений координат в приложении на компонентах ГИС Конструктора и в ГИС Панорама просим прислать на электронную почту panorama@gisinfo.ru карту, на которой были получены такие расхождения.
Изменено: Эдуард Портнягин - 21.04.2025 16:22:12
Страницы: 1
Читают тему (гостей: 1)



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

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