Passer un paramètre à un javascript

Résolu
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 - Modifié par Herve_be le 5/06/2014 à 15:53
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 - 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
<a href='../Map.html?map=VTT/Itineraires/140531R.xml'>
code de la page invoquée
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps GPX Test - async</title>
<style type="text/css">
v\:*
{
behavior:url(#default#VML);
}
</style>
<script src="http://maps.google.com/maps?file=api&v=2&key=maclédaccès" type="text/javascript"></script>
<script src="loadgpx.4.js" type="text/javascript"></script>
<script type="text/javascript">

//<![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'));
}

//]]>
</script>
</head>
<body onload="onLoad()">
<div id="map" style="width: 100%; height: 100%;"></div>
</body>
</html>
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

Pouvez-vous m'aider à coder ceci correctement ?

3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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); 


// ...
}



0
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 2
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();

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, MapType );
parser.AddTrackpointsToMap();
parser.AddWaypointsToMap();
}
}
request.send(null);
}
Voici le code d'origine qui fonctionne
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);
}
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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.
0
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 2
5 juin 2014 à 19:02
J'ai trouvé !
Il ne faut pas aller chercher le paramètre dans l'url mais dans le paramètre "map".
Merci encore pour ton aide.
0
Rejoignez-nous