RUS  ENG 

evMapLButtonDown

Страницы: 1
RSS
evMapLButtonDown
 
Как в плагине при событии evMapLButtonDown получить координаты местности, соответствующие точке нажатия мыши на экране?
В OnZuluEvent(EventID: Integer; const Source: IUnknown;Param1, Param2, Param3: OleVariant): Integer;
param1 - вроде передает eMouseState, но что передается в param2 и param3 - непонятно.
 
param2 - это DWORD который содержит x и y экрана
В общих чертах:
Координаты карты в пикселах:
x=param2.lVal & 0xFFFF;
y=param2.lVal >> 16;
Координаты местности:
IMapViewPtr pView;
pView = Source;
Y=pView->GetRealY( x );
X=pView->GetRealX( y );
 
Lyosha, а можно подробнее по этому вопросу получить вашу консультацию?
Не совсем ясно, что нужно делать с этими данными, чтоб получить координаты местности.
 
Lyosha, А, все понял.Спасибо)
Просто си не знаю, поэтому не расчухал, что >> эт о оператор сдвига вправо (аналог паскалевского shr)
 
В версии 7 нужно использовать Function GetRealXY(ScreenX As Long, ScreenY As Long, X As Double, Y As Double) As Long так как в случае проекции можно получать координаты местности только по экранной паре x,y
Если на C++

x=param2.lVal & 0xFFFF;
y=param2.lVal >> 16;
//Координаты местности:
IMapViewPtr pView;
double X, Y
pView = Source;
pView->GetRealXY( x, y, &X, &Y );

Собственно X Y и будут координатами местности в текущей проекции карты
 
Lyosha, ага, вот чего у меня по Y что-то не то и как-то неточно ставится точка...
И, почему-то работает только param2, а param2.lVal - пусто...
 
GetRealXY -то работает?
Страницы: 1