Google MAPS - localiser avec une adresse / pas de coordonnées

bandenklap
Invité n'ayant pas de compte PHPfrance

22 juil. 2008, 22:08

Bonjour à tous,

Je suis en train de travailler sur l'intégration de l'API google maps pour une de mes pages. Le problème que j'ai est le suivant :
- Je ne peux définir une adresse uniquement qu'avec des coordonnées. Hors je ne connais pas le coordonnées des adresses qui sont renseignées par les internautes sur ma page (les internautes entrent une adresse qui est une variable php).


Ci dessous le code que j'utilise :

Code : Tout sélectionner

<script type="text/javascript"> //<![CDATA[ var map = null; var geocoder = null; function load() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map")); map.addControl(new GLargeMapControl()); map.setCenter(new GLatLng( 49.3 , -1.4), 10); geocoder = new GClientGeocoder(); showAddress(valeur[0]); } } function showAddress(address) { if (geocoder) { geocoder.getLatLng(address,function(point) { if (!point) { //alert(address + " not found"); } else { map.setCenter(point, 15); var marker = new GMarker(point); map.addOverlay(marker); } }); } } //]]> </script>
A priori, la localisation vient de la fontion "map.setCenter(new GLatLng( 49.3 , -1.4), 10);", mais imposible de la modifier par une adresse écrite... J'essaie désespérément de placer ma variable php à la place, mais cela ne fonctionne pas.

Je commence à désespérer... ;D

Merci par avnce de votre aide.

Mammouth du PHP | 965 Messages

23 juil. 2008, 13:46

J'ai installer le même système que toi pour pouvoir localiser des biens sur une carte sans connaitre les pointe de lattitude et longitude.

Pour ca j'ai telecharger l'API, que j'ai mis dans un dossier include puis j'ai utiliser le code suivant :
      //on inclus le fichier necessaire
      require('../_includes/php/GoogleMapAPI.class.php');
      //on crée notre carte
      $map = new GoogleMapAPI('map','tutoriel_map');
      // permet de mettre en cache afin d'eviter des requetes inutiles ds le futur
      //on ne l'utilisera pas dans notre cas , car il faut installer PEAR et c'est chiant
      //mais il faudrait le faire dans une utilisation réelle
      //$map->setDSN('mysql://root:yr@localhost/GEOCODES');
      // METTEZ ICI VOTRE CLE GOOGLE
      $map->setAPIKey('laclef');
      //taille de la map
      $map->setHeight("600");
      $map->setWidth("800");
      //on desactive la barre de coté?
      //$map->disableSidebar();
      //DesActive les  boutons(map/satellite/hybrid).
      $map->disableTypeControls();
      //Quel est le type de carte par defaut ? (map/satellite/hybrid)
      $map->setMapType('hybrid'); // default
      //On déssactive les boutons pour afficher la direction d'un point a l'autre
      $map->disableDirections();
      // Permet de definir le zoom automatiquement afin de voir tous les marqueurs d'un coup.
      $map->enableZoomEncompass();
      //Active la mini map en bas a droite
      $map->enableOverviewControl();       
      //permet de définir l'icone sur la map, nous on change pas
      //$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);
			
      //CREATION DES MARQUEURS
      //on peut egalement utiliser addMarkerByCoords() si on a déj�  la latitude et longitude des points
      //Exemple basique
      $map->addMarkerByAddress("'".$ArrayProg['Adresse']." ".$ArrayProg['Ville'].",".$ArrayProg['Cp']."'","'".$ArrayProg['Nom']."'",'<b>'.$ArrayProg['Nom'].'.</b><br />'.$ArrayProg['Adresse'].'<br />('.$ArrayProg['Cp'].') - '.$ArrayProg['Ville'].'<br /><br /><img src=\'../_medias/img/_upload/programme/miniature/m_'.$ArrayProg['Photo_0'].'\' alt=\'Image\' title=\''.$ArrayProg['Nom'].'\' />&nbsp<img src=\'../_medias/img/_upload/programme/miniature/m_'.$ArrayProg['Photo_1'].'\' alt=\'Image\' title=\''.$ArrayProg['Nom'].'\' />&nbsp;<img src=\'../_medias/img/_upload/programme/miniature/m_'.$ArrayProg['Photo_2'].'\' alt=\'Image\' title=\''.$ArrayProg['Nom'].'\' /><br /><br />'.$ArrayProg['Presentation'].'<br />');
mais ca ne marche que sur server dédié je ne sais pas pourquoi sur mutualisé il ne me retourne pas le Getlng(,) avec des valeurs vides.

bandenklap
Invité n'ayant pas de compte PHPfrance

23 juil. 2008, 15:47

Merci beaucoup de ta réponse.
En revanche, cette solution risque de poser problème dans le sens ou je n'ai pas suffisamment de fonds pour me payer un serveur dédié... Le problème éternel des étudiants... ;D

Est ce que qq1 a trouvé une solution pour faire fonctionner cette api sur un serveur partagé?

Merci par avance.

Mammouth du PHP | 965 Messages

23 juil. 2008, 17:26

Pour te répondre j'ai fait plusieurs test sur plusieurs server mais toujours retourné les même erreurs, pour ce qui est de la réponse des hébergeurs c'est "on sais pas c'est la même configuration pour tout le monde".

j'ai bien parcourus pas mal de forums et poster ici sans succès.

Si tu trouve hésite pas a revenir poster la réponse ici.

Bandenklap
Invité n'ayant pas de compte PHPfrance

23 juil. 2008, 23:16

Après une soirée de recherches google acharnées, j'ai trouvé ce tuto : http://blog.pascal-martin.fr/post/2-Lat ... ntGeocoder

Je ne sais pas si cela pourras t'aider. Perso, je n'ai toujours pas trouvé la solution... Il semblerai qu'il y soit question d'un geocoder, mais impossible de l'utiliser, même en local...

Merci de ton aide, et je ne manquerai pas de t'informer si je trouve qque chose d'intéressant sur le sujet.

Bonne soirée.