Les marqueurs sont gérés par une liste de type
TECMapMarkers accessible au travers de
la propriété Markers de TECMap
TECMapMarkers
Cette liste dispose des méthodes et propriétés
suivantes :
function
Add(const
dLatitude,dLongitude:double):integer;
Ajoute un marker au point Latitude,Longitude et
retourne son index dans la liste.
Vous pouvez aussi ajouter un marker avec la
function AddMarker de TECMap
5
id := map.AdMarker(map.latitude,map.longitude);
map.Markers[id].title := 'my
first marker!';
function
ByLatLng(const
dLatitude,dLongitude:double):
TECMapMarker;
Retourne le marker positionné en Latitude,Longitude
function
ByName(const
value:string):TECMapMarker;
Retourne le marker en fonction de son nom (propriété
Name)
procedure
Clear;
Efface tous les markers
procedure
Delete(index:integer);
Supprime le marker dont on passe l'index
function
IndexOf(const
value:TECMapMarker):integer;
Retourne l'index du marker dans la liste
property
Cluster:boolean;
Propriété en
lecture/écriture,regroupe les
markers en fonction de leur position et suivant le
zoom
Fig. 38 Activation du
regroupement de markers
property
Count:integer;
Retourne le nombre de marker dans la liste
procedure
fitBounds
Adapte le zoom de la carte pour afficher l'ensemble
des markers
property
Marker[index:integer]:TECMapMarker;
Tableau permettant l'accès aux markers, c'est la
propriété par défaut donc vous pouvez y accéder
directement par map.Markers[index]
au lieu de map.Markers.Marker[index]
property
ToKml : string;
Propriété en
lecture
seule qui retourne une string au
format Kml contenant la liste des markers
property
ToTxt : string;
Propriété en
lecture/écriture qui donne accès à
la liste des markers 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
22
Exemple d'utilisation
id := map.Markers.add(map.latitude,map.longitude);
map.Markers[id].title := 'my first
marker!';
TECMapMarker
Il s'agit de la classe gérant un
marker, elle dispose des méthodes et propriétés suivantes
:
procedure
setPosition(const
dLatitude,dLongitude:double);
Déplace le marker en Latitude,Longitude, déclenche
l'évènement OnMarkerMove
procedure
PanTo;
Déplace la carte pour que son centre coincide avec le
marker, 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.
23
procedure
CopyImage(const
Source:TECMapMarker);
Copie les options de l'image du marker passé en
paramètre
procedure
setImage(const
_Icon:string;Size,Origin,Anchor:TPoint);
_Icon contient le nom du fichier
image source, local ou sur internet voir
Icon
Size défini la Largeur et Hauteur,
voir IconSize
Origin défini le X et le Y du point
d'origine de l'image dans l'image source, voir
IconOrigin
Anchor défini le X et le Y du point
correspondant à la Latitude et Longitude, voir
IconAnchor
procedure
setImageShadow(const
_Icon:string;Size,Origin,Anchor:TPoint);
Change les options pour l'ombre de l'image
procedure
setShape;
Application de la zone clickage du marker, voir
propriété Shape
property
Adress : string;
Propriété en
lecture/écriture, permet d'obtenir
l'adresse du marker ou de le positionner à une
adresse, déclenche l'évènement OnMarkerAdress
Pour éviter de multiple connexions au serveur
l'adresse est mise en cache, une nouvelle connexion
ne sera effectuée que si le marker est
déplacé
24
property
Animation :
string;
Propriété en
lecture/écrite, les valeurs
disponibles sont répertoriées dans la propriété de
type TStringList
MarkerAnimations de
TECMap
Avec l'api Google vous avez 'BOUNCE' et 'DROP',
mettez une chaîne vide pour stopper
l'animation
25
property
Altitude : double
;
Propriété en lecture/écrite, la valeur est mise
en cache pour éviter de multiple connexions au
serveur, une nouvelle connexion ne sera effectuée que
si la position du marker change.
property
Cursor : string;
Propriété en
lecture/écrite, défini le curseur
de la souris lors du survol, les valeurs disponibles
sont répertoriées dans la propriété de type
TStringList
Cursors de TECMap
property
Clickable :
boolean;
Propriété en lecture/écrite, défini si le
marker reçoit le click de la souris ou non
property
Draggable :
boolean;
Propriété en
lecture/écrite, défini si le
marker est déplaçable à la souris.
Même si un marker n'est pas déplaçable à la
souris vous pouvez changer sa position par code au
travers de setPosition ou de ses propriétés
Latitude et Longitude
26
property
Dragging :
boolean;
Indique si le marker est entrain d'être déplacé
property
Flat : boolean;
Propriété en lecture/écrite, défini si le
marker a une ombre
property
Heading :
integer;
Indique l'angle par rapport au nord
property
Icon : string;
Propriété en lecture/écrite, défini l'image du
marker, cela peut-être soit un fichier local soit une
url d'un fichier situé sur internet, voir aussi
setImage
Avec Google Maps vous pouvez
aussi utiliser un
Symbol
6
map.Markers[0].Icon :=
'{path:
google.maps.SymbolPath.CIRCLE,scale: 3,strokeColor:
"#393"}';
property
Shadow : string;
Propriété en lecture/écrite, défini l'image de
l'ombre du marker, cela peut-être soit un fichier
local soit une url d'un fichier situé sur internet,
voir aussi setImageShadow
property
IconSize :
TPoint;
défini la Largeur et Hauteur de l'image
property
IconOrigin :
TPoint;
défini le X et le Y du point d'origine de l'image
dans le fichier source
property
IConAnchor :
TPoint;
défini le X et le Y dans l'image du point
correspondant à la Latitude et Longitude
property
Index;
Index du marker dans la liste des markers
property
InfoWindow :
integer;
Index de l'infoWindow associée au marker
dans la liste des InfoWindows
Lors d'un clic sur le marker si une infowindow y
est définie, elle sera ouverte
property
Name : string;
Propriété en
lecture/écrite, défini le nom de
votre marker, voir
ByName
property
Latitude :
double;
Propriété en lecture/écrite, définissant la
latitude du marker, déclenche l'évènement
OnMarkerMove
property
Longitude :
double;
Propriété en lecture/écrite, définissant la
longitude du marker, déclenche l'évènement
OnMarkerMove
property
Tag :integer;
Propriété en lecture/écrite, vous pouvez
l'utiliser librement pour stoker ce que vous voulez
property
Title : string;
Propriété en lecture/écrite, définissant le
titre de votre marker, il s'affiche sous la forme
d'une infobulle lors du survol du curseur
property
Visible :
boolean;
Propriété en lecture/écrite, permet d'afficher
ou non le marker
property
Zindex : integer;
Propriété en lecture/écrite, attribut un indice
de priorité pour l'affichage du marker, un marker
ayant un Zindex plus élevé sera affiché par dessus
celui ayant un Zindex inférieur
property
ShowOnMap :
boolean;
Propriété en lectureindiquant si la position du
marker est dans la portion visible de la carte
property
Shape :
TECMapShape;
Permet de définir la zone clickable du marker.
map.Markers[0].shape.stype := 'rect';
map.Markers[0].shape.Coord.add([10,10,25,30]);
map.Markers[0].setShape;
Avec SType 'circle',
'poly' ou 'rect'
Voir
aide de google
Inactive sous CloudMade
10
property
ToTxt : string;
Propriété en lecture/écriture qui donne accès
au marker sous la forme d'une chaîne texte
property
ToKml : string;
Propriété en
lecture
seule qui retourne le marker sous la forme
d'une chaîne au
format Kml
Évènements
Vous pouvez vous connecter sur le composant TECMap
pour recevoir les évènements mais vous pouvez aussi
vous y brancher directement depuis un marker pour une
réponse spécifique, auquel cas l'évènement global de TECMap ne sera pas
appelé
7
Les markers déclenchent les évènements:
OnMarkerMove(sender: Tobject;const
Index:integer;var dLatitude,dLongitude:double)
Déclenché lors de tout déplacement d'un marker, par
code ou à la souris
Index est l'indice du marker dans la
liste Markers
dLatitude et
dLongitude la nouvelle
position
Vous pouvez modifier celle-ci dans
l'évènement
8
OnMarkerClick(sender:
Tobject;const Index:integer;const
dLatitude,dLongitude:double)
Déclenché lors d'un click sur le marker
Index est l'indice du marker dans la
liste Markers
dLatitude et
dLongitude position du marker
OnMarkerRightClick(sender:
Tobject;const Index:integer;const
dLatitude,dLongitude:double)
Déclenché lors d'un click droit sur le marker
Index est l'indice du marker dans la
liste Markers
dLatitude et
dLongitude position du marker
OnMarkerDblClick(sender:
Tobject;const Index:integer;const
dLatitude,dLongitude:double)
Déclenché lors d'un double click sur le marker
Index est l'indice du marker dans la
liste Markers
dLatitude et
dLongitude position du marker
OnMarkerDrag(sender:
Tobject;const Index:integer;const
dLatitude,dLongitude:double)
Déclenché pendant le déplacement à la souris d'un
marker
Index est l'indice du marker dans la
liste Markers
dLatitude et
dLongitude position du marker
OnMarkerDragStart(sender:
Tobject;const Index:integer;const
dLatitude,dLongitude:double)
Déclenché au départ du déplacement à la souris d'un
marker
Index est l'indice du marker dans la
liste Markers
dLatitude et
dLongitude position du marker
OnMarkerDragEnd(sender:
Tobject;const Index:integer;const
dLatitude,dLongitude:double)
Déclenché à la fin du déplacement à la souris d'un
marker
Index est l'indice du marker dans la
liste Markers
dLatitude et
dLongitude position du marker
OnMarkerAdress(sender:
Tobject;const sAdresses:string;var Index:integer;const
IndexMarker:integer)
Déclenché par l'attribution d'une adresse au
marker
sAdresses contiendra toutes les
adresses, séparé par #13#10 pouvant correspondre avec
votre requête.
Index contiendra l'index de
l'adresse retenue, par défaut 0, vous pourrez le
modifier dans cet évènement.
IndexMarker indice du marker dans
la liste des Markers
En sortie de cet évènement le marker est
positionné sur l'adresse retenue
Postionner un marker sur un chemin
function
MoveMarkerOnRouteToMeter(const
iNumMarker,iNumRoute:integer;
const RouteType: TOverlayType;
const Direction:TDirectionSens;
const lMeter:longint):integer;
Cette fonction vous permet de positionner un marker
sur un chemin (route, polyline ou polygone) en fonction
d'une direction et d'une distance en mètre.
iNumMarker est l'indice du marker
dans la liste Markers
iNumRoute est
l'indice du chemin dans Routes, Polylines ou
Polygones
RouteType
détermine le type de chemin, ovRoute, ovLine
ou ovPolygone
Direction est
le sens de parcour soit dsStartEnd
soit dsEndStart
lMeter la
distance en mètre
Dans le chapitre suivant vous découvrirez d'autres
fonctionnalités pour rendre vos markers mobiles plus
simplement