Pb code google maps / Affichage de pls points geolocalisés
5 messages • Page 1 sur 1
Consultez la formation Google Maps, News, Images de WebRankInfo / Ranking Metrics
Pb code google maps / Affichage de pls points geolocalisés
Bonjour à tous !
Déjà merci pour ce forum, je suis ravie de découvrir qu'il existe, car google devient si important !
Alors pour ma part je m'attaque un peu aux google maps.
Mon but : faire afficher plusieurs points avec infos (au clic sur le point) d'un fichier xml (que je génère en dynamique de ma base de données) sur 1 google map.
Je veux utiliser le gecoding, c'est-à-dire le faire à partir d'adresses.
Voici mon code javascript :
et mon code xml :
Les 4 points de mon doc xml s'affiche bien à 4 endroits bien distincts.
Mais le souci est qu'ils ont tous la même "info" et "details", à savoir l'attribut "info" du dernier noeud de mon xml.
Je pense que le problème vient du fait que ma fonction est réecrasée à chaque passage de la boucle et qu'elle est donc établie au dernier noeud...
Comment faire pour résoudre cela ?
Sinon si vous avez des exemples du même type, je suis preneuse !
Merci énormément de votre aide !
Aurélie
Déjà merci pour ce forum, je suis ravie de découvrir qu'il existe, car google devient si important !
Alors pour ma part je m'attaque un peu aux google maps.
Mon but : faire afficher plusieurs points avec infos (au clic sur le point) d'un fichier xml (que je génère en dynamique de ma base de données) sur 1 google map.
Je veux utiliser le gecoding, c'est-à-dire le faire à partir d'adresses.
Voici mon code javascript :
- Code: Tout sélectionner
<script type="text/javascript">
//<![CDATA[
var geocoder = null;
function load()
{
if (GBrowserIsCompatible())
{
var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
//map.setCenter(new GLatLng(48.7, 2.3), 8);
geocoder = new GClientGeocoder();
if (geocoder)
{
var address = "HAUTE-SAVOIE";
geocoder.getLatLng
(
address,
function(pt)
{
if (!pt)
{
alert(address + " not found");
}
else
{
//positionnement de la carte
map.setCenter(pt, 8);
///affichage des points du xml
function creerMarker(point, onglet1, onglet2)
{
var marker = new GMarker(point);
var infoTabs = [
new GInfoWindowTab("Infos", onglet1),
new GInfoWindowTab("Détails", onglet2)
];
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowTabsHtml(infoTabs);
});
return marker;
}
GDownloadUrl("donnees.xml", function(data)
{
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++)
{
add = markers[i].getAttribute("adresse");
info = markers[i].getAttribute("info");
details = markers[i].getAttribute("details");
geocoder.getLatLng
(
add,
function(p)
{
alert(info);
marker = creerMarker(p, info, details);
map.addOverlay(marker);
}
);
}
});
}
}
);
}
}
}
//]]>
</script>
et mon code xml :
- Code: Tout sélectionner
<?xml version="1.0" encoding="utf-8" ?>
<markers>
<marker adresse="AIX LES BAINS" info="JuJu city" details="Quelques informations supplémentaires" />
<marker adresse="RUMILLY" info="Chez moi !" details="Quelques informations supplémentaires" />
<marker adresse="ANNECY" info="Annecy, le lac, les montagnes" details="Quelques informations supplémentaires" />
<marker adresse="GENEVE" info="Geneve, capitale de la Suisse" details="Quelques informations supplémentaires" />
</markers>
Les 4 points de mon doc xml s'affiche bien à 4 endroits bien distincts.
Mais le souci est qu'ils ont tous la même "info" et "details", à savoir l'attribut "info" du dernier noeud de mon xml.
Je pense que le problème vient du fait que ma fonction est réecrasée à chaque passage de la boucle et qu'elle est donc établie au dernier noeud...
Comment faire pour résoudre cela ?
Sinon si vous avez des exemples du même type, je suis preneuse !
Merci énormément de votre aide !
Aurélie
Dernière édition par Or3 le Lun Nov 26, 2007 14:25, édité 1 fois.
-

