Utilisation des Script GoogleMap V3 et les if ==

Résolu
cs_ssd Messages postés 50 Date d'inscription dimanche 1 juin 2003 Statut Membre Dernière intervention 31 août 2011 - 29 août 2011 à 11:55
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 - 29 août 2011 à 17:08
Bonjour,
Je suis entrain de faire un petit script permettant de visualiser sur une carte google map, la porté d'un relais TPH. Pour cela j'utilise les API google map V3.

Je voudrais pouvoir choisir le réseau à afficher en fonction de plusieurs checkbox. Je rencontre un problème quand j'exécute mon script, il m'affiche la carte mais ne dessine pas les cercles. Je semble avoir un problème dans l'écriture de ma condition. Pouvez-vous me renseigner.

Cordialement,
SSD

Ci-dessous la copie de mon code...
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100% }
</style>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>

<script type="text/javascript">

var citymap = {};

// relais Bouygues Télecom
if (bouygues.checked == true) {
citymap['barraux_bouygues'] = {
center: new google.maps.LatLng(45.452334 , 5.987889),
puissance: 5000,
couleur: "#279CDF", // bleu
nom_operateur : "Bouygues Télécom",
adresse :""
};

citymap['allevard_bouygues'] = {
center: new google.maps.LatLng(45.391217 , 6.038089),
puissance: 5000,
couleur: "#279CDF", // bleu
nom_operateur : "Bouygues Télécom",
adresse :""
};

citymap['la_chapelle_blanche_bouygues'] = {
center: new google.maps.LatLng(45.448691 , 6.055691),
puissance: 5000,
couleur: "#279CDF", // bleu
nom_operateur : "Bouygues Télécom",
adresse :"Villard Martin"
};
}

//Relais Orange
citymap['la_chapelle_blanche_orange'] = {
center: new google.maps.LatLng(45.448691 , 6.055691),
puissance: 5000,
couleur: "#0BD426",
nom_operateur : "Orange",
adresse :"Villard Martin"
};

citymap['pontcharra_orange'] = {
center: new google.maps.LatLng(45.436709 , 6.011659),
puissance: 5000,
couleur: "#0BD426",
nom_operateur : "Orange",
adresse :""
};

//Relais sfr
citymap['la_chappelle_blanche_sfr'] = {
center: new google.maps.LatLng(45.448691 , 6.055691),
puissance: 5000,
couleur: "#E80A3D",
nom_operateur : "SFR",
adresse :"Villard Martin"
};

citymap['saint_vincent_de_mercuze_sfr'] = {
center: new google.maps.LatLng(45.379749 , 5.966302),
puissance: 5000,
couleur: "#E80A3D",
nom_operateur : "SFR",
adresse :""
};

citymap['pontcharra_sfr'] = {
center: new google.maps.LatLng(45.43755 , 6.016084),
puissance: 5000,
couleur: "#E80A3D",
nom_operateur : "SFR",
adresse :"795 rue des Méttanies"
}


var cityCircle;

function initialize() {
var mapOptions = {
zoom: 10,
center: new google.maps.LatLng(45.452334, 5.987889),
mapTypeId: google.maps.MapTypeId.TERRAIN
};

var map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);

for (var city in citymap) {
// Dessine le cercle en fonction du rayon de la puissance*2.
var puissanceOptions = {
strokeColor: citymap[city].couleur,
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: citymap[city].couleur, //"#FF0000",
fillOpacity: 0.35,
map: map,
center: citymap[city].center,
radius: citymap[city].puissance * 2
};
cityCircle = new google.maps.Circle(puissanceOptions);
}
}


</script>
</head>

<!--onload="initialize()">-->


SFR
Orange
Bouygues Telecom
Free
<!-- Afficher un bouton de style-->
<!--INPUT TYPE=BUTTON NAME="reload" VALUE="Rafraichir" ALIGN=RIGHT>-->









</html>

1 réponse

Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
29 août 2011 à 17:08
Bonjour, en effet plusieurs petit soucis, mais rien de bien méchant...
il faut faire le traitement en plusieurs étape.
la première est initialiser la listes des opérateurs et les différentes informations relative à la position de l'émetteur et autres...
(ce que j'ai appelé informations ci-dessous).
Ensuite il suffit de mettre en place le traitement qui va bien et la ça roule.
le problème du script fourni est qu'il tourne en erreur rien que sur la ligne:
if (document.bouygues.checked)
en effet, au moment ou ce code est interprété, la page n'est pas encore rendu (on est dans le head, le body, n'est pas passé par la), mais il est a noté que ce test n'est pas faux (donc pas de problème avec le if... ) juste il est inutile de précisé == true (pas grave de le mettre non plus).

