J’ai travaillé dernièrement sur la création d’une couche Google Earth que j’ai dû ensuite convertir en Mapplet.
Voici en quelques lignes la solution technique que j’ai adoptée.
Commençons par la création d’un fichier KML (Google Earth)
Création du KML:
Google propose pour la création du fichier KML d’utiliser un fichier Excel disponible ici :http://earth.google.com/outreach/tutorial_spreadsheet.html et accessible depuis vos documents google. Rien de plus simple !
Je ne vais pas rentrer dans les détails du fonctionnement du fichier Excel car cela est très bien expliqué sur la doc de Google.
Pour être bref, dans ce fichier il y a plusieurs onglets mais vous n’en utiliserez que 2 ou 3.
Pour commencer, vous devriez compléter le premièr onglet « start here ». C’est ici que vous rentrez le nom de votre KML, une petite description, et les coordonnés d’ouverture de votre KML (latitude, longitude etc…).
Dans l’onglet « start here » vous avez 2 zones pour tester votre KML à la fois sur Google Earth et à la fois sur google Maps (si votre Kml est compatible avec Google Maps).
Pour tester sur Google Earth il suffit de copier le code XML dans « View Placemarks in Google Earth » et de le coller dans « mes lieux préférés » dans Google Earth (dans la barre de gauche):

Avant de tester votre KML, il vous faut d’abord rentrer les coordonnées et les données des points que vous désirez afficher sur Google Earth.
Pour cela allez dans l’onglet « PlacemarkData ».
Dans « placemarkData » vous avez plusieurs colonnes. En voici quelques une :
- Folder : ici vous pouvez rentrer le nom du dossier que vous voulez afficher sur la barre de gauche
- Placemark Name: le nom de votre « point » qui sera affiché sur la barre de gauche
- Latitude du point
- Longitude du point
- Template : le numéro du template que vous avez choisi pour afficher les informations une fois qu’on a cliqué sur le point.
Dans le fichier Excel que vous avez récupéré sur le site de Google vous trouverez déjà quelques exemples dans la partie »PlacemarkData », vous pouvez modifier la liste des « markers » qui ont été mis comme exemples pour mieux comprendre le fonctionnement de chaque colonne.
Une fois que votre fichier Excel est complet vous pouvez créer le fichier KML que vous pourrez ensuite mettre à disposition en téléchargement sur votre site ou le publier chez google ici: http://earth.google.com/intl/fr/submit.html
Pour créer le fichier KML, c’est très simple. Copiez et collez les code XML dans « mes lieux préférés » et ensuite faites un click droit sur le nom de votre KML dans la barre de gauche de Google Earth est choisissez « enregistrer le Lieu sous… ». Donnez un nom à votre fichier et préférez l’extension KMZ car c’est une version comprimée du fichier KML, plus légère et pratique si vous pensez l’envoyer par exemple par mail.
Création du Mapplet:
Pour la création du mapplet vous pouvez réutiliser le fichier KML pour l’intégrer directement sur GoogleMaps.
Voici d’abord la structure de base du fichier XML pour le Mapplet avec le KML:
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="Hello World"
       description="Displays a Hello World message in the left panel"
       author="Your name"
       author_email="your-email@gmail.com"
       height="150">
<Require feature="sharedmap"/>
</ModulePrefs>
<Content type="html"><![CDATA[
<script>
var map;
var geoXml;
var toggleState = 1;
if (GBrowserIsCompatible()) {
geoXml = new GGeoXml("http://MONDOMAINE.com/MON_KML.kml");
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(41.875696,-87.624207), 11);
map.setUIToDefault();
map.addOverlay(geoXml);
}
function toggleMyKml() {
if (toggleState == 1) {
map.removeOverlay(geoXml);
toggleState = 0;
} else {
map.addOverlay(geoXml);
toggleState = 1;
}
}
</script>
]]></Content>
</Module>
Avec cet méthode, j’ai eu quelques difficultés car je n’arrivais pas à interagir avec les points sur la carte en cliquant sur des liens présents sur le sidebar de gauche.
J’ai donc choisi de reconstruire tout mon kml en javascript pour mapplet. Il y a sûrement des solutions pour arriver au même résultat tout en conservant le fichier kml mais mes recherches ont pris trop de temps et j’ai donc tranché.
Voici en quelques lignes javascript la méthode que j’ai utilisée:
J’ai defini d’abord un array pour stocker toutes les informations de mes points (coordonnées, nom et contenu)
var MapsContentArr=new Array(); MapsContentArr[0]=new Array(); MapsContentArr[0]["name"]="marker 1"; MapsContentArr[0]["lat"]=-33.933; MapsContentArr[0]["long"]=18.467; MapsContentArr[0]["content"]="Hello from marker 1!"; MapsContentArr[1]=new Array(); MapsContentArr[1]["name"]="marker 2"; MapsContentArr[1]["lat"]=-26.167; MapsContentArr[1]["long"]=28.033; MapsContentArr[1]["content"]="Hello from marker 2!";
J’ai ensuite utilisé mon array pour afficher les points sur la carte:
Tout d’abord j’ai créé un objet Gmap2:
var map = new GMap2();
map.setMapType(G_SATELLITE_MAP);
// Create our "tiny" marker icon
var baseIcon = new GIcon(G_DEFAULT_ICON);
baseIcon.image = "http://www.MONDOMAINE.com/MONICONE.png";
baseIcon.iconSize = new GSize(32, 32);
// Set up our GMarkerOptions object
markerOptions = { icon:baseIcon };
J’ai ensuite créé la fonction javascript qui sera appelée par mes liens sur le sidebar de gauche:
marker=new Array();
function open_Marker(nbmarker){
if(nbmarker>-1){
point = new GLatLng(MapsContentArr[nbmarker]["lat"],MapsContentArr[nbmarker]["long"]);
marker[nbmarker]= new GMarker(point,markerOptions);
map.addOverlay(marker[nbmarker]);
marker[nbmarker].openInfoWindowHtml(MapsContentArr[nbmarker]["content"]);
GEvent.addListener( marker[nbmarker], "click", function() {
marker[nbmarker].openInfoWindowHtml(MapsContentArr[nbmarker]["content"]);
});
}
}
Voici maintenant mes 2 liens sur le sidebar:
<a href="#" onclick="open_Marker(0);return false;" >Open Marker 1</a> <a href="#" onclick="open_Marker(1);return false;" >Open Marker 2</a>
Vous pouvez voir mon Mapplet et mon KML ici:
Le Mapplet
Le KML
Alors là bravo, super article. Très intéressant à lire. Merci beaucoup !
Votre blog est d’une grande qualite . Je suis devenu un lecteur assidu.