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

EarthView

La propriété EarthView de type TECMapEarthView vous permet de gérer l'affichage 3D Google Earth ou de Cesium

Google Earth n'est disponible qu'avec l'api Google

26

Le plugin Google Earth sera abandonnée par Google en décembre 2015

27

La suite TECMap vous propose le composant indépendant TECCesiumMap pour gérer vos vues 3D, ce composant est aussi intégré dans EarthView pour remplacer à terme Google Earth.

L'intégration de Cesium dans EarthView est partielle, le logo indique la compatibilité avec Cesium

Il est recommandé d'utiliser directement la propriété Cesium qui donne un accès complet au composant gérant Cesium.

3

TECMapEarthView

Elle donne accés aux propriétés et méthodes suivantes

property Cesium;
Accès au composant TECCesiumMap qui vous permet un contrôle maximal sur le moteur Cesium
property UseCesium;
Choix du moteur Cesium pour gérer la 3D
procedure Clear;

Efface les données

Les données ne sont effacées que dans la vue 3D elles sont toujours disponible dans la vue 2D standard

16
procedure EnableLayer(const sLayer:string;const bShow:boolean)

Activer/Désactiver un layer

Vous avez le choix parmi

  • LAYER_BORDERS
  • LAYER_BUILDINGS
  • LAYER_BUILDINGS_LOW_RESOLUTION
  • LAYER_BUILDINGS_LOW_RESOLUTION.
  • LAYER_ROADS
  • LAYER_TERRAIN
  • LAYER_TREES

Sous Cesium seul LAYER_TERRAIN est fonctionnel

17

LAYER_TERRAIN est activé par défaut

// Delphi map component ECMap

// active LAYER_BUILDINGS and LAYER_TREES
map.EarthView.EnableLayer('LAYER_BUILDINGS',true);
map.EarthView.EnableLayer('LAYER_TREES',true);

procedure Camera(const dLatitude,dLongitude:double)
Positionne la caméra en dLatitude,dLongitude et affiche la vue en accord avec les propriétés Altitude,Roll, Tilt et Heading
procedure LookAt(const dLatitude,dLongitude:double)
Regarde le point situé en dLatitude,dLongitude et affiche la vue en accord avec les propriétés Altitude,Range, Tilt et Heading
function getGroundAltitude(const dLatitude,dLongitude:double):double;
Retourne l'altitude du point situé en dLatitude,dLongitude
procedure LoadKml(const UrlKmlKmz:string);

Chargement d'un fichier Kml/Kmz distant

UrlKmlKmz url du fichier à importer

Les données sont ajoutées aux données déjà présentes, faites un Clear avant si vous souhaitez un remplacement total

50
procedure PlacemarkCamera(const id:integer)
Positionne la caméra sur la marque d'indice id et affiche la vue en accord avec les propriétés Altitude,Roll, Tilt et Heading
procedure PlacemarkLookAt(const id:integer)
Regarde la marque d'indice id et affiche la vue en accord avec les propriétés Altitude,Range, Tilt et Heading
procedure setPlacemarkLatLngAlt(const id:integer;const Lat,Lng,Alt:double);
Positioner la marque d'indice id en Latitude,Longitude et Altitude
procedure getPlacemarkLatLngAlt(const id:integer;var Lat,Lng,Alt:double);
Obtenir la latitude, longitude et altitude de la marque d'indice id
procedure FromXYToLatLngAlt (const iX, iY: double; var dLatitude, dLongitude, altitude: double)
Donne la latitude, longitude et l'altitude du point X,Y (pixels)
property Altitude : double

Propriété en lecture/écriture pour déterminer son altitude

property MouseAltitude : double
Propriété en lecture indique l'altitude du point situé sous le curseur de la souris
property AltitudeMode: TAltitudeMode

Propriété en lecture/écriture pour fixer la manière dont est calculée l'altitude

Vous avec le choix entre

  • amAbsolute
  • amRelativeToGround
  • amClampToGround
  • amRelativeToSea
  • amClampToSea
property FlyToSpeed : double

Propriété en lecture/écriture pour fixer la vitesse de déplacement, de 0 à 5.0

Utilisez 6.0 pour un téléportage immédiat

