본문 바로가기

Delphi/꿀팁

ECMap을 사용해서 지도에 POI Marker 표시하기


UECMapUtil 추가 및 ECMap 생성

uses

ECMaps, UECMapUtil;


type

map : TECMap;

...

private

//POI를 그리기 위한 함수 선언

procedure doNumDrawPOI(const canvas : TCanvas; var r : TRect; item : TECMapPoi);

end;

POI Draw 함수 선언

procedure doNumDrawPOI(const canvas : TCanvas; var r : TRect; item : TECMapPoi);

var

x, y, w, h : Integer;

s : string;

begin

canvas.font.Size := 7; //Marker에 들어갈 폰트 사이즈

canvas.font.color := clWhite; //폰트 색깔

s := IntToStr(item.Id); //Marker에 들어갈 내용

w := canvas.TextWidth(s); h := canvas.TextHeight(s); x := 1 + ((r.Left + r.Right) - w) DIV 2; y := 1 + ((r.Top + r.Bottom) - h) DIV 2; canvas.brush.Style := bsClear; canvas.TextRect( r, x, y, s );

end;

Add Marker

procedure AddMarker;

var

index : Integer;

begin

index := Map.Pois.add(위도, 경도);

map.pois[index].Shape := poiEllipse; //POI 모양 map.pois[index].width := 24; //Marker 크기 map.pois[index].height := 24; //Marker 크기 map.Pois[index].ZIndex := 1; map.Pois[index].Color := clBlue; //기본 POI 색깔 map.Pois[index].HoverColor := clBlue; //Mouse Over 시 색깔

map.pois[index].OnBeforeDrawPOI := doNumDrawPOI;

end;

일반 마커를 추가하는 것보다 POI를 사용하면 지도가 아닌 메모리 상의 좌표에 찍어주기 때문에 속도가 월등히 빠릅니다.

다만, 표현할 수 있는 마커 모양이 한정적입니다.

반응형