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

Positionnement

Vous êtes ici :TECMap

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

6

La 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

7

Le 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>';

Fig. 17 Url Link

Si vous passez une url "classique" elle s'ouvrira dans votre navigateur par défaut.

1

Distance

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

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