Table des matieres (X)

Chut, ca charge ...

Tutoriel application Google Map avec PHP


Me voila de retour avec un nouveau super tutoriel ;) Aujourd'hui nous allons apprendre comment créer une application Google Map (histoire d'être bien tendance) sans utiliser la moindre ligne de code Javascript, uniquement du PHP. (on a assez fait avec le tutoriel sur Mootools, n'est ce pas ?)

Bon on se lance un peu de musique et gogogo !

Si tu ne trouves pas ton bonheur ici ou si tu recherches des fonctions plus avancées, je te conseille ce site qui regorge de tutos du plus simple au plus avancé sur Google map. Par contre c'est en anglais, mais va falloir te forcer un peu hein ;)

Pourquoi Google Map ?

Faisons un petit tour rapide de ce qui ce fait en ce moment .Il existe trois acteurs majeurs pour générer des cartes en ligne:

  • Yahoo! Maps
    Propose une API (=Application Program Interface) très puissante, permet même de faire des maps en Flash avec Javascript ou en AJAX. La liberté de personnalisation est incredible incroyable, notamment cet exemple.Documentation soignée et claire comme toujours chez Yahoo!. Vous pouvez voir des exemples d'applications réalisées avec Yahoo! Maps.
  • Google Map
    Documentation très claire également. Simple d'utilisation et plus diffusé et connu pour les utilisateurs de bases. Nous allons l'explorer plus en détails dans la suite. Vous trouverez ici un wiki comportant de nombreuses ressources et exemples.
  • Virtual Earth
    C'est le petit nouveau de la bande, celui du grand Microsoft qui veut pas rester ďż˝ la traine. Je n'ai pas vraiment eu le temps de tester et leur API en est ďż˝ ses balbutiements. Laissons lui le temps de grandir un peu car pour l'instant il a beaucoup de retard, surtout niveau documentation et exemples.

Pour ce tutoriel, nous prendrons Google car il existe une classe PHP qui permet de pouvoir l'utiliser sans faire de Javascript. trop de Javascript tue le Javascript ;)

GoogleMapAPI.class.php

Nous utiliserons pour ce tutoriel , cette excellente classe que je vous laisse télécharger. Sinon vous pouvez directement la télécharger ici. (renommer ensuite de .txt � .php)

Utilisation de la classe

Nous allons pour commencer créer notre petit fichier tutoriel_google_map.php dans le même repertoire que notre classe.

On commence par ajouter notre petit code PHP, les commentaires sont suffisamment explicite je pense. Il te faudra une clé Google.

PHP:
  1. //on inclus le fichier necessaire
  2. require('GoogleMapAPI.class.php');
  3. //on crée notre carte
  4. $map = new GoogleMapAPI('map','tutoriel_map');
  5. // permet de mettre en cache afin d'eviter des requetes inutiles ds le futur
  6. //on ne l'utilisera pas dans notre cas , car il faut installer PEAR et c'est chiant
  7. //mais il faudrait le faire dans une utilisation réelle
  8. //$map->setDSN('mysql://root:yr@localhost/GEOCODES');
  9. // METTEZ ICI VOTRE CLE GOOGLE
  10. $map->setAPIKey('ICI TU MET TA CLE');
  11. //taille de la map
  12. $map->setHeight("500");
  13. $map->setWidth("650");
  14. //on desactive la barre de coté?
  15. //$map->disableSidebar();
  16. //DesActive les  boutons(map/satellite/hybrid).
  17. $map->disableTypeControls();
  18. //Quel est le type de carte par defaut ? (map/satellite/hybrid)
  19. $map->setMapType('map'); // default
  20. //On déssactive les boutons pour afficher la direction d'un point a l'autre
  21. $map->disableDirections();
  22. // Permet de definir le zoom automatiquement afin de voir tous les marqueurs d'un coup.
  23. $map->enableZoomEncompass();
  24. //Active la mini map en bas a droite
  25. $map->enableOverviewControl();
  26. //permet de définir l'icone sur la map, nous on change pas
  27. //$map->setMarkerIcon('http://www.canadianwinter.ca/uploads/icon/marker_cw.png','http://www.canadianwinter.ca/uploads/icon/marker_cw_shadow.png',6,20,10,1);
  28.  
  29. //CREATION DES MARQUEURS
  30. //on peut egalement utiliser addMarkerByCoords() si on a dĂ©jďż˝  la latitude et longitude des points
  31. //Exemple basique
  32. $map->addMarkerByAddress('16 Boulevard Winston CHURCHILL, 25000','IDfr (ex simple)','IDfr c\'est bien. blog.idfr.net');
  33. //exemple avec du HTML
  34. $map->addMarkerByAddress('4 rue de l\'ermitage, Besançon, 25000','Vt-design (ex HTML)','
  35. <h1>Vt-Design</h1>
  36. 4 rue de l\'ermitage, Besançon, 25000
  37. <strong>gras</strong>
  38. <em>italique</em>
  39. <a href="http://vt-design.com">Vt-design.com</a>');
  40. //exemple avec onglet
  41. $map-&gt;addMarkerByAddress('1336 Notre Dame West, Montreal, QC H3C1K7 ','Griffintown Media (ex onglet)',array('Contact'=&gt;'1336 Notre Dame West, Montreal, QC H3C1K7
  42. ', 'Description'=&gt;'Agence de communication plutot spécialisée dans le print'));
  43. //Ex avec beaucoup de contenu
  44. $map-&gt;addMarkerByAddress('9 rue de la grande planche,Saint-vit, 25410','Ma maison (ex bcp texte)','
  45. Beaucoup de contenu
  46. Beaucoup de contenu
  47. Beaucoup de contenu
  48. Oh nan mon dieu ca va dépasser !
  49. Beaucoup de contenu
  50. Beaucoup de contenu
  51. Beaucoup de contenu
  52. Beaucoup de contenu
  53. Beaucoup de contenu
  54. Et voila ca dépasse je vous avais prévenu !
  55. ');
  56. ?&gt;

A la suite, le code HTML et CSS de base pour afficher notre carte et la barre de navigation.

HTML:
  1. <script src="mootools.release.83.js" type="text/javascript"></script>
  2. printHeaderJS(); ?&gt;
  3. printMapJS(); ?&gt;
  4.  
  5. <script src="../js/slimbox.js" type="text/javascript"></script>
  6. <link href="../css/slimbox.css" rel="stylesheet" type="text/css" media="screen" /> <!-- necessaire pour google pour tracer les polylines --> <style type="text/css">   v\:* {     behavior:url(#default#VML);   }   /*pour les infobulles de la carte*/   #gmapmarker {     font: normal small verdana, arial, helvetica, sans-serif;    font-size: 10pt;     margin: 0px;      width: 350px;      height: 150px;     overflow:auto;   }
  7.  
  8. #gmapmarker p{      margin : 0;       padding : 2px 0 2px 0;   }
  9.  
  10. #gmapmarker a {text-decoration: none; color: #0066CC; background-color: transparent;}
  11.  
  12. #gmapmarker a:hover {color: #F60; background-color: transparent;}
  13.  
  14. #gmapmarker h1 {    font-weight: bold;       font-size: 13px;       color: #369;       border-bottom: 2px solid #369;     padding : 2px;    margin : 0;   }
  15.  
  16. /*div qui contient la carte*/   #map {      float : left;   } </style>
  17. <h1>Tutoriel Google Map API avec PHP (http://fardeen.biz)</h1>
  18. <table border="1">
  19. <td>printMap(); //on affiche la map ?&gt;</td>
  20. <td>printSidebar(); //on affiche la barre de nav?&gt;</td>
  21. </tr>
  22. </table>

On obtient ce magnifique résultat final.

Il existe de nombreuses autres fonctions que je te laisse découvrir sur la page de la classe (en bas de la page, après Base Class Methods)

Exemple d'application plus avancée

Bon l'exemple précédent n'a pour but de vraiment montrer la facilité avec laquelle on peut intégrer google Map.

Avec ce que nous avons vu dans le précedent tutoriel sur Mootools, avec l'ajout d'une interaction avec une basé de donnée, et ce que vous venez d'apprendre dans ce tutorel il est possible d'obtenir une application (que j'ai réalisée en anglais) comme celle ci (cliquez sur l'image)

Cliquer sur le lien

Cette application est gérée grâce � une interface d'administration, mais cela fera l'objet d'un prochain tutoriel (edit : maintenant disponible). J'ai également intégré ce prototype Javascript qui permet d'ouvrir des fenètres dans la page plutôt qu'une popup.

Conclusion

J'espère que ce tuto vous a plu et comme d'hab hésitez pas � poser des questions, ou � me corriger si j'ai dit une connerie ;)

Voila tu es maintenant prĂŞt ďż˝ faire une application de tueur toi aussi !

Prochain tuto : Faire une administration de fou très rapidement et simplement. Pour rester informé, inscris toi au flux RSS.

Billets en relation


220 réponses à “Tutoriel application Google Map avec PHP”

Tutoriel application Google Map avec PHP...

Apprendre comment crer une application Google Map (histoire d'tre bien tendance) sans utiliser la moindre ligne de code Javascript, uniquement du PHP. Et c'est facile en plus !...

Anonyme le 17 novembre 2006 19:29 |

Tuto sympa, rien Ă  redire.
Je voulais juste souligner le fait que le rendu de ton site fonctionne mal sous IE. Pour quelqu'un qui prone les standards, il faut penser Ă  tout le monde !

LockS le 20 novembre 2006 7:31 |

Merci de le signaler, c'est vrai que j'ai pas trop le temps de régler les ptits bugs d'IE (et la flemme aussi) , surtt que 85% des visiteurs ici ont firefox , j'me presse moins ... Promis j'le fais bientot )

Et j'ai jamais dit que je pronais les standards, on est pas chez Alsacreation ici ;)
Les standards oui mais ds une certaine limite, y a pas d'icone W3C valide ici D Parcque j'prefere faire des tutos que du code valide , c'est plus fun )

Fardeen le 20 novembre 2006 10:54 |

Bravo,
mais comment changer les icones et cela d'une façon dynamique (lien avec une base)

de toute façon encore bravo

Bruno le 22 novembre 2006 17:54 |

Merci,

pour changer de facon dynamique , normalement il suffit de décommenter cette ligne :

$map->setMarkerIcon(...)

S'il faut un marqueur different par element sur la carte, il suffit de reappler cette ligne avant chaque $map->addMarkerByAddress(...) . Je n'ai pas eu ce besoin spécifique mais en tout cas cela devrait marcher.

N'hésite pas a confirmer si cela fonctionne comme cela.

Fardeen le 22 novembre 2006 18:30 |

>S’il faut un marqueur different par element sur la carte, il suffit de reappler cette ligne >avant chaque $map->addMarkerByAddress(…) . Je n’ai pas eu ce besoin spécifique mais >en tout cas cela devrait marcher.

Je confirme ça fonctionne

Vincent le 5 décembre 2006 2:41 |

Merci pour ce super tuto D

En plus c'est en PHP donc j'ai piger directe et ca marche ...

Merci bcp

jarodxxx le 12 décembre 2006 12:17 |

Merci Super le tuto
j'ai juste un petit probleme pour que l'info bulle apparaisse plus haute.
Comment faire ??
j ai essaye de chercher dans GoogleMapAPI.class.php mais je n'ai pas trouvé.
Merci d'avance.

karl le 19 décembre 2006 20:44 |

Salut,

Quand si je comprend bien ton besoin, il faut définir un icone avec

PHP:
  1. $map->setMarkerIcon('http://www.canadianwinter.ca/uploads/icon/marker_cw.png','http://www.canadianwinter.ca/uploads/icon/marker_cw_shadow.png',6,20,10,1);

En modifiant les dernières valeurs des arguments qui correspondent à la position d'accroche de la bulle par rapport au marqueur.

Voila j'espère que ca repondra à ta question ;)

Fardeen le 20 décembre 2006 10:59 |

Merci Fardeen pour ta réponse rapide
mais je me suis mal exprimé.
En fait je veux mettre des videos dans les infos bulles.
et comme la video est plus grande, des ascenseur apapraissent. Mais c'est pas trés cool pour regarder une video ...
en fait c'est pour avoir une info-bulle plus grande.
voici ce que j'ai fait pour mes manip.
cf : http://1866.free.fr/dotclear/e.....iclass.php
voir le marqueur cathedrale de florence.
je voudrai plutot quelquechose comme ici :
http://homepage.ntlworld.com/k.....Iguazu.htm
et merci beaucoup.
ton script php pour google map est super.

karl le 20 décembre 2006 12:14 |

Sur cette page http://www.econym.demon.co.uk/.....maxurl.htm tu a un tutoriel pour apprendre a maximiser une infobulle Ă  l'aide d'un icone ;)

Tu peux egalement définir la taille de l'infobulle avec les CSS.

CSS:
  1. #
  2. /*pour les infobulles de la carte*/
  3. #
  4.   #gmapmarker {
  5. #
  6.     font: normal small verdana, arial, helvetica, sans-serif;
  7. #
  8.     font-size: 10pt;
  9. #
  10.     margin: 0px;
  11. #
  12.     width: 350px;
  13. #
  14.     height: 150px; //change ta hauteur  ici
  15. #
  16.     overflow:auto; //cette propriĂ©tĂ© indique que si le contenu est tro grand, il y aura une scrollbar
  17. #
  18.   }

Fardeen le 20 décembre 2006 12:21 |

super fardeen.
merci.
j'avais regardé "partout" sauf dans le css ...
merci pour la reponse ultra rapide )

karl le 20 décembre 2006 13:02 |

me revoila avec un dernier Pb
j ai mis une video de youtube pour tester, elle apparait dans l'infobulle.
mais impossible de cliquer sur lecture pour lancer la video.

voila ce que j'ai mis :
$map->addMarkerByCoords('11.256287','43.773279','Cathédrale de Florence (ex longitude latitude)','');

toujours visitable sur le lien mis au dessus
merci pour tout
karl

karl le 20 décembre 2006 18:22 |

Je viens de tester avec IE6 et Firefox2 et j'arrive bien à cliquer sur la vidéo.

Fardeen le 20 décembre 2006 20:18 |

ah oui j essayai avec firefox1.5 et ca marchait pas bizarre
merci beaucoup
Du coup je met Ă  jour firefox lol

karl le 20 décembre 2006 22:31 |

juste pour signaler que je suis tombé sur une appli qui permet de générer ENCORE plus facilement des google maps: mapbuilder
pas une seule ligne de code a pondre... donc pour les vraiment fleimards ...

daweed le 3 janvier 2007 11:14 |

Je met mĂŞme l'adresse pour les super flemmards ;)

http://www.mapbuilder.net/

Mais si vous savez programmez , mĂŞme un tout petit peu, je vous conseille de faire votre map vous mĂŞme ;)

Fardeen le 3 janvier 2007 11:21 |

Bonjour,

Je souhaiterais developper une application "cartographier des membres" j'ai donc besoin de google map avec un ebase de données, (en php c supper)
bref, comment je peux utiliser google map en localhoste chez moi, pas de net donc la clé pourra pas être verifié

jean paul le 9 janvier 2007 17:27 |

Désolé pour la réponse tardive, mais il suffit de mettre localhost dans le nom de domaine et tu as ta clé )

Fardeen le 18 janvier 2007 15:53 |

Bonsoir, je suis novice en php et avec l'API Google Maps et je ne comprends pas du tout Ă  quoi servent ces deux instructions :
printHeaderJS(); ?>
printMapJS(); ?>
Pourriez-vous éclairer ma lanterne merci.

Thierry le 21 janvier 2007 17:50 |

Salut thierry,

ces 2 lignes permettent d'ecrire le code Javascript nécessaire à l'API Google map.

Il faut bien comprendre que l'API Google map est uniquement en javascript. Ce tuto traite une classe PHP qui permet de ne pas avoir a coder en Javascript.

J'espere avoir été suffisament clair sinon n'hésite pas à préciser davantage ta question.

Fardeen le 21 janvier 2007 21:31 |

Merci de m'avoir répondu j'ai bien compris à quoi servait ces 2 lignes encore merci pour l'info.

Thierry le 22 janvier 2007 0:43 |

Bonsoir, j'ai un gros problème. Je voulais savoir si il était possible d'utiliser la classe pour créer une carte à partir d'une page HTML qui contient des input, text pour la latitude, la longitude et des checkbox pour d'autres options. Cette page envoie les paramètres à une page TraiteInfos.php qui doit récupérer ses paramètres et afficher la carte en fonction des paramètres. Dans ce fichier j'ai un include de la classe GoogleMapAPI. La carte ne s'affiche pas. Pourriez-vous m'aider ?

Thierry le 25 janvier 2007 2:07 |

C'est bon j'ai trouvé la solution à mon problème. Par contre, est-ce que vous connaissez d'autres icônes pour les marqueurs à part les deux qui sont données dans votre tutorial ? Car je n'en trouve pas d'autre.

Thierry le 25 janvier 2007 18:16 |

Voila une generateur de marqueur Google Map )

http://www.gmaplive.com/marker_maker.php#

Fardeen le 25 janvier 2007 18:55 |

Merci, il est génial c'est justement ce dont j'avais besoin )

Thierry le 25 janvier 2007 20:04 |

Bonjour, voilà je voudrais mettre en cache les requêtes envoyées au serveur mais je ne comprend pas trè bien le fonctionnement. J'ai installé PEAR et si je comprends bien il faut créer une base de données? Ensuite je ne vois pas trop comment s'utilise la commande :
$map->setDSN('mysql://USER P ASS@localhost/GEOCODES');
setDSN($dsn)
Pourriez-vous m'aider?

Thierry le 28 janvier 2007 3:49 |

Bonjour à tous peut etre avez vous deja tarités mon pb

Je souhaite localiser sur une carte mes membre (qui son dans une base de donneés)

pouvez vous me fournir le code php pour faire une telle operation ?

merci pour votre aide

b

BDUR le 30 janvier 2007 18:01 |

Salut,

j'ai justement developpé une application de localisation de balise GPS . J'en parlerai bientot sur le blog.

Pour ce qui est du code que tu demandes, il suffit de regarder le tutoriel et de le tranposer a ta base de donnees.

Fardeen le 30 janvier 2007 18:06 |

je me sert de votre tuto que je trouve tres sympa mais je bloque sur la requet pour constituer les diferentes adresses.

je pense faire un wilde mais pour la suite ??? as tu une adresse mail sinom passe par mon site. Peux tu me contacter ?
merci pour le coup de main

BDUR le 30 janvier 2007 18:44 |

Je mettrais en ligne bientot un tuto sur comment lier la classe Google Map a une base de donnée ) Cela répondra à ta question.

Fardeen le 31 janvier 2007 1:21 |

Bonjour et bravo pour le tuto !!!
Juste une ch'tite question ou plutĂ´t 3, si je peux :
1- dans ta démo il n'y a que 2 marker qui s'affichent (en tt cas chez moi avec FF2.0, il s'agit de celui de l'adresse au Canada, et celui de ta maison, j'ai beau m'écarquiller les yeux, je ne vois pas pkoi ?
2 - J'ai essayé de rajouter l'adresse / le marker ci-dessous :
$map->addMarkerByAddress('1 bis rue du Printemps, 78230','chez moi (ex simple)','zoulou');
et là, elle n'est même pas prise en compte, ni dans la table sur le coté, ni sur le plan... et pourtant, Google Earth, par exemple, la reconnait bien...

3 - Une alternative à entrer l'adresse / les ccordonnées (long / lat, qui ne sont pas connues à priori...!) ou la récupere par le biais d'une BD serais de situer "l'endroit ' sur une carte et d'en récupere alors les coordonnées, cela est il possible via l'API Google ?

Merci bcp pour ton aide,
Cordialement,
JM
NB : désolé pour le code qui est mal indiqué, j'ai pas trouvé les balises, genre BBCode...

Jean Marc le 31 janvier 2007 18:51 |

Hum !

J'ai compris !
pour les pb de marker, il manquait lles viles !!!
pour ma question 3, par contre , là je sèches...
Merci et désolé pour le temsp perdu !

Jean Marc le 31 janvier 2007 19:04 |

Salut et merci )

Alors pour répondre rapidement à tes question :
1) Je suis sous Firefox 2.0 j'ai bien les 4 marqueurs.
2)Ton adresse ne doit surement pas etre assez precise. Google earth corrige automatiquement l'adresse, pas la classe.
3)Un prochain tuto sur comment lier cette classe avec la BDD sera prochainement en ligne