51
property Loaded : boolean
Propriété en lecture seule pour déterminé si le plugin a bien été chargé
property Latitude : double
Propriété en lecture/écriture pour déterminer la latitude
property Longitude : double
Propriété en lecture/écriture pour déterminer la longitude
property Heading : double
Propriété en lecture/écriture pour déterminer l'orientation par rapport au Nord (de 0° à 360°)
property Tilt : double
Propriété en lecture/écriture pour déterminer l'angle de la vue (de 0° à 90° pour LookAt et de 0° à 180° pour Camera)
property Range : double
Propriété en lecture/écriture pour déterminer la distance par rapport au point observé (non utilisé par Camera)
property Ready : boolean
Propriété en lecture seule pour déterminé le moment où le plugin a fini son rendu écran, correspond à l'évènement OnEarthViewFrameEnd
property Visible : boolean
Propriété en lecture/écriture pour activer/désactiver la vue 3D
property Atmosphere : boolean
Propriété en lecture/écriture pour afficher ou non l'atmosphère
property Grid : boolean
Propriété en lecture/écriture pour afficher ou non les lignes de latitudes et longitudes sur le globe
property MouseNavigationEnabled : boolean
Propriété en lecture/écriture pour activer ou non le déplacement à la souris

property NavigationControlVisibility : TNavigationControlVisibility

Propriété en lecture/écriture pour afficher ou non les contrôles, vous avez le choix entre ncvShow,ncvHide et ncvAuto

// Delphi map component ECMap

map.EarthView.NavigationControlVisibility := nvcAuto;

property StatusBar : boolean
Propriété en lecture/écriture pour afficher ou non la barre d'information
property ScaleLegend : boolean
Propriété en lecture/écriture pour afficher ou non l'échelle
property Sun : boolean
Propriété en lecture/écriture pour afficher ou non le soleil
property OverviewMap : boolean
Propriété en lecture/écriture pour afficher ou non une mini carte du monde
property TerrainExaggeration : double
Propriété en lecture/écriture qui est un facteur d'accroissement de l'altitude de 1.0 à 3.0
property ToKml : string;

Propriété en lecture/écriture qui permet l'import/export au format Kml

TECMap dispose de la fonction toKml pour exporter la quasi totalité des overlays au format Kml

// Delphi map component ECMap

// import overlays (markers, rectangles, circles,...routes)
map.EarthView.toKml := map.toKml;

property ToTxt : string;
Propriété en lecture/écriture qui donne accès aux propriétés dans un format texte.

Sous Google Earth les donnée Kml ne sont pas prises en compte

18
property PlaceMark[const index:integer]: string

Propriété en lecture/écriture qui détermine le contenu de la marque d'indice id

La chaîne est au format Kml, du genre

<Placemark>
<name>Placemark from KML string</name>
<Point>
<coordinates>-122.448425,37.802907,0</coordinates>
</Point>
</Placemark>
property PlacemarkCount : integer
Retourne le nombre de marques
property Models : TECMapEarthModels

Liste des modèles de type TECMapEarthModel

Un modèle est défini par la balise Kml <Model>
property CesiumModels : TECCesiumShapeModelList

Liste des modèles 3D de type TECCesiumShapeModel

property StreamPercent : integer
Propriété en lecture qui indique le pourcentage de chargement de la vue
property ApiVersion : string
Retourne la version de l'api Google Earth
property PluginVersion
Retourne le numéro de version du plugin 3D

Pour que les modifications sur les propriétés Altitude, Heading, Range, Roll et Tilt soient visibles vous devez déclencher un appel à LookAt ou à Camera

19

TECMapEarthModels

Cette classe possède les méthodes et propriétés

procedure LoadKml(const filename:string);
charger un fichier Kml/Kmz définissant un modèle 3D, déclenche l'évènement OnEarthViewUpdateModels

// Delphi map component ECMap

// load 3d model
map.EarthView.models.LoadKml('http://earth-api-samples.googlecode.com/svn/trunk/demos/drive-simulator/smart.kmz');


Si des modèles sont présent dans le Kml chargé par TECMapEarthView.ToKml ou par TECMapEarthView.LoadKml ils seront aussi accessible dans la liste Models

52
function IndexOf(const idModel:string):integer;
Retourne l'indice du modèle dont on passe l'identifiant

Il s'agit de la propriété ID de la balise Model

53
procedure Delete(const index:integer);
Supprime le modèle index
function Count:integer;
Retourne le nombre de modèle 3D
procedure Clear;
Efface tous les modèles 3D
property Model[Index:integer]:TECMapEarthModel

Tableau permettant l'accès aux modèles, c'est la propriété par défaut donc vous pouvez y accéder directement par map.EarthView.Models[index] au lieu de map.EarthView.Models.Model[index]