je pense que ceci devrait corrigé le problème

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100% }
</style>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>

<script type="text/javascript">

// Contient les informations en fonction du fournisseur d'accès.
// Attention, il doit y a voir une correspondance entre l'identifiant de la case à cochée et l'indice du tableau informations.
// exemple: bouygues -> bouygues...
var informations ={};

// initialisation des maps
// Cas de bouygues
informations["bouygues"] = new Array();

informations["bouygues"].push({
center: new google.maps.LatLng(45.452334 , 5.987889),
puissance: 5000,
couleur: "#279CDF", // bleu
nom_operateur : "Bouygues Télécom",
adresse :""
});

informations["bouygues"].push({
center: new google.maps.LatLng(45.391217 , 6.038089),
puissance: 5000,
couleur: "#279CDF", // bleu
nom_operateur : "Bouygues Télécom",
adresse :""
});

informations["bouygues"].push({
center: new google.maps.LatLng(45.448691 , 6.055691),
puissance: 5000,
couleur: "#279CDF", // bleu
nom_operateur : "Bouygues Télécom",
adresse :"Villard Martin"
});

// Cas d'Orange
informations["orange"] = new Array();
//Relais Orange
informations["orange"].push({
center: new google.maps.LatLng(45.448691 , 6.055691),
puissance: 5000,
couleur: "#0BD426",
nom_operateur : "Orange",
adresse :"Villard Martin"
});

informations["orange"].push({
center: new google.maps.LatLng(45.436709 , 6.011659),
puissance: 5000,
couleur: "#0BD426",
nom_operateur : "Orange",
adresse :""
});


// Cas sfr
informations["sfr"] = new Array();
//Relais sfr
informations["sfr"].push({
center: new google.maps.LatLng(45.448691 , 6.055691),
puissance: 5000,
couleur: "#E80A3D",
nom_operateur : "SFR",
adresse :"Villard Martin"
});

informations["sfr"].push({
center: new google.maps.LatLng(45.379749 , 5.966302),
puissance: 5000,
couleur: "#E80A3D",
nom_operateur : "SFR",
adresse :""
});

informations["sfr"].push({
center: new google.maps.LatLng(45.43755 , 6.016084),
puissance: 5000,
couleur: "#E80A3D",
nom_operateur : "SFR",
adresse :"795 rue des Méttanies"
});

// Pas très utile.
var cityCircle;

/**
* Génération de la map google map
*/
function initialize() {
var mapOptions = {
zoom: 10,
center: new google.maps.LatLng(45.452334, 5.987889),
mapTypeId: google.maps.MapTypeId.TERRAIN
};

map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}

function getCheck (_id, cityMap){
var _check = document.getElementById(_id);
// si oui
if (_check.checked){
// Alors on ajoute les informations à la map city;
// Parcours les différentes villes.
for ( var i=0; i< informations[_id].length; i++){
cityMap.push(informations[_id][i]);
}
}
}

function refresh(){
initialize() ;
// Réinitialise la liste des case déjà cochée.
var cityMap = new Array();
// Récupération des checks cochées
// récupération des checks 
getCheck("bouygues",cityMap);
getCheck("sfr",cityMap);
getCheck("orange",cityMap);
// Parcours la liste des résultats.
for (var i =0; i <cityMap.length; i++) {
// Dessine le cercle en fonction du rayon de la puissance*2.
var puissanceOptions = {
strokeColor: cityMap[i].couleur,
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: cityMap[i].couleur, //"#FF0000",
fillOpacity: 0.35,
map: map,
center: cityMap[i].center,
radius: cityMap[i].puissance * 2
};
// Utilisée ?
var cityCircle = new google.maps.Circle(puissanceOptions);
}
}

</script>
</head>




SFR  
Orange  
Bouygues Telecom  
 Free  
<!-- Afficher un bouton de style-->
<!--INPUT TYPE=BUTTON NAME="reload" VALUE="Rafraichir" ALIGN=RIGHT>-->





 


</html>


[o-_-o]
3
Rejoignez-nous