Composant Delphi / Google Maps / OpenStreetMap / Leaflet  / Mappilary / Native Maps 100% Delphi 0% WebBrowser 0% Javascript

Pois

Vous êtes ici :TECMap > Overlays

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.

Fig. 48 DemoPOI

Ne fonctionne pas sous Chromium !

24

Les 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;

Ajoute un POI au point Latitude,Longitude et retourne son index dans la liste.

// 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;

Retourne le POI positionné en Latitude,Longitude

procedure Clear;

Efface tous les Pois

procedure Delete(index:integer);

Supprime le POI dont on passe l'index

property Count:integer;

Retourne le nombre de POI dans la liste

procedure fitBounds

Adapte le zoom de la carte pour afficher l'ensemble des Pois

property Poi[index:integer]:TECMapPOI;

Tableau permettant l'accès aux POIs, c'est la propriété par défaut donc vous pouvez y accéder directement par map.Pois[index] au lieu de map.Pois.Poi[index]
property ToKml : string;
Propriété en lecture seule qui retourne une string au format Kml contenant la liste des Pois
property ToTxt : string;
Propriété en lecture/écriture qui donne accès à la liste des Pois dans un format texte.

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

44

property ShowHint : boolean

Indique s'il faut afficher le caption d'un POI sous la forme d'une bulle lors du survol à la souris

property OnOwnerDrawPOI : TOnOwnerDrawPOI

Permet d'indiquer une procedure pour prendre en charge le dessin des Pois de type poiOwnerDraw

// 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

Si un POI est déplacé à la souris cette propriété le référence

TECMapPOI

Il s'agit de la classe gérant un POI, elle dispose des méthodes et propriétés suivantes :

procedure setPosition(const dLatitude,dLongitude:double);
Déplace le POI en Latitude,Longitude, déclenche l'évènement OnOverlayMove
procedure PanTo;
Déplace la carte pour que son centre coincide avec le POI, déclenche l'évènement OnMapMove

Le mouvement sera fluide si le déplacement ne dépasse pas la moitié de la hauteur ou de la largeur de la carte.

45

property Caption: string

Libellé

property Color: TColor

Couleur du POI

property HoverColor: TColor

Couleur au survol de la souris

property Latitude: double

Propriete en lecture seule, utilisez SetPosition

property Longitude: double

Propriete en lecture seule, utilisez SetPosition

property X : integer

Position horizontale en pixels, calculée automatiquement en fonction de la latitude

property Y : integer

Position verticale en pixels, calculée automatiquement en fonction de la longitude

property Width : integer

Largeur en pixels

property height : integer

Hauteur en pixels

property Draggable : boolean

Indique si le POI est déplaçable à la souris

property Shape : TPOIShape

poiEllipse, poiRectangle, poiTriangle, poiStar et poiOwnerDraw

property Hover : boolean

Indique si le POI est survolé par la souris

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

Aller à la page
Composant Delphi / Google Maps / OpenStreetMap / Leaflet  / Mappilary© 2016 ESCOT-SEP Christophe - Réalisé avec Help&Web - RSS - RSS - Google+