Voila ;)

Fardeen le 1 février 2007 2:59 |

Pas mal du tout le tuto, mais, j'ai un petit souci.

Voila, quand je commente la ligne : $map->disableDirections(); donc autrement dit quand j'active les boutons to et from, je n'arrive plus à afficher les info des marker quand ces info sont organisées en onglet...

J'suis je le seul a avoir ce problème ?

Antoine le 7 février 2007 14:56 |

Je viens de taper une longue reponse et Firefox vient de planter alors t'auras le droit qu' aune reponse plus courte desole .

Regarde le code de la fonction disableDirections(); dans la classe PHP et tu verra que c'est pas tres complique.

Et le code de direction , tu peux l'inclure toi meme sinon dans les infos de ton marker. Rien de bien complique encore une fois.

Fardeen le 7 février 2007 15:12 |

Et au fait l'exemple de CanadianWinter remarche enfin )

Fardeen le 7 février 2007 15:56 |

Est -il possible de récupérer la longitude et la latitude à partir d'une adresse que l'on donne?

Spoltix le 7 février 2007 16:34 |

En temps reel ?

Ou tu as deja les adresses stockees dans une base ?

Fardeen le 7 février 2007 16:38 |

Je souhaite à partir d'un formulaire, inscrire l'adresse, code postal, ville, pays, et lors de la validation, récupérer la longitude et latitude et tout ceci l'enregistrer ds une base. Donc, mon probleme est lors de la validation du formulaire faire appel à l'API pour récupérer ces 2 données(lat,long), et donc savoir si c'est possible!

