FORMATION CONTINUE IGSO GLOBES VIRTUELS MÉCANISMES ET APPLICATIONS MONTAGE D UNE INTERFACE SUR LA BASE DES API S GOOGLE EARTH ET GOOGLE MAPS



Documents pareils
.. CSS. Damien Nouvel. Damien Nouvel (Inalco) CSS 1 / 15

TP JAVASCRIPT OMI4 TP5 SRC

HTML, CSS, JS et CGI. Elanore Elessar Dimar

JOOMLA 1.5 avancé SUPPORT DE COURS + annexe

HTML. Google Maps. Approfondir. 3 :HIKONB=^UZ^Z]:?k@l@g@h@a"; Codez une fois, déployez sur Android, ios, Kindle... Smartphones. Matériel.

Paris Airports - Web API Airports Path finding

UN SITE WEB RESPONSIVE EN UNE HEURE?

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

Introduction aux concepts d ez Publish

Formation HTML / CSS. ar dionoea

Créer une base de données vidéo sans programmation (avec Drupal)

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

Travaux dirigés n 10

Tutoriel : Feuille de style externe

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Guide de réalisation d une campagne marketing

Media queries : gérer différentes zones de visualisation

Optimiser pour les appareils mobiles

Responsive Design. Technologies du web. Stéphane Bouvry, 2014

SYSTÈMES D INFORMATIONS

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

{less} Guide de démarrage

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

RESPONSIVE WEB DESIGN

Introduction à Expression Web 2

SPECIFICITES TECHNIQUES DES FORMATS PUBLICITAIRES

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Bernard Lecomte. Débuter avec HTML

Normes techniques 2011

Celui qui vous parle. Yann Vigara

Rapport de stage Nicolas PLAZE Licence Pro A2I. Rapport de Stage LICENCE PRO A2I. Société INFHOTIK. Nicolas PLAZE

RESPONSIVE DESIGN : Comment offrir à vos sites une adaptabilité parfaite?

TP 5 Les CMS, la forme et le fond Internet et Outils (IO2)

Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites. Quelles solutions peuvent être employées?

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

Responsive Web Design. Responsive Design avec HTML 5.0 et CSS3

Intégrateur Web HTML5 CSS3

1. La notion de cascade

CREATION d UN SITE WEB (INTRODUCTION)

Zen, SASS, responsive design

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Présentation du Framework BootstrapTwitter

Université de Toulouse-Le Mirail janvier 2012 Département de Géographie-Aménagement-Environnement Laurent Jégou

Initiation à html et à la création d'un site web

HTML. Notions générales

Création WEB avec DreamweaverMX

BASE. Vous avez alors accès à un ensemble de fonctionnalités explicitées ci-dessous :

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Luc Brun. Création de pages Web Dynamiques p.1/75

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Support Web Administration et gestion des portails web des facultés - Université A.Mira Béjaia -

Banque de données d offres & carte web interactive d offres

Dojo Toolkit. Créer des applications AJAX/RIA en JavaScript. Thomas Corbière

DOM - Document Object Model

Activités HTML. Code: act-html

RÉALISATION D UN SITE DE RENCONTRE

SPÉCIFICATIONS TECHNIQUES DES FORMATS PUBLICITAIRES

Programmation Web. Madalina Croitoru IUT Montpellier

Formulaires et Compteurs

ING & NEWSLETTER NEWSLETTER RESPONSIVE

14 Cartographie Web et mobile

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Découvrir Drupal. Les meilleurs thèmes et modules Drupal (présenta5on démo)

Google Drive, le cloud de Google

Séance d ED n 5 : HTML et JavaScript

TUTORIEL CartoDB 11/03/15

Construire une application marketing Facebook sur la plateforme Windows Azure

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Spécificités Techniques créations publicitaires

Stage «Créer et animer un site Web en équipe»

Intégration ESRI - SAP Geo-Enablement de l ERP SAP Exemple : GEO.e. Christophe Lapierre Enrique Yaptenco Professional Services - ESRI Suisse

