Nous allons découvrir les méthodes, propriétés et évenements liés à tout ce qui attrait à la position d'un point géographique.
Positionnement sur la carte
Vous pouvez déterminer les coordonnées du centre de la carte au travers des propriétés Latitude et Longitude, elles sont de type double et accessible en lecture/écriture
Vous pouvez directement modifier les coordonnées au travers de la procédure setCenter(const dlatitude,dlongitude:double)
// Delphi
map component ECMap
var lat,lng:double;
begin
// get center of map
lat := map.Latitude;
lng := map.Longitude;
// move center of map
map.setCenter(lat+0.001,lng);
end;
La procédure PanTo(const dLatitude,dLongitude:double) vous offre aussi la possibilité de changer le positionnement.
Position de la souris
Les latitude et longitude du point situé sous le curseur de la souris sont renvoyés par les propriétés MouseLatitude et MouseLongitude
Vous pouvez vous brancher sur l'évènement OnMapMouseMove pour connaitre en temps réel votre position
Réagir au changement de position
Lorsque le centre de la carte est déplacé, que cela soit par code ou directement à la souris, l'évènement OnMapMove(sender: Tobject;const dLatitude,dLongitude:double) est déclenché
Sender représente le composant ECMap qui a été modifié, dLatitude et dLongitude les nouvelles coordonnées, qui sont aussi accessible au travers de Latitude et Longitude
Lorsque la carte commence à bouger l'évènement OnMapDragStart est déclenché, puis OnMapDrag pendant le déplacement et OnMapDragEnd en fin de déplacement.
Vous pouvez aussi réagir lors du déplacement de la souris en vous branchant sur OnMapMouseMove
Altitude
Vous obtenez l'altitude du centre de la carte au travers de la propriété Altitude, elle est de type double et accessible uniquement en lecture.
La fonction GetAltitudeAtLatLng(const dLatitude,dLongitude:double):double vous donne l'altitude d'un point quelconque.
// Delphi
map component ECMap
// altitude of map's
center
map.Altitude;
// altitude at latitude 48,
longitude 0.7
map.GetAltitudeAtLatLng(48,0.7);
Les polylines disposent d'une methode spéciale permettant le calcul de l'altitude de l'ensemble de leurs points.
Zone affichée
Vous pouvez déterminer les coordonnées du point Nord Est (en haut à droite) et du point Sud Ouest (en bas à gauche) de la zone affichée par le composant ECMap au travers des propriétés NorthEastLatitude, NorthEastLongitude, SouthWestLatitude et SouthWestLongitude, elles sont de type double et accessible uniquement en lecture.
La procédure PanToBounds(const dLatlo,dLnglo,dLathi,dLnghi:double) vous permet de changer la vue en passant les nouvelles coordonnées des point bas (Sud Ouest) et haut (Nord Est).
La procédure fitBounds(const dLatlo,dLnglo,dLathi,dLnghi:double) vous permet de d'ajuster la vue aux coordonnées passées.
fitBounds fonctionne aussi avec Google Earth
6La fonction ContainsLatLng(var dLatitude,dLongitude:double):boolean vous indique si le point en dLatitude,dLongitude est dans la portion visible de la carte.
Dés que la vue change l'évènement OnChangeMapBounds(sender: TObject) est déclenché.
La propriété ScreenShot retourne un TBitmap contenant l'image de la carte
// Delphi
map component TECNativeMap
// save map to bmp
file
map.Screenshot.SaveTofile('c:\mymap.bmp');
Zoom
La propriété Zoom vous permet de contrôler la définition de votre carte, elle est de type integer et est accessible en lecture/écriture
En utilisant une carte de type Google vous avez accès aussi au propriété MaxZoom et MinZoom qui vous permettent de déterminer les limites du zoom
7Le changement de zoom déclenche l'évènement OnChangeMapZoom(sender: TObject)
Url
La propriété Url retourne/accepte une chaine au format '#zoom/Latitude/Longitude'
// zoom 18 latitude 48.856527
longitude 2.352104
// welcome to Paris !
map.Url := '#18/48.856527/2.352104';
L'assignation d'une valeur à cette propriété déclenche l'événenement OnBeforeUrl(sender : TObject; var Url:string) qui peut vous permettre de modifier l'url, et même d'annuler le changement en retournant une chaine vide.
Vous pouvez passer une tel lien dans une InfoWindow
// welcome to Paris !
map.Shapes.InfoWindows[0].Content := 'Go to
<a href="#18/48.856527/2.352104">Paris
!</a>';
Si vous passez une url "classique" elle s'ouvrira dans votre navigateur par défaut.
1Distance
La fonction DistanceFrom(const dLatitudeStart,dLongitudeStart,dLatitudeEnd,dLongitudeEnd:double):double permet de calculer la distance entre 2 points, le résultat est en mètres.
Angle par rapport au Nord
La fonction HeadingFrom(const dLatitudeStart,dLongitudeStart,dLatitudeEnd,dLongitudeEnd:double):integer vous donne l'angle, de 0° à 360°, pour la direction allant du point dLatitudeStart,dLongitudeStart au point dLatitudeEnd,dLongitudeEnd