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

Mobiles

Vous êtes ici :TECMap > Overlays > Markers

Vous pouvez définirs une liste de markers qui auront la faculté de se déplacer le long d'un chemin prédéterminé (routes, polylines ou polygones) .

Cette liste de type TMobileList est disponible au travers de la propriété Mobiles.

TECMap dispose en plus de deux propriétés liées aux mobiles

property MobilesEnabled:boolean
Propriété en lecture/écriture qui autorise ou non le déplacement automatique des mobiles, false par défaut
property MobilesTiming : dword
Propriété en lecture/écriture qui indique en millisecondes l'intervalle de temps qui sépare chaque déplacement automatique, par défaut 300ms (l'intervalle minimum étant 100ms)

TMobileList

Vous avez accès aux méthodes et propriétés suivantes
function IndexOf(const iMarker:integer):longint;
Retourne l'indice du mobile en fonction de l'indice d'un marker
function add(const iMarker,iRoute,iSpeed,iDistance:integer):longint;
Ajoute un mobile
iMarker est l'indice du marker dans la liste Markers
iRoute est l'indice du chemin à suivre soit dans Routes (par défaut), soit dans Polylines ou Polygones
iSpeed est la vitesse du mobile en Km/h
iDistance est la position de départ sur le chemin en mètre

// Delphi map component ECMap

map.DistanceMatrix.origins.clear;
map.DistanceMatrix.destinations.clear;
// origins
map.DistanceMatrix.origins.add('Tarbes');
map.origins.add('Lourdes');
// destinations
map.DistanceMatrix.destination.add('Aureilhan');
map.DistanceMatrix.destination.add('Séméac');
// calcul - fire OnDistanceMatrice
Map.DistanceMatrix.Update;
...

// event fired when matrix is ok, call by map.DistanceMatrix.Update
procedure TFormDemoMatrix.mapDistanceMatrix(Sender: TObject);
begin
if map.DistanceMatrix.count=0 then exit;
// Tarbes/Aureilhan
map.DistanceMatrix[0,0].distanceText;
// Tarbes/Séméac
map.DistanceMatrix[0,1].distanceText;
// Lourdes/Aureilan
map.DistanceMatrix[1,0].distanceText;
// Lourdes/Séméac
map.DistanceMatrix[1,1].distanceText;

end;

procedure clear;
Supprime tous les mobiles
procedure delete(const index:integer);
Efface le mobile d'indice Index
function count:longint;
Retourne le nombre de mobiles
property Mobiles[index:integer]:TMobile
Tableau permettant l'accès aux mobiles, c'est la propriété par défaut donc vous pouvez y accéder directement par map.Mobiles[index] au lieu de map.Mobiles.Mobile[index]
property Tracking :integer

Propriété en lecture/écriture qui indique quel est le mobile que l'on va suivre, la carte se recentrera automatiquement sur lui lorsqu'il franchira les limites visibles.

Positionnez cette propriété à -1 pour ne suivre aucun mobile

28
property ToTxt : string
Propriété en lecture/écriture qui donne accès à la liste des mobiles dans un format texte.

Par défaut les mobiles ne bougent pas, vous pouvez les déplacer soit en mode automatique soit en mode manuel.

En mode automatique ils se déplaceront à la vitesse que vous leur avez assigné, en mode manuel vous pourrez soit manipuler directement la distance soit la faire se calculer en fonction du temps et de la vitesse.

Même en mode automatique vous pouvez modifier manuellement la distance, la vitesse, vous pouvez aussi changer la route sur laquelle le mobile se déplace, sa position est automatiquement réajusté.

29

Pour cela vous devez accèder à la classe TMobile

TMobile

function Move:integer;
Déplace le mobile en calculant sa distance depuis le point de départ en fonction du temps passé depuis le dernier déplacement, de la vitesse et de la direction.
property Distance : integer;

Propriété en lecture/écriture qui fixe la distance, en mètre, du mobile depuis son point de départ réel, la direction n'est pas prise en compte.

Tout changement de cette propriété entraine un déplacement du marker associé au mobile

30
property Direction: TDirectionSens;

Sens de déplacement, dsStartEnd ou dsEndStart

Pour une route dsStartEnd correspond à un déplacement du point de départ ou point d'arrivée, pour les polylines et polygones du premier point au dernier.

La distance est toujours calculée en fonction du point de départ réel, la direction ne va donc être déterminante que pour un déplacement automatique ou manuel par appel à Move.

property Index : integer

Indice du mobile dans la liste des mobiles

property Marker : integer

Propriété en lecture/écriture qui indique l'indice du Marker à déplacer

property Mobile : boolean

Propriété en lecture/écriture qui définie si le mobile se déplace automatiquement ou non, par défaut fixé à false le mobile ne se déplace pas tout seul.

property Route : integer;
Propriété en lecture/écriture qui fixe l'indice du chemin dans sa liste respective (Routes, Polylines ou Polygones en fonction de RouteType)
property RouteType: TOverlayType;
Propriété en lecture/écriture définie le type de chemin, ovRoute, ovLine ou ovPolygone
property Speed : integer
Propriété en lecture/écriture qui détermine la vitesse en km/h
property Step : integer;
Indice dans la propriété Path de la route, polyline ou polygone où se situe le mobile, le calcul retourne une approximation du point car votre route ne comporte par l'ensemble des points réels.
property Heading : integer;
Angle du mobile en degrès par rapport au Nord (0° à 360°)
property ToTxt : string ;
Propriété en lecture/écriture qui donne accès au mobile dans un format texte.

Évènements

Deux évènements sont liés aux mobiles

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

10
procedure OnEndMobile(sender: Tobject;const iMobile:integer);

iMobile indice du mobile dans la liste Mobiles

En fonction de la direction le mobile est soit arrivé au terminus soit au point de départ

La propriété Mobile est passée à false, pour relancer votre mobile en mode automatique il vous faut la remettre à true et inverser la direction.

Démonstration

Le programme DemoMobile vous montre une utilisation des mobiles

Fig. 39 Marker mobile le long d'une route
Fig. 39 Marker mobile le long d'une route
Aller à la page
Composant Delphi / Google Maps / OpenStreetMap / Leaflet  / Mappilary© 2016 ESCOT-SEP Christophe - Réalisé avec Help&Web - RSS - RSS - Google+