Grille fluide. Une grille fluide sert à structurer la mise en page, la rendre harmonieuse et faciliter le passage au responsive web design

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

3. RÉALISATION ET QUALIFICATION D UN PROTOTYPE 3.1 Réalisation d un prototype CRÉATION D UNE PAGE WEB STATIQUE AU FORMAT HTML

Attaques de type. Brandon Petty

SOUTENANCE ORALE RAPPORT DE PROJET D INFORMATIQUE

Un jour, une question Réponse à une problématique issue de la liste GTA *

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Manuel du composant CKForms Version 1.3.2

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

Module d introduction Comment réaliser vos propres cartes avec ArcGIS Online

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

Notes pour l utilisation d Expression Web

Cours iguess. inotes v10.1

Alfstore workflow framework Spécification technique

ENVOI EN NOMBRE DE Mails PERSONNALISES

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Pour en expliquer le principe, on se limitera à deux exemples :

WORDPRESS : réaliser un site web

Contenu. Thème «responsive» pour WordPress Installer le thème responsive (disponible aussi sur le site wordpress.org) Activer ce thème

Association UNIFORES 23, Rue du Cercler LIMOGES

25 mars. Tutoriel sur Laravel. Préparé par : Lydiane Beaulne-Bélisle. Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel.

Transcription:

FORMATION CONTINUE IGSO GLOBES VIRTUELS MÉCANISMES ET APPLICATIONS MONTAGE D UNE INTERFACE SUR LA BASE DES API S GOOGLE EARTH ET GOOGLE MAPS CODE COMPLET ET COMMENTÉ DE L INTERFACE TABLE DES MATIÈRES 1. Avant de commencer... 2 1.1. Squelette HTML... 2 1.2. Style CSS... 2 2. Utilisation basique de l API Google Earth... 3 2.1. Obtention d une clé et insertion... 3 2.2. Création d un fichier JavaScript... 3 2.3. Squelette pour l utilisation de l API... 3 2.4. Vue par défaut (dans initcb)... 3 2.5. Affichage des contrôles (dans initcb)... 4 2.6. Affichage des couches (dans initcb)... 5 3. Interactions avec Google Earth... 6 3.1. Contrôles... 6 3.2. Couches... 6 3.3. Affichage KML... 7 3.4. Géocodage... 8 4. Fichiers finaux... 10 4.1. index.htm... 10 4.2. ge.js... 11 4.3. style.css... 13 5. Liens utiles... 14 5.1. Google... 14 Rémi BOVARD, Francis GRIN 1 27 mai 2010

1. AVANT DE COMMENCER 1.1. Squelette HTML Séparation de la page en deux parties à l aide de conteneurs Le conteneur «map» accueillera le globe virtuel fichier à enregistrer sous index.htm <html> <head> <title>api Google Earth</title> <link rel="stylesheet" type="text/css" href="style.css" media="screen" /> </head> <body> <div id="panel"> <div id="content"> <h1>api Google Earth</h1> <p>démonstration de quelques fonctionnalités de l'api Google Earth...</p> </div> </div> <div id="map"></div> </body> </html> 1.2. Style CSS Mise en page sommaire avec une feuille de style fichier à enregistrer sous style.css body { font-family: arial; font-size: 12px; margin: 0; h1 { font-size: 20px; #map { height: 100%; float: left; width: 80%; #panel { float: left; height: 100%; width: 20%; #content { padding: 10px; fieldset { margin-bottom: 12px; input { font-size: 10px; img { border: 0; Rémi BOVARD, Francis GRIN 2 27 mai 2010

