Herve_be
Messages postés997Date d'inscriptionmercredi 4 août 2010StatutMembreDernière intervention25 mai 2023
-
Modifié par Herve_be le 5/06/2014 à 15:53
Herve_be
Messages postés997Date d'inscriptionmercredi 4 août 2010StatutMembreDernière intervention25 mai 2023
-
5 juin 2014 à 19:02
Bonjour,
Je suis nul en javascript; j'utilise depuis longtemps un module trouvé sur le net sans vraiment savoir comment il fonctionne mais c'est le résultat qui compte : afficher une carte en utilisant Google map.
J'appelle une page html ainsi
//<![CDATA[ var MyMap; function LoadGPXFileIntoGoogleMap(map, filename) { var request = GXmlHttp.create(); request.open("GET", filename, true); request.onreadystatechange = function() { if (request.readyState == 4) { parser = new GPXParser(request.responseXML, map); parser.SetTrackColour("#FF00FF"); // Set the track line colour parser.SetTrackWidth(3); // Set the track line width
// parser.CenterAndZoom(request.responseXML, G_NORMAL_MAP); // Center and Zoom the map over all the points map mode. // parser.CenterAndZoom(request.responseXML, G_SATELLITE_MAP); // Center and Zoom the map over all the points satellite mode. // parser.CenterAndZoom(request.responseXML, G_SATELLITE_3D_MAP); // Center and Zoom the map over all the points satellite 3D mode. parser.CenterAndZoom(request.responseXML, G_HYBRID_MAP); // Center and Zoom the map over all the points mixed mode.
parser.AddTrackpointsToMap(); // Add the trackpoints parser.AddWaypointsToMap(); // Add the waypoints } } request.send(null); }
function onLoad() { MyMap = new GMap2(document.getElementById("map")); MyMap.enableScrollWheelZoom(); MyMap.addControl(new GLargeMapControl()); MyMap.addControl(new GMapTypeControl()); MyMap.addControl(new GScaleControl()); LoadGPXFileIntoGoogleMap(MyMap, gup('map')); }
Vous remarquerez les 4 lignes parser.CenterAndZoom(request.responseXML suivies d'un paramètre qui indique le type de carte à afficher (normale, satellite, ...) dont un est actif et les 3 autres en commentaires.
En fait j'ai plusieurs versions du document html; ils ne diffèrent que par la ligne qui n'est pas en commentaire; j'appelle l'un ou l'autre selon le type de carte que je veux afficher.
Ce que je voudrais faire : avoir un seul document qui détermine le type de carte en fonction du nom du fichier, plus précisément du 4ème caractère en partant de la droite, par exemple
map=VTT/Itineraires/140531R.xml doit afficher une carte normale
map=VTT/Itineraires/140531V.xml doit afficher une carte satellite
En fait, sachant que ceci n'est pas correct
Select case substr(FileName, -5, 1) case X parser.CenterAndZoom(request.responseXML, G_HYBRID_MAP); case Y parser.CenterAndZoom(request.responseXML, G_SATELLITE_MAP); case else parser.CenterAndZoom(request.responseXML, G_NORMAL_MAP); end select
jordane45
Messages postés37517Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 2 juin 2023341 5 juin 2014 à 15:54
Bonjour,
Donc ce que tu veux c'est pouvoir, en cliquant sur le lien appeller la carte de ton choix ?
Il te faut donc récupérer l'URL de la page pour en sortir le R / V ...
un truc du genre :
function LoadGPXFileIntoGoogleMap(map, filename){
// URL DE LA PAGE
var url = window.location.href;
// RECUP DU PARAMETRE :
var choix = url.slice(-5);
choix = choix.substring(0, 1);
// Choix de la carte en fonction du paramètre
var carteChoix ="";
switch(expression) {
case R:
carteChoix = G_NORMAL_MAP;
break;
case V:
carteChoix = G_SATELLITE_MAP;
break;
default:
carteChoix = G_NORMAL_MAP;
}
// ...
parser.CenterAndZoom(request.responseXML, carteChoix);
// ...
}
Herve_be
Messages postés997Date d'inscriptionmercredi 4 août 2010StatutMembreDernière intervention25 mai 20232 5 juin 2014 à 16:38
Merci pour ta réponse rapide.
Je pense que tu as bien compris ce que je veux faire mais ça ne fonctionne pas (la carte ne s'affiche pas); voici mon code (le tien légèrement modifié) : qu'ai-je fait comme bêtise ?
function LoadGPXFileIntoGoogleMap(map, filename) { var url = window.location.href; // URL DE LA PAGE var FileType = url.slice(-5); // RECUP DU PARAMETRE FileType = FileType.substring(0, 1);
// Choix de la carte en fonction du paramètre var MapType =""; switch(FileType) { case R: MapType = G_NORMAL_MAP; break; case V: MapType = G_HYBRID_MAP; break; case X: MapType = G_SATELLITE_MAP; break; case Y: MapType = G_SATELLITE_3D_MAP; break; default: MapType = G_NORMAL_MAP; } // Remove any existing overlays from the map. map.clearOverlays();
function LoadGPXFileIntoGoogleMap(map, filename) { // Remove any existing overlays from the map. map.clearOverlays();
var request = GXmlHttp.create(); request.open("GET", filename, true); request.onreadystatechange = function() { if (request.readyState == 4) { parser = new GPXParser(request.responseXML, map); parser.SetTrackColour("#FF00FF"); parser.SetTrackWidth(3); parser.SetMinTrackPointDelta(0.001);parser.CenterAndZoom(request.responseXML, G_NORMAL_MAP); // Center and Zoom the map over all the points map mode. // parser.CenterAndZoom(request.responseXML, G_SATELLITE_MAP); // Center and Zoom the map over all the points satellite mode. // parser.CenterAndZoom(request.responseXML, G_SATELLITE_3D_MAP); // Center and Zoom the map over all the points satellite 3D mode. parser.CenterAndZoom(request.responseXML, G_HYBRID_MAP); // Center and Zoom the map over all the points mixed mode. parser.AddTrackpointsToMap(); // Add the trackpoints parser.AddWaypointsToMap(); // Add the waypoints } } request.send(null); }
jordane45
Messages postés37517Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 2 juin 2023341 5 juin 2014 à 17:30
Il faut que tu ajoutes des ALERT ( ou des console.log) dans ton code pour vérifier si les variables contiennent bien les valeurs attendue.
Tu peux (dois ) aussi installer le plugin FireBug (pour FireFox) et y activer le débogage de script pour voir si tu n'as pas des erreurs sur ta page.
Ne disposant pas de ton plugin ni n'ayant vraiment le temps de me recréer une page comme la tienne sur mon pc... il va falloir que tu debug toi même le programme.