Здравствуйте.
Использую компоненты GTK и IDE Delphi.
Возникла необходимость вывода пользовательских изображений поверх карты по определенным координатам.
В событии MapPaintObject пытаюсь вывести картинку поверх карты по определенным географическим координатам. Картинка выводится, однако, в неправильном месте и смещается при изменении масштаба.
Использую следующий код:
Проблема с координатами вывода, которая усугубляется при масштабировании. Как правильно сделать отрисовку по определенным географическим координатам с учетом масштабирования?
Использую компоненты GTK и IDE Delphi.
Возникла необходимость вывода пользовательских изображений поверх карты по определенным координатам.
В событии MapPaintObject пытаюсь вывести картинку поверх карты по определенным географическим координатам. Картинка выводится, однако, в неправильном месте и смещается при изменении масштаба.
Использую следующий код:
Код |
---|
procedure TMyForm.MapViewMapPaintObject(Sender: TObject; aCanvas: TCanvas; aMapPaintRect: TRect; aLeftPosition, aTopPosition: Integer; aMapPaintEventType: TMapPaintEventType); var Graphics:TGPGraphics; Point: TDOUBLEPOINT; pic:TGPImage; nIStream: IStream; rect:TGPRect; begin if not Assigned(znakStream) then Exit; Graphics:=TGPGraphics.Create(aCanvas.Handle); znakStream.Position:=0; nIStream:= TStreamAdapter.Create (znakStream); pic:=TGPImage.Create(nIStream); //географические координаты для вывода 53.49; 108.06 Point.X:=DegToRad(53.49); Point.Y:=DegToRad(108.06); MapView.ConvertMetric(Point.X,Point.Y,PP_GEO,PP_PICTURE); rect.X:=Round(Point.X) div 2; rect.y:=round(Point.Y) div 2; Rect.Width:=60; Rect.Height:=60; Graphics.DrawImage(pic,rect); end; |