2. UTILISATION BASIQUE DE L API GOOGLE EARTH 2.1. Obtention d une clé et insertion Adresse : http://code.google.com/intl/fr/apis/maps/signup.html La clé est valable uniquement pour un nom de domaine Accès à l API de Google avec JavaScript à l adresse http://www.google.com/jsapi?key= (avec la clé obtenue précédemment) <script type="text/javascript" src="http://www.google.com/jsapi?key="></script> 2.2. Création d un fichier JavaScript Création d un fichier JavaScript «ge.js» qui contiendra le code pour interagir avec Google Earth <script type="text/javascript" src="ge.js"></script> 2.3. Squelette pour l utilisation de l API Chargement de l API Google Earth Création d une instance Google Earth dans le conteneur «map» Affichage du globe virtuel Lancement des fonctions «init» (et après «initcb») à la fin du chargement de la page HTML fichier à enregistrer sous ge.js var ge; google.load("earth", "1"); function init() { google.earth.createinstance("map", initcb); function initcb(instance) { ge = instance; ge.getwindow().setvisibility(true); google.setonloadcallback(init); Méthodes google.load (string modulename, string moduleversion, array optionalsettings) : Chargement de l API Google, avec sa version google.earth.createinstance (object domnode, function initcallback) : Création d une instance du plugin Google Earth dans conteneur de la page HTML et appel d une fonction en cas de succès ge.getwindow().setvisibility (bool visibility) : Rend visible le globe dans le navigateur google.setonloadcallback (function init) : Appel d une fonction lorsque la page HTML et l API sont chargées 2.4. Vue par défaut (dans initcb) Définition de l emplacement de la vue au chargement Paramètres : longitude et latitude, hauteur, inclinaison /* View ******* */ var lookat = ge.createlookat(""); Rémi BOVARD, Francis GRIN 3 27 mai 2010

// Coordinates lookat.setlatitude(46.777); lookat.setlongitude(6.65); lookat.setrange(2500); // Camera inclinaison lookat.settilt(60); // Go to ge.getview().setabstractview(lookat); Méthodes ge.createlookat() : Création d une nouvelle vue (position de la caméra sur un objet à visualiser) lookat.setlatitude (double latitude) : Latitude du point que la caméra regarde, valeurs comprises entre 90 (Pôle sud) et 90 (Pôle nord) lookat.setlongitude (double longitude) : Longitude du point que la caméra regarde, valeurs comprises entre 180 et 180 lookat.setrange (double range) : Distance en mètres par rapport au point lookat.settilt (double tilt) : Angle entre la direction du point et la normale à la surface de la Terre, valeurs comprises entre 0 (vue de dessus) et 90 (vue le long de l horizon) ge.getview().setabstractview (KmlAbstractView view) : Défini la caméra dans Google Earth 2.5. Affichage des contrôles (dans initcb) Affichage du contrôle de navigation Affichage des différentes options (barre de statut, barre d échelle) ge.getnavigationcontrol().setvisibility(ge.visibility_show); ge.getoptions().setunitsfeetmiles(false); // Metric units ge.getoptions().setstatusbarvisibility(true); ge.getoptions().setscalelegendvisibility(true); ge.getoptions().setgridvisibility(true); ge.getoptions().setoverviewmapvisibility(true); ge.getsun().setvisibility(true); Méthodes ge.getnavigationcontrol().setvisibility (GEVisibilityEnum visibility) : Visibilité des contrôles de navigation : o ge.visibility_show : Toujours o ge.visibility_hide : Jamais o ge.visibility_auto : Caché si non utilisé (affichage avec survol de la souris) ge.getoptions().setunitsfeetmiles (bool unitsfeetmiles) : Défini le système d unité d affichage (vrai : impérial ou faux : métrique) ge.getoptions().setstatusbarvisibility (bool statusbarvisibility) : Visibilité de la barre de statut ge.getoptions().setscalelegendvisibility (bool scalelegendvisibility) : Visibilité de la barre d échelle ge.getoptions().setgridvisibility (bool gridvisibility) : Visibilité de la grille Rémi BOVARD, Francis GRIN 4 27 mai 2010