webmasterlamogere - WRInaute accro

- Messages: 1874
- Inscription: Dim Déc 17, 2006 21:08
je mettrais "map.addOverlay(marker);" avant "GEvent.addListener(marker, "click", function() { "
Pour un exemple qui marche avec un fichier XML : http://annuaire.lamogere.fr/carte.html
Pour un exemple qui marche avec un fichier XML : http://annuaire.lamogere.fr/carte.html
merci de ton aide !
)
Mais malheureusement ce n'est pas çà....
L'exemple est là :
http://www.daniel-guerin.com/test3.php
Comme tu peux le voir, tous mes points on la même info, qui est celle du dernier neud de mon xml
(et je pense que c ma fonction qui s'écrase avec la boucle et prend donc en compte que la derniere valeur)..
L'exemple que tu m'as donné utilise en effet un xml, mais malheuresement pas la géolocalisation.
Je ne veux pas positionner mes points à partit de Longitude et Latitude mais à partir de l'adresse postale....
hummm....
Aurélie
Mais malheureusement ce n'est pas çà....
L'exemple est là :
http://www.daniel-guerin.com/test3.php
Comme tu peux le voir, tous mes points on la même info, qui est celle du dernier neud de mon xml
(et je pense que c ma fonction qui s'écrase avec la boucle et prend donc en compte que la derniere valeur)..
L'exemple que tu m'as donné utilise en effet un xml, mais malheuresement pas la géolocalisation.
Je ne veux pas positionner mes points à partit de Longitude et Latitude mais à partir de l'adresse postale....
hummm....
Aurélie
-

webmasterlamogere - WRInaute accro

- Messages: 1874
- Inscription: Dim Déc 17, 2006 21:08
il est beaucoup plus performant de déterminer la lat/long avant avec le géocodeur et de la mettre dans le fichier XML (une seule détermination).
Je pense que l'erreur vient du fait que la déclaration de la fonction creerMarker se trouve dans la fonction load. Il faut la décaler avant ou après.
Je pense que l'erreur vient du fait que la déclaration de la fonction creerMarker se trouve dans la fonction load. Il faut la décaler avant ou après.
D'accord avec toi sur la géolocalisation au préalable !
Mais grrrr m'énerve de pas trouver comment faire...le problème ne vient pas de la place de la fonction (je l'ai bougé, pas de changement)
Je sais que l'erreur vient du fait que lorsque creerMarker() est appelé mes variables vallent toutes la valeur du dernier noeud.
et qu'il me faudrait une sorte de propriété valable dans la boucle..
Mais là je touche vraiment plus à du javascript pur et dur....
(soupir)
Merci pour tout en tous cas !
Aurélie
Mais grrrr m'énerve de pas trouver comment faire...le problème ne vient pas de la place de la fonction (je l'ai bougé, pas de changement)
Je sais que l'erreur vient du fait que lorsque creerMarker() est appelé mes variables vallent toutes la valeur du dernier noeud.
et qu'il me faudrait une sorte de propriété valable dans la boucle..
Mais là je touche vraiment plus à du javascript pur et dur....
(soupir)
Merci pour tout en tous cas !
Aurélie
5 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Maps, Google News et Google Images : apprenez comment optimiser le référencement de votre site pour la recherche universelle et notamment Google Maps, Google Actualités et Google Images. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- API Google Maps en Flash / Flex
- Google Labs lance Google Alternate Views
- Tutorial Google Maps API
- Yahoo Maps API
- Google Maps Navigation par GPS gratuit sur Android
- Plein de chiffres incroyables sur Google Maps
- Google Maps pour Mobiles (version Windows Mobile)
- Affichage de la description DMOZ dans MSN Search
- Référencement local gratuit dans l'annuaire WebRankInfo
- Analyse de Google Maps et Yahoo Local
Consultez la description détaillée des produits ou services de Google suivants : Google Code, Google Maps API, Google Image Labeler
- Test du code HTTP d'une page
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

le forum