Google mpas api et php

easysofts Messages postés 4 Date d'inscription jeudi 27 novembre 2003 Statut Membre Dernière intervention 13 février 2007 - 13 févr. 2007 à 12:30
Epoc22 Messages postés 198 Date d'inscription lundi 28 février 2005 Statut Membre Dernière intervention 14 novembre 2008 - 14 févr. 2007 à 14:35
Bonjour,

Généralement je ne poste pas et je trouve ma réponse tous seul, mais mon niveau de débutant, ne me permet pas de trouver pour ceci,

je veux afficher une carte google sur mon site de bonnes adresses, en indiquant l'adresse, pour que les coordonnées (latitute et longitude) soient retrouvées.

je ne veux pas utiliser directement les coordonnées car par la suite je compte récupérer les adresses dans ma base de donnée.

J'ai installé un class php correspondant exactement à mon besoin, (càd : afficher un ou 2 point sur la carte à partir d'une adresse et le tout en php), téléchargeable ici : http://www.systemsevendesigns.com/files/phoogle.zip
http://www.systemsevendesigns.com/phoogle

Mais mon problème c'est que cette class utilise Yahoo maps pour retrouver les coordonnées (latitude, et longitude) d'une adresse, mais YAHOO MAPS n'est pas compatible avec la FRANCE.

Donc je veux utiliser l'api de google maps qui lui connait toutes les villes françaises.

Mais je n'arrive pas à adapter la fonction.Voici la fonction marchant parfaitement avec yahoo :

 function addAddress($address,$htmlMessage=null){
  if (!is_string($address)){
  die("All Addresses must be passed as a string");
   }
  $apiURL = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=YahooDemo&location=";
  $addressData = file_get_contents($apiURL.urlencode($address));
  $results = $this->xml2array($addressData);
  if (empty($results['ResultSet']['Result']['Address'])){
   $pointer = count($this->invalidPoints);
   $this->invalidPoints[$pointer]['lat']= $results['ResultSet']['Result']['Latitude'];
   $this->invalidPoints[$pointer]['long']= $results['ResultSet']['Result']['Longitude'];
   $this->invalidPoints[$pointer]['passedAddress'] = $address;
   $this->invalidPoints[$pointer]['htmlMessage'] = $htmlMessage;
    }else{
   $pointer = count($this->validPoints);
   $this->validPoints[$pointer]['lat']= $results['ResultSet']['Result']['Latitude'];
   $this->validPoints[$pointer]['long']= $results['ResultSet']['Result']['Longitude'];
   $this->validPoints[$pointer]['passedAddress'] = $address;
   $this->validPoints[$pointer]['htmlMessage'] = $htmlMessage;
  }
  
 }

que je souhaite adapter avec l'api de google, en exportant les données soit en xml comme yahoo, soit en cvs

l'api de google est de cette forme :
http://maps.google.com/maps/geo?&q=63 rue rossini nices&output=csv&key=MACLE

voici un exemple trouvé sur la class officielle google maps :

 function geoGetCoords($address,$depth=0) {
       
        switch($this->lookup_service) {
                       
            case 'GOOGLE':
               
                $_url = sprintf('http://%s/maps/geo?&q=%s&output=csv&key=%s',$this->lookup_server['GOOGLE'],rawurlencode($address),$this->api_key);


                $_result = false;
               
                if($_result = $this->fetchURL($_url)) {


                    $_result_parts = explode(',',$_result);
                    if($_result_parts[0] != 200)
                        return false;
                    $_coords['lat'] = $_result_parts[2];
                    $_coords['lon'] = $_result_parts[3];
                }
               
                break;
           
            case 'YAHOO':
            default:
                       
                $_url = 'http://%s/MapsService/V1/geocode';
                $_url .= sprintf('?appid=%s&location=%s',$this->lookup_server['YAHOO'],$this->app_id,rawurlencode($address));


                $_result = false;


                if($_result = $this->fetchURL($_url)) {


                    preg_match('!<Latitude>(.*)</Latitude><Longitude>(.*)</Longitude>!U', $_result, $_match);


                    $_coords['lon'] = $_match[2];
                    $_coords['lat'] = $_match[1];


                }
               
                break;
        }        
       
        return $_coords;      
    }

Ca n'a pas l'air hyper compliqué quand on a appri les bases....

autre exemple : avec la recherche de coordonnées à partir de googple maps :
http://www.developer.com/db/article.php/10920_3621981_1

mais la ça fait une semaine que je galère

merci pour vos idées, et/ou m'aider à adapter la fonction

2 réponses

Epoc22 Messages postés 198 Date d'inscription lundi 28 février 2005 Statut Membre Dernière intervention 14 novembre 2008 1
14 févr. 2007 à 14:35
Ca a l'air chaud...
0
Epoc22 Messages postés 198 Date d'inscription lundi 28 février 2005 Statut Membre Dernière intervention 14 novembre 2008 1
14 févr. 2007 à 14:35
Ca a l'air chaud...
0
Rejoignez-nous