Bonjour,
Je sollicite votre aide pour un problème qui m'étonne.
Il me paraîtrait logique qu'il y ait une erreur très simple mais pourtant je réécris le code de plusieurs manières différentes et le problème reste le même
Ainsi j'espère que vous pourrez m'aider :
Alors tout d'abord ce que je dois faire :
Le but de mon script est de récupérer une liste d'adresse (depuis un fichier), de générer une carte grâce à l'API prévue à cet effet, de placer des marqueurs aux adresses recueillies évidemment ces marqueurs seront référencés par du texte. mon problème se trouve à ce niveau : j'utilise les méthodes prévues par Google pour affecter à chaque marqueur un libelle et une info bulle mais pour une raison que j'ignore, au final une seule adresse est affichée la dernière ...
j'ai essayé plusieurs méthode pour pallier à ça (selon l'ordre d'agencement des méthodes, j'ai remplacé mes variables (qui étaient écrasées) à chaque fois par un tableau d'object mais rien n'y fait.
Voici le code dans l'espoir que vous trouviez ma grosse erreur
Code Javascript :
<html>
<head>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=true">
</script>
<script type="text/javascript">
//déclarations des variables globales
var geocoder = new google.maps.Geocoder();
var infoBulle = new google.maps.InfoWindow();
var map;
//function initialiser
function initialiser(adresse) {
//Position choisie au hasard
var latlng = new google.maps.LatLng(-34.397, 150.644);
//définition des options de la map
var myOptions =
{
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
//création de l'objet Map
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
//récupération des adresses et découpages de celles ci
var decoupeAdresse = adresse.split("|");
//déclaration variables
var optionsMarqueur;
var marqeur;
var address;
//boucle de création des marqueurs
for (var ii=0; ii<decoupeAdresse.length; ii++)
{
//récupérer l'adresse
address = decoupeAdresse[ii];
//récuperer Longi et lati
geocoder.geocode( { 'address': address}, function(results, status)
{
//si c'est trouvé
if (status == google.maps.GeocoderStatus.OK)
{
//options du marqueur
optionsMarqueur =
{
position: results[0].geometry.location,
map: map,
//définir le texte qui devrait être là
title: address
}
//création de l'objet marker
marker = new google.maps.Marker(optionsMarqueur);
//appel de la fonction pour les infobulles
ajouterInfoWindow(marker, address);
}
else
{
alert("Ville non trouvée pour la raison suivante: " + status);
}
});
}
alert(adresse);//test pour les paramètres
}
//fonction pour les infobulles
function ajouterInfoWindow(marqueur, info)
{
//création de l'écouteur
google.maps.event.addListener(marqueur, 'click', function() {
//définir le contenu (l'adresse)
infoBulle.setContent(info);
//affecter à la map le marqueur et l'info fraichement créée
infoBulle.open(map, marqueur);
});
}
</script>
</head>
<?php
//
//
//
//Partie PHP Et HTML fonctionnelle.
//
//
//
//
//
//déclaration variable
$liste = "";
$i=0;
//ouverture du fichier
$fp=fopen("listeAdresse.txt","r");
//tant qu'il y a des lignes
while (($buffer = fgets($fp, 4096)) !== false)
{
//on vérifier qu'il y a pas de cochonnerie
$buffer = str_replace("\n", "", $buffer);
$buffer = str_replace("\r", "", $buffer);
//si il est différent de " "
if ($buffer != " ")
{
//gestion séparateur
$seprarateur = "|";
//cas du premier
if ($i == 0)
{
$seprarateur = "";
}
$liste .= $seprarateur . $buffer;
$i++;
}
}
//fermeture du fichier
fclose($fp);
?>
<body onload="initialiser('<?php echo $liste; ?>')">
<div id="map_canvas" style="width: 600px; height: 720px;"></div>
</body>