Spoltix le 8 février 2007 11:35 |

$map->geoGetCoords($adress);

Voila ;)

Fardeen le 8 février 2007 15:32 |

Bonjour
Merci pour ce tuto qui est le plus clair que j'ai trouvé !
J'ai réussi à faire mon beurre avec, et pour creer les lieux, j'ai customisé la ligne pour que ça colle avec ma base de donnée :

PHP:
  1. $map-&gt;addMarkerByAddress(''.$adresse.' '.$arr.'',''.$nom.'',array('Description'=&gt;''.$nom.''.$adresse.' '.$arr.'<b>Genre : '.$genre.'</b> '.$description.'', 'Les avis'=&gt;'Ici, afficher les commentaires'));

Bon, c'est pas très clair posé comme ça, mais j'espère que vous comprendrez.
Le problème c'est que certains lieu s'affiche très bien, mais il en manque. Pourtant, je suis certain que l'adresse est complète. Donc j'ai pensé à une erreur de htmlentities, d'accent, etc, mais je trouve pas.

Par exemple, si je met l'adresse en dur, ça marche, mais si je passe la même adresse variable, ça ne marche pas. C'est vraiment étrange...

Auriez-vous une idée ?

Merci

Damien le 8 février 2007 22:33 |

Bonjour,
je cherche à recréer la mini fenêtre de zoom située en bas à droite de la carte sur Canadianwinter !! Une piste ???

