Здравствуйте.
Стоит небольшая задача по умному масштабированию карты, чтобы при увеличении и уменьшении масштаба происходила работа с тем участком карты над которым установлен курсор мыши.
Я прошу прощения за возможно сумбурное объяснение, вообщем нужно чтобы масштабирование работало как в яндекс картах.
Сначала нашел функцию SetViewScale, но она просто увеличивает или уменьшает масштаб карты.
Затем пробовал с mapChangeViewScale примерно следующее:
но я похоже совсем глуп и не выходит ничего.
Подскажите, пожалуйста, что не так я делаю?
Заранее спасибо!
Стоит небольшая задача по умному масштабированию карты, чтобы при увеличении и уменьшении масштаба происходила работа с тем участком карты над которым установлен курсор мыши.
Я прошу прощения за возможно сумбурное объяснение, вообщем нужно чтобы масштабирование работало как в яндекс картах.
Сначала нашел функцию SetViewScale, но она просто увеличивает или уменьшает масштаб карты.
Затем пробовал с mapChangeViewScale примерно следующее:
Код |
---|
void MapViewWidget::wheelEvent(QWheelEvent* event) { int numDegrees = event->delta() / 8; int numSteps = numDegrees / 15; if (event->orientation() == Qt::Vertical) { long int x=event->globalX(); long int y=event->globalY(); int valx=0, valy=0; d->mapView->GetMapLeftTop(&valx, &valy); QDMapPoint mapPoint; mapPoint.SetMapView(d->mapView); mapPoint.SetPlaceIn(PP_PICTURE); mapPoint.SetPoint(valx + y, valy + x); mapPoint.SetPlaceOut(PP_PLANE); x=mapPoint.VarMapPoint->GetX(); y=mapPoint.VarMapPoint->GetY(); if(numSteps>0) mapChangeViewScale(d->mapView->GetMapHandle(),&x,&y,2); if(numSteps<0) mapChangeViewScale(d->mapView->GetMapHandle(),&x,&y,0.5); d->mapView->Repaint(); } } |
но я похоже совсем глуп и не выходит ничего.
Подскажите, пожалуйста, что не так я делаю?
Заранее спасибо!