Les Pois ( point of interest ) sont équivalents aux markers, la différence est qu'ils sont pris en charge nativement par Delphi, ils sont donc plus légers et rapides, vous pouvez en intégrer plusieurs milliers sans soucis.
Vous avez 4 formes prédéfinies (Ellipse, rectangle, triangle et étoile) mais vous pouvez aussi prendre en charge vous même leur dessin.
Ne fonctionne pas sous Chromium !
24Les POIs sont gérés par une liste de type TECMapPois accessible au travers de la propriété Pois de TECMap
TECMapPois
Cette liste dispose des méthodes et propriétés suivantes :
function Add(const dLatitude,dLongitude:double):integer;
// Delphi
map component ECMap
// add POI at center of
map
id := map.Pois.add(map.latitude,map.longitude);
// set caption to this
POI
map.Pois[id].caption := 'my first
POI!';
function ByLatLng(const dLatitude,dLongitude:double):TECMapPoi;
procedure Clear;
procedure Delete(index:integer);
property Count:integer;
procedure fitBounds
property Poi[index:integer]:TECMapPOI;
En écriture il s'agit d'un ajout et non d'un remplacement, si vous ne souhaitez pas conserver les anciennes valeurs faites un Clear avant l'ajout
44property ShowHint : boolean
property OnOwnerDrawPOI : TOnOwnerDrawPOI
// Delphi
map component ECMap
map.Pois.OnOwnerDraw := doOwnerDrawPOI;
...
// owner draw poi, here
transparancy text
procedure
TFormPoi.doOwnerDrawPOI(const canvas:TCanvas;var Rect:TRect;item:TECMapPoi) ;
begin
canvas.brush.Style := bsClear;
if item.Hover then
canvas.font.color := item.HoverColor
else
canvas.font.color := item.color;
canvas.font.Style := [fsBold];
item.Width := canvas.TextWidth(item.caption) ;
item.height := canvas.TextHeight(item.caption) ;
item.x := item.x - (item.Width div 2);
item.y := item.y - (item.height div 2);
canvas.TextOut(item.x,item.y,item.caption);
end;
property DragPoi : TECMapPoi
TECMapPOI
Il s'agit de la classe gérant un POI, elle dispose des méthodes et propriétés suivantes :
Le mouvement sera fluide si le déplacement ne dépasse pas la moitié de la hauteur ou de la largeur de la carte.
45property Caption: string
property Color: TColor
property HoverColor: TColor
property Latitude: double
property Longitude: double
property X : integer
property Y : integer
property Width : integer
property height : integer
property Draggable : boolean
property Shape : TPOIShape
property Hover : boolean
property OnBeforeDrawPOI : TOnOwnerDrawPOI
Permet d'indiquer une procedure pour dessiner par dessus des Pois de type poiEllipse, poiRectangle, poiTriangle et poiStar
Exemple, écrite son numéro sur un POI
// Delphi
map component ECMap
i := map.pois.add(map.Latitude,map.Longitude);
map.pois[i].Shape := poiStar;
map.pois[i].width := 25;
map.pois[i].height := 25;
map.pois[i].OnBeforeDrawPOI := doNumDrawPOI;
// draw poi id
procedure
TFormDemoECMap.doNumDrawPOI(const canvas:TCanvas;var r:TRect;item:TECMapPoi) ;
var x,y,w,h :
integer;
s : string;
begin
canvas.font.style := [fsBold];
s := inttostr(item.id);
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.font.color := clWhite;
canvas.TextRect(r,x,y,s);
end;
Évenements
Les Pois répondent aux mêmes événements que les overlays (OnOverlayXXX), leur TOverlayType est ovPoi