ptilu le 27 février 2007 9:52 |

Salut Ptilu :

Il suffit de lire le tuto ;)

PHP:
  1. //Active la mini map en bas a droite
  2. $map->enableOverviewControl()

Fardeen le 27 février 2007 15:15 |

Slt, je viens de tester le script, c'est assez imppressionnant, je suis un newbie en code web alors j'ai un peu de mal mais je voudrai réussir à integrer ce style :

"http://www.ip-adress.com/details.php?c=RlI6ODIuMjM3LjE1Mi42Ojo0OS4wMDAwOjIuMzY2NzpSbEk9OlVHbGpZWEprYVdVPTpVMkZwYm5RdFFuSnBZMlV0YzI5MWN5MUdiM0xxZEE9PQ=="

sur une de mes pages sur mon site, en gros celui qui va sur la page voit sa ville avec un zoom correct dessus, si ils l'ont fait, j'image que c'est possible et ca doit pas être très loin du script ci-dessus, alors si une ame charitable peut me donner le script ou la maniere de procéder, je sais que ca à pas l'air évident mais quand je vois votre niveau je me dit pourquoi pas....

Rootsprod le 11 mars 2007 9:23 |

Salut rootsprod )

Bon alors si t'es un noob ca va pas etre facile facile mais bon on va tenter quand meme )