ge.getoptions().setoverviewmapvisibility (bool overviewmapvisibility) : Visibilité de la mini carte ge.getsun().setvisibility (bool visibility) : Visibilité du soleil (composante temporelle) Montage d une interface 2.6. Affichage des couches (dans initcb) Activation des couches (Frontières et noms, routes) ge.getlayerroot().enablelayerbyid(ge.layer_borders, true); ge.getlayerroot().enablelayerbyid(ge.layer_roads, true); ge.getlayerroot().enablelayerbyid(ge.layer_buildings, true); ge.getlayerroot().enablelayerbyid(ge.layer_buildings_low_resolution, true); Méthode ge.getlayerroot().enablelayerbyid (string id, bool visibility) : Active une couche en fonction de son identifiant : o LAYER_BORDERS : Frontières des pays et régions, noms des villes, lieux, états, lacs, etc. o LAYER_BUILDINGS : Bâtiments 3D o LAYER_BUILDINGS_LOW_RESOLUTION : Batiments gris (non texturé) o LAYER_ROADS : Routes et noms de routes o LAYER_TERRAIN : Terrain 3D Rémi BOVARD, Francis GRIN 5 27 mai 2010

3. INTERACTIONS AVEC GOOGLE EARTH 3.1. Contrôles HTML Création de checkboxes pour chaque option (échelle, barre de statut) Ajout d un événement JavaScript de type «onclick» sur les checkboxes, qui appelle la fonction toggleoption avec en paramètre son identifiant (id = nom de l option) <fieldset> <legend>options</legend> <p><label><input type="checkbox" id="statusbar" onclick="toggleoption(this.id)" /> Barre de status</label></p> <p><label><input type="checkbox" id="scalelegend" onclick="toggleoption(this.id)" /> Echelle</label></p> </fieldset> JavaScript Création de la fonction «toggleoption» Récupération de la checkbox (identifiant) qui a appelée la fonction Test du statut (coché ou décoché) et création d une variable avec le statut Concaténation de l option et du statut pour modifier le contrôle via l API (p. ex. : ge.getoptions().setgridvisibility(true)) Exécution de la commande function toggleoption(option) { var objcheckbox = document.getelementbyid(option); (objcheckbox.checked)? newstatus = "true" : newstatus = "false"; var command = "ge.getoptions().set" + option + "Visibility(" + newstatus + ")"; eval(command); 3.2. Couches HTML Création de checkboxes pour chaque couche (frontières et noms, routes) Ajout d un événement JavaScript de type «onclick» sur les checkboxes, qui appelle la fonction togglelayer avec en paramètre son identifiant (id = nom de la couche) <p><label><input type="checkbox" id="borders" onclick="togglelayer(this.id)" /> Frontières et noms</label></p> <p><label><input type="checkbox" id="roads" onclick="togglelayer(this.id)" /> Routes</label></p> JavaScript Création de la fonction «togglelayer» Récupération de la checkbox (identifiant) qui a appelée la fonction Test du statut (coché ou décoché) et création d une variable avec le statut Concaténation de la couche et du statut pour modifier la couche via l API (p. ex. : ge.getlayerroot().enablelayerbyid(ge.layer_roads, true)) Exécution de la commande Rémi BOVARD, Francis GRIN 6 27 mai 2010

function togglelayer(layer) { var objcheckbox = document.getelementbyid(layer); (objcheckbox.checked)? newstatus = "true" : newstatus = "false"; var command = "ge.getlayerroot().enablelayerbyid(ge.layer_" + layer + ", " + newstatus + ")"; eval(command); 3.3. Affichage KML HTML Création de checkboxes pour chaque ficher Ajout d un événement JavaScript de type «onclick» sur les checkboxes, qui appelle la fonction togglefile avec en paramètre son identifiant (id = nom du fichier) <fieldset> <legend>kml</legend> <p><label><input type="checkbox" id="batiments.kmz" onclick="togglefile(this.id)" /> Bâtiments</label></p> <p><label><input type="checkbox" id="luminaires.kmz" onclick="togglefile(this.id)" /> Luminaires</label></p> <p><label><input type="checkbox" id="eclairage.kml" onclick="togglefile(this.id)" /> Eclairage</label></p> </fieldset> JavaScript Création d un tableau contenant les noms de fichier à afficher (à paramétrer) var currentkml = { "fichier1.kmz": null, // To set "fichier2.kml": null, // To set "fichier3.kmz": null // To set ; Création de la fonction «togglefile» Récupération de la checkbox (identifiant) qui a appelée la fonction Test du statut (coché ou décoché) Si coché, appel de la fonction «readkml» Autrement, désactivation du KML actuellement affiché function togglefile(file) { var objcheckbox = document.getelementbyid(file); if (objcheckbox.checked) { readkml(file); else { ge.getfeatures().removechild(currentkml[file]); currentkml[file] = null; Méthode ge.getfeatures().removechild (KmlObject oldchild) : Enlève l objet KML Création de la fonction «readkml» Définition de l emplacement (dossier) des fichiers (à paramétrer) Rémi BOVARD, Francis GRIN 7 27 mai 2010

Définition du fichier à afficher Lecture du fichier KML Déplacement de la caméra sur le KML (si une vue est définie dans le KML) Montage d une interface function readkml(file) { var kmlfolder = "http://site.com/dossier/"; // To set var kmlurl = kmlfolder + file; google.earth.fetchkml(ge, kmlurl, function(kml) { if (!kml) { alert("erreur : Lecture du fichier KML impossible!"); return; ge.getfeatures().appendchild(kml); currentkml[file] = kml; if (kml.getabstractview()) { ge.getview().setabstractview(kml.getabstractview()); ); Méthodes google.earth.fetchkml (GEPlugin plugininstance, string url, function completioncallback) : Récupère et analyse un fichier KML ou KMZ avec son URL ge.getfeatures().appendchild (KmlObject object) : Ajoute l objet KML kml.getabstractview () : Récupère la caméra du fichier KML 3.4. Géocodage HTML Création d un formulaire de saisie Ajout d un événement JavaScript de type «onsubmit» sur le formulaire, qui appelle la fonction «goto» <fieldset> <legend>géocodage</legend> <form action="" onsubmit="goto(); return false"> <p><input id="location" type="text" size="30" /> <input type="submit" value="aller"></p> </form> </fieldset> JavaScript Chargement de l API Google Maps google.load("maps", "2"); Création de la fonction «goto» Récupération de la valeur saisie Création d un «GeoCoder» (objet issu de l API Google Maps) Récupération des coordonnées (latitude et longitude) de l emplacement si le lieu est trouvé (autrement un message d erreur est affiché) Déplacement de la caméra sur le lieu Ajout d un marqueur sur le lieu Rémi BOVARD, Francis GRIN 8 27 mai 2010

function goto() { var geocodelocation = document.getelementbyid("location").value; var geocoder = new google.maps.clientgeocoder(); Montage d une interface geocoder.getlatlng(geocodelocation, function(point) { ); if (!point) { alert(geocodelocation + " pas trouvé!") else { Méthodes // Camera var lookat = ge.createlookat(""); lookat.setlatitude(point.y); lookat.setlongitude(point.x); lookat.setrange(1000); lookat.settilt(60); ge.getview().setabstractview(lookat); // Marker var placemark = ge.createplacemark(""); placemark.setname(geocodelocation); var place = ge.createpoint(""); place.setlatitude(point.y); place.setlongitude(point.x); placemark.setgeometry(place); ge.getfeatures().appendchild(placemark); google.maps.clientgeocoder () : Création d une instance du «géocodeur» de Google (API Maps) geocoder.getlatlng (string address) : Envoi d une requête qui géocode une adresse et, en cas de succès, retourne ses coordonnées ge.createplacemark () : Crée un marqueur placemark.setname (string name) : Définition du nom (étiquette) du marqueur ge.createpoint () : Création d un point place.setlatitude (double latitude) : Latitude du point, valeurs comprises entre 90 (Pôle sud) et 90 (Pôle nord) place.setlongitude (double longitude) : Longitude du point, valeurs comprises entre 180 et 180 placemark.setgeometry (KmlGeometry geometry) : Définition de la géométrie du marqueur ge.getfeatures().appendchild (KmlObject object) : Ajout du marqueur sur le globe Rémi BOVARD, Francis GRIN 9 27 mai 2010

4. FICHIERS FINAUX 4.1. index.htm <html> <head> <title>api Google Earth</title> <link rel="stylesheet" type="text/css" href="style.css" media="screen" /> <script type="text/javascript" src="http://www.google.com/jsapi?key=abqiaaaamnup2osczib71lfpqbvdtbs36fy1c67ufvqw6k5574vkbbkjh xrbupp4gx_hzn2xul_73xpvkbjocw"></script> <script type="text/javascript" src="ge.js"></script> </head> <body> <div id="panel"> <div id="content"> <h1>api Google Earth</h1> <p>démonstration de quelques fonctionnalités de l'api Google Earth dans le cadre du cours «Globes virtuels» de l'igso du 27 mai 2010.</p> <fieldset> <legend>options</legend> <p><label><input type="checkbox" id="statusbar" onclick="toggleoption(this.id)" /> Barre de status</label></p> <p><label><input type="checkbox" id="scalelegend" onclick="toggleoption(this.id)" /> Echelle</label></p> <p><label><input type="checkbox" id="borders" onclick="togglelayer(this.id)" /> Frontières et noms</label></p> <p><label><input type="checkbox" id="roads" onclick="togglelayer(this.id)" /> Routes</label></p> </fieldset> <fieldset> <legend>kml</legend> <p><label><input type="checkbox" id="batiments.kmz" onclick="togglefile(this.id)" /> Bâtiments</label></p> <p><label><input type="checkbox" id="luminaires.kmz" onclick="togglefile(this.id)" /> Luminaires</label></p> <p><label><input type="checkbox" id="eclairage.kml" onclick="togglefile(this.id)" /> Eclairage</label></p> <p><label><input type="checkbox" id="heigvd_mnt.kmz" onclick="togglefile(this.id)" /> HEIG-VD (Cheseaux)</label></p> <p><label><input type="checkbox" id="st-roch.kmz" onclick="togglefile(this.id)" /> HEIG-VD (St-Roch)</label></p> <p><label><input type="checkbox" id="viaduc_des_vaux.kmz" onclick="togglefile(this.id)" /> Viaduc des Vaux</label></p> <p><label><input type="checkbox" id="sargans.kml" onclick="togglefile(this.id)" /> Vol ADS40</label></p> </fieldset> <fieldset> <legend>géocodage</legend> <form action="" onsubmit="goto(); return false"> <p><input id="location" type="text" size="30" /> <input type="submit" value="aller"></p> </form> </fieldset> <p> <a href="http://www.heig-vd.ch/" target="_blank"><img src="img/logo_heigvd.png" alt="heig-vd" title="heig-vd" /></a> <a href="http://www.igso.ch/" target="_blank"><img src="img/logo_igso.png" alt="igso" title="igso" /></a> </p> </div> </div> <div id="map"></div> </body> </html> Rémi BOVARD, Francis GRIN 10 27 mai 2010

4.2. ge.js var ge; var currentkml = { "fichier1.kmz": null, // To set "fichier2.kml": null, // To set "fichier3.kmz": null // To set ; google.load("earth", "1"); google.load("maps", "2"); function init() { google.earth.createinstance("map", initcb); function initcb(instance) { ge = instance; ge.getwindow().setvisibility(true); ge.getoptions().setunitsfeetmiles(false); // Meteric units /* View ******* */ var lookat = ge.createlookat(""); // Coordinates lookat.setlatitude(46.777); lookat.setlongitude(6.65); lookat.setrange(2500); // Camera inclinaison lookat.settilt(60); // Go to ge.getview().setabstractview(lookat); /* Controls *********** */ ge.getnavigationcontrol().setvisibility(ge.visibility_show); //ge.getoptions().setstatusbarvisibility(true); //ge.getoptions().setscalelegendvisibility(true); //ge.getoptions().setgridvisibility(true); //ge.getoptions().setoverviewmapvisibility(true); //ge.getsun().setvisibility(true); /* Layers ********* */ //ge.getlayerroot().enablelayerbyid(ge.layer_borders, true); //ge.getlayerroot().enablelayerbyid(ge.layer_roads, true); //ge.getlayerroot().enablelayerbyid(ge.layer_buildings, true); //ge.getlayerroot().enablelayerbyid(ge.layer_buildings_low_resolution, true); google.setonloadcallback(init); /* Options ********** */ function toggleoption(option) { var objcheckbox = document.getelementbyid(option); (objcheckbox.checked)? newstatus = "true" : newstatus = "false"; var command = "ge.getoptions().set" + option + "Visibility(" + newstatus + ")"; eval(command); /* Layers ********* */ function togglelayer(layer) { var objcheckbox = document.getelementbyid(layer); (objcheckbox.checked)? newstatus = "true" : newstatus = "false"; Rémi BOVARD, Francis GRIN 11 27 mai 2010

var command = "ge.getlayerroot().enablelayerbyid(ge.layer_" + layer + ", " + newstatus + ")"; eval(command); /* Display file *************** */ function togglefile(file) { var objcheckbox = document.getelementbyid(file); if (objcheckbox.checked) { readkml(file); else { ge.getfeatures().removechild(currentkml[file]); currentkml[file] = null; /* Read KML *********** */ function readkml(file) { var kmlfolder = "http://site.com/dossier/"; // To set var kmlurl = kmlfolder + file; google.earth.fetchkml(ge, kmlurl, function(kml) { if (!kml) { alert("erreur : Lecture du fichier KML impossible!"); return; ge.getfeatures().appendchild(kml); currentkml[file] = kml; if (kml.getabstractview()) { ge.getview().setabstractview(kml.getabstractview()); ); /* Geocoding ************ */ function goto() { var geocodelocation = document.getelementbyid("location").value; var geocoder = new google.maps.clientgeocoder(); geocoder.getlatlng(geocodelocation, function(point) { ); if (!point) { alert(geocodelocation + " pas trouvé!") else { // Camera var lookat = ge.createlookat(""); lookat.setlatitude(point.y); lookat.setlongitude(point.x); lookat.setrange(1000); lookat.settilt(60); ge.getview().setabstractview(lookat); // Marker var placemark = ge.createplacemark(""); placemark.setname(geocodelocation); var place = ge.createpoint(""); place.setlatitude(point.y); place.setlongitude(point.x); placemark.setgeometry(place); ge.getfeatures().appendchild(placemark); Rémi BOVARD, Francis GRIN 12 27 mai 2010

4.3. style.css body { font-family: arial; font-size: 12px; margin: 0; h1 { font-size: 20px; #map { background-color: #e6e6e6; height: 100%; float: left; width: 80%; #panel { float: left; height: 100%; width: 20%; #content { padding: 10px; fieldset { margin-bottom: 12px; input { font-size: 10px; img { border: 0; Rémi BOVARD, Francis GRIN 13 27 mai 2010

5. LIENS UTILES 5.1. Google Guide : http://code.google.com/intl/fr/apis/earth/documentation/ Exemples : http://code.google.com/intl/fr/apis/earth/documentation/examples.html Galerie de démonstration : http://code.google.com/intl/fr/apis/earth/documentation/ demogallery.html Référence : http://code.google.com/intl/fr/apis/earth/documentation/reference/ Clé : http://code.google.com/intl/fr/apis/maps/signup.html Rémi BOVARD, Francis GRIN 14 27 mai 2010