TECMapEarthModel

Classe gérant un modèle 3D, elle possèdent les méthodes et propriétés

procedure setLatLngAlt(const Lat,Lng,Alt:double);
Position le modèle en latitude, longitude, altitude
procedure LookAt;
Regarder le modèle
property Id : string ;

Propriété en lecture qui donne l'identifiant du modèle

Il s'agit de la propriété ID de la balise Model

54
property Index : integer
Indice du modèle dans la liste Models
property Latitude : double
Propriété en lecture/écriture pour déterminer la latitude
property Longitude : double
Propriété en lecture/écriture pour déterminer la longitude
property Heading : double
Propriété en lecture/écriture pour déterminer l'orientation par rapport au Nord (de 0° à 360°)
property Tilt : double
Propriété en lecture/écriture pour déterminer l'angle de la vue (de 0° à 90°)
property Range : double
Propriété en lecture/écriture pour déterminer la distance par rapport au point observé )
property Roll : double
Propriété en lecture/écriture pour déterminer la rotation du modèle
property Altitude : double
Propriété en lecture/écriture pour déterminer l'altitude du modèle

Visite guidée ( Tour )

Google Earth vous permet de jouer des visites guidées, nommées tour ( voir la documentation de google earth api )

EarthView vous offre la possibilité de les gérer de manière simple.

property Tour : string

Propriété en lecture/écriture pour charger un tour

  • Vous pouvez charger un fichier kml/kmz depuis internet ou en local
  • Vous pouvez aussi directement passer une chaine contenant les données kml


// load kml tour

map.EarthView.Tour := 'http://www.my.com/mytour.kml';
map.EarthView.Tour := 'c:\mytour.kml';
map.EarthView.Tour := '<?xml version="1.0" encoding="UTF-8"?>...<gx:Tour>...';

L'événement OnLoadTour est déclenché lorsque le tour est chargé et disponible

55
procedure PlayTour;

Démarre le tour

L'événement OnEndTour est déclenché lorsque le tour est terminé

56
procedure PauseTour;
Met en pause le tour
procedure ResetTour;
Positionne le tour au départ, en attente d'être joué
procedure ExitTour;
Quitte le tour
property CurrentTimeTour : integer;
propriété en lecture/écriture qui donne/fixe la position du tour dans le temps (en secondes)
property Duration : integer
propriété en lecture qui donne la durée du tour en secondes
property StateTour : TEarthStateTour
propriété en lecture qui donne l'état du tour ( stNone,stPlay,stPause,stEnd )

Évènements



En plus des évenements ci-dessous vous avez aussi accès à OnMapClick, OnMapDblClick, OnMouseMove, OnOverlayMouseDown, OnOverlayMouseUp et OnOverlayMouseOut

57
property OnEarthViewInit : TNotifyEvent;
Déclenché quand le plugin est chargé, cela se produit lorsque vous basculez TECMapEarthView.Visible à true
property OnEarthViewChange : TNotifyEvent;
Déclenché lorsque la vue change
property OnEarthViewFrameEnd : TNotifyEvent;
Déclenché lorsque le rendu 3D est terminé, c'est le bon endroit pour déplacer les modèles 3D pour avoir une animation fluide
property OnEarthViewUpdateModels: TNotifyEvent;
Déclenché par l'ajout d'un modèle
property OnEarthViewUpdatePlacemarks : TNotifyEvent;
Déclenché par l'ajout d'une marque
property OnEarthViewClickPlacemark(sender: TObject;const index:integer;const KmlString:string)

Déclenché par un click sur une marque

index est l'indice de la marque dans la liste PlaceMark

KmlString le contenu de la marque au format Kml, du genre

<Placemark>
<name>Placemark from KML string</name>
<Point>
<coordinates>-122.448425,37.802907,0</coordinates>
</Point>
</Placemark>

Démonstrations

Demo3D vous montre en particulier comment déplacer un modèle 3D en suivant un trajet précis.

Fig. 51 EarthView dans Demo3D
Fig. 51 EarthView dans Demo3D

Le programme DemoOverlay vous montre comment transférer des données vers une vue 3D

Fig. 52 DemoOverlay
Fig. 52 DemoOverlay
Fig. 53 Importation des overlays au format KML
Fig. 53 Importation des overlays au format KML
Aller à la page
Composant Delphi / Google Maps / OpenStreetMap / Leaflet  / Mappilary© 2016 ESCOT-SEP Christophe - Réalisé avec Help&Web - RSS - RSS - Google+