Alors le site utilise cette API : http://www.maxmind.com/app/city (payante cette api, il faut probablement en trouver une gratuite, j'en ai deja vu mais je retrouve pas l'adresse)

Pour ton truc le plus simple ce serait d'utiliser la version Javascript de l'API : http://www.maxmind.com/app/javascript_city (tu as un exemple)

Au lieu de faire des document.write il faut utiliser les valeurs pour creer le marqueur.

Sinon tu peux toujours utiliser ca :

http://www.geoiptool.com/fr/webtools/

)

Fardeen le 11 mars 2007 16:53 |

Déja merci pour ta réponse rapide, c'est là qu'on voit la passion et la pédagogie qui va avec, j'essaye tout ça et je posterai le résultat.

Rootsprod le 12 mars 2007 13:29 |

Merci pour ce tutoriel, il me sera d'une tres grande aide ;)

Carles Campi le 18 mars 2007 14:35 |

Salut, c'est vraiment un super tuto que tu nous propose là. J'adore, c'est très simple et bien expliqué.

Par contre j'ai une question sur la modifications des marqueurs. La solution que tu donnes dans un des commenttaires ne fonctionne pas chez moi. Tous les marqueurs prennent l'apparence du dernier marqueur déclaré.

Par exemple, mon code php est le suivant :

