Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1722 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Génération dynamique de Google Maps

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Génération dynamique de Google Maps

n°1951879
darkgloom
Posté le 20-12-2009 à 19:16:52  profilanswer
 

Bonsoir,
 
J'ai intégré dans mon site une rubrique qui fait appel à des Google Maps.
Grosso-modo, Un rédacteur ajoute un article, contenant un nom de ville, et une map apparait automatiquement dans l'article après un appel au geocoder.
Le souci c'est que jusqu'à maintenant j'ai crée une fonction de traitement gmap par article (c'est moche je sais) et que le nombre d'articles par page se doit donc d'être fixe.
J'aimerais donc réaliser une fonction générique pour le geocoding et l'initialisation d'un google map.
 
Un peu de code pour expliciter tout ça :
 
Les fonctions d'initialisations :

Code :
  1. <script type="text/javascript">
  2. var map1 = null;
  3. var map2 = null;
  4. var map3 = null;
  5.     var geocoder = null;
  6.     function initialize1() {
  7.       if (GBrowserIsCompatible()) {
  8.         map1 = new GMap2(document.getElementById("map_canvas1" ));
  9.         geocoder = new GClientGeocoder();
  10.       }
  11.     }
  12.     function showAddress1(address) {
  13.       if (geocoder) {
  14.         geocoder.getLatLng(
  15.           address,
  16.           function(point) {
  17.             if (!point) {
  18.               alert(address + " not found" );
  19.             } else {
  20.               map1.setCenter(point, 11);
  21.               var marker = new GMarker(point);
  22.               map1.addOverlay(marker);
  23.               marker.openInfoWindowHtml(address);
  24.             }
  25.           }
  26.         );
  27.       }
  28.     }   
  29.     function initialize2() {
  30.       if (GBrowserIsCompatible()) {
  31.         map2 = new GMap2(document.getElementById("map_canvas2" ));
  32.         geocoder = new GClientGeocoder();
  33.       }
  34.     }
  35.     function showAddress2(address) {
  36.       if (geocoder) {
  37.         geocoder.getLatLng(
  38.           address,
  39.           function(point) {
  40.             if (!point) {
  41.               alert(address + " not found" );
  42.             } else {
  43.               map2.setCenter(point, 11);
  44.               var marker = new GMarker(point);
  45.               map2.addOverlay(marker);
  46.               marker.openInfoWindowHtml(address);
  47.             }
  48.           }
  49.         );
  50.       }
  51.     }


 
L'affichage :

Code :
  1. pour i allant de 1 au nombre d'article par page {
  2.         echo"<div id='map_canvas".$i."' style='width: 400px; height: 300px'></div>";
  3.         echo"<script type='text/javascript'>initialize".$i."(); showAddress".$i."('".$lieu." ".$cp."');</script>";
  4.         $i = $i +1;
  5.         }


 
Merci d'avance  :jap:


Message édité par darkgloom le 20-12-2009 à 19:18:21
mood
Publicité
Posté le 20-12-2009 à 19:16:52  profilanswer
 

n°1952047
stealth35
Posté le 21-12-2009 à 13:08:56  profilanswer
 

tu creer un array avec t'es info, tu le transforme en object json que tu recupere avec javascript, mais le mieux c'est au niveau de la creation de l'article il faut inclure les coordonné que google te retournera, ca sera beaucoup plus rapide que de faire une recherche par adresse a chaque fois


Message édité par stealth35 le 21-12-2009 à 13:10:34
n°1952072
darkgloom
Posté le 21-12-2009 à 14:13:40  profilanswer
 

C'est vrai que faire appel au geocoder à chaque fois n'est pas un très bon choix, je pourrais stocker les coordonnées en base, je ferais peut être ça dans un 2ème temps.
Par contre je ne comprend pas tout à fait ta solution, je ne suis même pas sur qu'elle réponde à mon problème  :heink:

n°1952081
stealth35
Posté le 21-12-2009 à 14:26:21  profilanswer
 

a chaque tour de boucle tu creer un array du type

 
Code :
  1. map[$i]['div']  = "map_canvas$i";
  2. map[$i]['lat']  = $lat;
  3. map[$i]['lon']  = $lon;
 

a la fin de ta boucle tu fais

 
Code :
  1. $json = json_encode($map);
 

dans ton code html tu pourras ensuite faire

 
Code :
  1. <script type="text/javascript">
  2. var map = <?php echo $json ?>;
  3.  
  4. for(var i in map)
  5. {
  6. //ta fonction pour creer ta div map, et affichage du pointeur
  7. }
  8. </script>
 

http://php.net/manual/fr/function.json-encode.php


Message édité par stealth35 le 21-12-2009 à 14:34:39
n°1952360
darkgloom
Posté le 22-12-2009 à 12:26:19  profilanswer
 

Je vois :)
 
Concernant la dernière fonction, qu'est ce qui est le mieux ?
Je la déclare au début de ma page et je l'appelle une fois que les div sont crées ?
 
Merci en tout cas :jap:


Message édité par darkgloom le 22-12-2009 à 13:00:15
n°1952368
stealth35
Posté le 22-12-2009 à 13:01:42  profilanswer
 

avec l'api de google t'as une fonction qui va enclencher une fois ta page charger, donc tu gardes tout dans l'en tete, ta boucle aussi.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Génération dynamique de Google Maps

 

Sujets relatifs
Programme d'affichage dynamiqueProblème de génération de fichier excel sous easyPHP 1.8
Referencement : comment afficher ceci dans google?Développement d'un menu dynamique, format de données à utiliser
creation des sous domaines dynamiqueCréation projet info style google Street View
API Google AnalyticTexte dynamique + masque = probleme
Combinaison de bibliothèques statiques en une dynamiqueProblème:boite de dialogue alert() avec chrome+safari - [Résolu]
Plus de sujets relatifs à : Génération dynamique de Google Maps


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR