Passer un paramètre à un javascript [Résolu]

Herve_be 198 Messages postés mercredi 4 août 2010Date d'inscription 16 mars 2018 Dernière intervention - 5 juin 2014 à 15:20 - Dernière réponse : Herve_be 198 Messages postés mercredi 4 août 2010Date d'inscription 16 mars 2018 Dernière intervention
- 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 ?
Afficher la suite 

4 réponses

Répondre au sujet
jordane45 20610 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 24 avril 2018 Dernière intervention - 5 juin 2014 à 15:54
0
Utile
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); 


// ...
}



Commenter la réponse de jordane45
Herve_be 198 Messages postés mercredi 4 août 2010Date d'inscription 16 mars 2018 Dernière intervention - 5 juin 2014 à 16:38
0
Utile
1
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);
}
jordane45 20610 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 24 avril 2018 Dernière intervention - 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.
Commenter la réponse de Herve_be
Herve_be 198 Messages postés mercredi 4 août 2010Date d'inscription 16 mars 2018 Dernière intervention - 5 juin 2014 à 19:02
0
Utile
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.
Commenter la réponse de Herve_be

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.