PHP:
  1. $map-&gt;setMarkerIcon('http://www.canadianwinter.ca/uploads/icon/marker_cw.png','http://www.canadianwinter.ca/uploads/icon/marker_cw_shadow.png',6,20,10,1);
  2. $map-&gt;addMarkerByAddress('Le mont-dore, france ','Depart',array('Informations'=&gt;'Depart de la course le 17 Avril 2007', 'Equipes'=&gt;'En cours de construction', 'Articles'=&gt;'Liste des articles...'));
  3.  
  4. $map-&gt;setMarkerIcon('http://www.gmaplive.com/marker_hex.php?n=22&amp;hex=EE4488','http://www.gmaplive.com/pin_shadow.png',6,20,10,1);
  5. $map-&gt;addMarkerByAddress('riom es montagnes, france ','Etape1',array('Informations'=&gt;'Etape 1', 'Classements'=&gt;'En cours de construction', 'Articles'=&gt;'Liste des articles...'));

Tous les marqueurs ont la forme du marqueur "http://www.gmaplive.com/marker_hex.php?n=22&hex=EE4488"

As tu une idée du problème ?

Merci encore et bravo pour tous ces tutos
Ben

Benoit le 24 mars 2007 12:33 |

Salut,

Je n'ai pas testé personnelement mais apparement comme tu l'a vu ds les commentaires , c'est censé marcher.
Pour ton deuxieme marqueur , as tu essayé avec une image directement ? Car je ne sais pas si Google apprecie les images généré en PHP a la volée.

Essaye avec des vrais images et tiens moi au courant.

Fardeen le 24 mars 2007 15:07 |

Salut Fardeen,
Merci de ta réponse. En fait, après avoir posté mon commentaire,je me suis fait la même remarque que toi par rapport à l'image généré à la volée.
J'ai donc essayé avec une image normale hébergé en dur, mais c'est le même résultat: c'est toujours le dernier marqueur déclaré qui s'affiche sur toutre la carte...
Je ne sais pas comment faire, ça fait deux jours que je cherche une solution...
Bon, ben si quelqu'un a une idée... je suis preneur.
Merci a Plus

Benoit le 25 mars 2007 23:22 |

Bonjour,

j'ai un petit problème, le navigateur me marque cette erreur:

------------------------------------------------------------------------------------------------
Notice: Undefined variable: exist_icn in c:\archivos de programa\easyphp\www\web config\googlemap\GoogleMapAPI.class.php on line 907

Notice: Undefined offset: 1 in c:\archivos de programa\easyphp\www\web config\googlemap\GoogleMapAPI.class.php on line 901
------------------------------------------------------------------------------------------------
et les lignes concernées sont:
------------------------------------------------------------------------------------------------
if(!empty($this->_icons)) { - 901
$_output .= 'var icon = [];' . "\n";
for($i = 0; $this->_icons[$i]; $i++) {
$info = $this->_icons[$i];

// hash the icon data to see if we've already got this one; if so, save some javascript

$icon_key = md5(serialize($info));
if(!is_numeric($exist_icn[$icon_key])) { - 907
$exist_icn[$icon_key] = $i;
$_output .= "icon[$i] = new GIcon();\n";

------------------------------------------------------------------------------------------------

et c'est arrivé au moment où j'ai ajouté un "addMarkerIcon".
J'ai bien essayer de combler les erreurs, mais sans résultat.

Je demande au Forum un petit coup de pouce,

Merci

Carles Campi le 27 mars 2007 18:05 |

Ce sont juste des notices, donc pas des veritables "erreurs" .

Soit tu modifies la classe pour regler le pb (en ajoutant des isset) ,soit tu change ton php.ini pour ne plus voir ces erreur , ou le plus simple tu met error_reporting(0) pour ne plus voir ces vilains avertissements.

Fardeen le 27 mars 2007 19:04 |

Bonjour,

Merci pour cette rapidité de réponse. Je te felicite Fardeen pour ce Forum complet et efficace ;) 20/20

bye

Carles Campi le 28 mars 2007 10:36 |

Salut,
Un grand bravo pour tous c'est tutos, beau boulot.
Je suis un peu à la rue, je veux créer un max URL mais je ne comprens pas la marches à suivre sur ce site -> http://www.econym.demon.co.uk/.....maxurl.htm
Je me sert de la fenêtre Infosbulles et les textes sont assez grand, du coup même en mettant la bulle très gandes, on est obliger de faire l'ascenseur pour lire le texte.
Avec le maxurl, j'aurai le texte qui masquerai la carte le temps de la lecture avec une meilleure présentation.
Merci de me filer la main je suis un noob !

max le 28 mars 2007 14:08 |

@merci carles

@max
sur ce site ou il y a absolument tout ce dont on peut avoir besoin . Pour ton besoin il suffit de cliquer sur le premier exemple et de regarder les sources. c'est toujours assez documente, enfin en general ;)

Il ne peut y avoir qu'une infobulle ouverte a la fois, et voila les commandes pour l'agrandir ou la ramener a sa taille normale :

JavaScript:
  1. map.getInfoWindow().maximize(); //agrandir
  2. map.getInfoWindow().restore(); //taille normale

Et sinon voila le code pour integrer directement dans le comportement de l'infobulle

JavaScript:
  1. function createMarker(point,html,infoUrl) {
  2.         var marker = new GMarker(point);
  3.          //definit comportement au click sur le marquer
  4.         GEvent.addListener(marker, "click", function() {
  5.            //1er argument html = contenu infobulle taille normale
  6.            //2er argument {maxUrl:infoUrl} = adresse du fichier html a ouvrir quand c maximiser (ex: page.html ou contenu.php?id=9)
  7.           marker.openInfoWindowHtml(html, {maxUrl:infoUrl});
  8.         });
  9.         return marker;
  10. }

Bon courage ami noob ;)

Fardeen le 28 mars 2007 14:35 |

lol Gros Noob surtout.
Le hic j'intègre ses codes dans quel feuille du site ? je suis sous xoops est dans le modules googlemap, j'ai la feuille de style "googlemaps.css" et "index.php"
Pour modifier l'infos bulle comme tu la dit plus haut je me sert de la feuille de style mais pour intégrer ce script ?(je dpois crérer une nouvelle feuille ?)
désolé.
Merci beaucoup.
mon site AccroVTT.com, il n'y pas encore la google map ouverte au plublic "lol".

max le 28 mars 2007 14:48 |

J'ai ce template en html ->

JavaScript:
  1. //  ======== A function to adjust the positioning of the overview ========
  2.         function positionOverview(x,y) {
  3.         var omap=document.getElementById("map_overview");
  4.         omap.style.left = x+"px";
  5.         omap.style.top = y+"px";
  6.        
  7.         // == restyling ==
  8.         omap.firstChild.style.border = "1px solid gray";
  9.  
  10.         omap.firstChild.firstChild.style.left="6px";
  11.         omap.firstChild.firstChild.style.top="6px";
  12.         omap.firstChild.firstChild.style.width="190px";
  13.         omap.firstChild.firstChild.style.height="190px";
  14.         }   
  15.        
  16.        
  17. function onLoad() {
  18. if (GBrowserIsCompatible()) {
  19.  
  20.         // this variable will collect the html which will eventually be placed in the sidebar
  21.         //var sidebar_html = new Array();
  22.  
  23.     // arrays to hold copies of the markers and html used by the sidebar
  24.         // because the function closure trick doesnt work there
  25.         var i = 0;
  26.         var k = 0;
  27.         var l = 0;
  28.  
  29.     // A function to create the marker and set up the event window
  30.     function createMarker(point,name,html1,html2,label1,label2,id) {
  31.                
  32.        
  33.             // creation marker
  34.             var marker = new GMarker(point);
  35.            
  36.              // The info window version with the "to here" form open
  37.            
  38.             html2 = "/modules/googlemaps/images/meet.png'"+
  39.             "width='24' height='24'&gt; <b></b>" +
  40.             "" +
  41.             "" +
  42.             "' TYPE='SUBMIT'&gt;" +
  43.             "";
  44.                    
  45.            
  46.             // The new marker "mouseover" listener       
  47.             GEvent.addListener(marker,"mouseover", function() {
  48.             marker.openInfoWindowTabsHtml([new GInfoWindowTab(label1,html1), new GInfoWindowTab(label2,html2)]);
  49.             })
  50.            
  51.             GEvent.addListener(marker,"click", function() {
  52.             map.closeInfoWindow();
  53.             })
  54.            
  55.             // save the info we need to use later for the sidebar
  56.             gmarkers[i] = marker;
  57.             htmls[i] = html1;
  58.             htmld[i] = html2;
  59.            
  60.             i++;
  61.             return marker;
  62.      }

Je pense que c'est la que je dois faire la modif non ? je le fait mais plus de carte à l'écran. Désolé de pourrirt ce tuto, je pense que tu pourra supprimer ce long messa après.
Merci

max le 28 mars 2007 15:08 |

Le code me semble suffisament bien documente. Il faut que tu comprennes le code si tu veux esperer pouvoir le modifier.

Je peux te debloquer ou donner un coup de pouce mais je n'ai pas le temps de faire le script pour toi desole .

Ajoute un lien dans le contenu de l infobulle genre

HTML: