IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

API google de V2 vers V3 avec json_decode


Sujet :

APIs Google

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut API google de V2 vers V3 avec json_decode
    Bonjour,

    Jusqu'a present j'utilise le code suivant pour recuperer le pays, la region et la ville d'une coordonnee LAT, LNG

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $url = "http://maps.google.com/maps/geo?q=$lat,$lng&output=json&oe=utf8&sensor=false&key=$api_key";
    $data = @file_get_contents($url); 
    $jsondata = json_decode($data,true); 
    if(is_array($jsondata )&& $jsondata ['Status']['code']==200) 
    {
    	$region = $jsondata ['Placemark'][0]['AddressDetails']['Country']['AdministrativeArea']['AdministrativeAreaName'];
          $pays = $jsondata ['Placemark'][0]['AddressDetails']['Country']['CountryName']; 
    	$ville = $jsondata ['Placemark'][0]['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['LocalityName'];
     
    }
    Ca fonctionne bien mais j'ai lu que la version V2 de l'api Google va bientot disparaitre. Je voudrais donc passrer ce code a la version V3 mais j'ai du mal a trouver les informations pour realiser ceci.

    j'ai ecrit cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $lat=45.500702;
    $lng=-73.559115;
     
    	$jsonurl = "http://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$lng&sensor=false";
    	$json = file_get_contents($jsonurl,0,null,null);
    	$json_output = json_decode($json, true);
    	$json_output = (array) $json_output;
     
    	$region = $json_output ['administrative_area_level_1'];
    mais region ne retourne aucune valeur.

    par contre si je fais un print_r sur $json_output j'obtiens les bonne valeurs dans un tableau mais je ne sais pas comment les recuperer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [results] => Array ( [0] => Array ( [address_components] => Array ( [0] => Array ( [long_name] => 468 [short_name] => 468 [types] => Array ( [0] => street_number ) ) [1] => Array ( [long_name] => McGill St [short_name] => McGill St [types] => Array ( [0] => route ) ) [2] => Array ( [long_name] => Ville-Marie [short_name] => Ville-Marie [types] => Array ( [0] => neighborhood [1] => political ) ) [3] => Array ( [long_name] => Montreal [short_name] => Montreal [types] => Array ( [0] => locality [1] => political ) ) [4] => Array ( [long_name] => Communauté-Urbaine-de-Montréal [short_name] => Communauté-Urbaine-de-Montréal [types] => Array ( [0] => administrative_area_level_2 [1] => political ) ) [5] => Array ( [long_name] => Quebec [short_name] => QC [types] => Array ( [0] => administrative_area_level_1 [1] => political ) ) [6] => Array ( [long_name] => Canada [short_name] => CA [types] => Array ( [0] => country [1] => political ) ) [7] => Array ( [long_name] => H2Y 2H1 [short_name] => H2Y 2H1 [types] => Array ( [0] => postal_code ) ) ) [formatted_address] => 468 McGill St, Montreal, QC H2Y 2H1, Canada [geometry] => Array ( [location] => Array ( [lat] => 45.5007167 [lng] => -73.5590722 ) [location_type] => ROOFTOP [viewport] => Array ( [northeast] => Array ( [lat] => 45.5020656803 [lng] => -73.5577232197 ) [southwest] =>
    Merci de votre aide

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 070
    Points : 44 677
    Points
    44 677
    Par défaut
    Bonjour,
    le plus simple pour toi est de
    - taper dans la barre d'adresse http://maps.googleapis.com/maps/api/...5&sensor=false, et de télécharger le fichier pour voir sa structure
    - lire la documentation http://code.google.com/intl/fr/apis/...odingResponses ...

    quoiqu'il arrive administrative_area_level_1 est une valeur pas une clé

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut
    Salut NoSmoking et merci pour le conseil de l'url,

    J'ai finalement reussi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    $geocode=file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?latlng='.$lat.','.$lng.'&language=fr&sensor=false');
     
    $output= json_decode($geocode);
     
    for ($i = 0; $i < 15; $i++) {
    	if ($output->results[0]->address_components[$i]->types[0] == 'country') {
    		$pays = $output->results[0]->address_components[$i]->long_name;
    		//$pays = $output['results'][0]['address_components'][$i]['short_name'];
    	}
    }
     
    for ($i = 0; $i < 15; $i++) {
    	if ($output->results[0]->address_components[$i]->types[0] == 'administrative_area_level_1') {
    		$region = $output->results[0]->address_components[$i]->short_name;
    		//$pays = $output['results'][0]['address_components'][$i]['short_name'];
    	}
    }
     
    for ($i = 0; $i < 15; $i++) {
    	if ($output->results[0]->address_components[$i]->types[0] == 'locality') {
    		$ville = $output->results[0]->address_components[$i]->long_name;
    		//$pays = $output['results'][0]['address_components'][$i]['short_name'];
    	}
    }

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 070
    Points : 44 677
    Points
    44 677
    Par défaut
    il y a quand même moyen de factoriser tes boucles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $geocode=file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?latlng='.$lat.','.$lng.'&language=fr&sensor=false');
     
    $output= json_decode($geocode);
     
    for ($i = 0; $i < 15; $i++) {
    	if ($output->results[0]->address_components[$i]->types[0] == 'country') {
    		$pays = $output->results[0]->address_components[$i]->long_name;
    		//$pays = $output['results'][0]['address_components'][$i]['short_name'];
    	}
     
    	if ($output->results[0]->address_components[$i]->types[0] == 'administrative_area_level_1') {
    		$region = $output->results[0]->address_components[$i]->short_name;
    		//$pays = $output['results'][0]['address_components'][$i]['short_name'];
    	}
    	if ($output->results[0]->address_components[$i]->types[0] == 'locality') {
    		$ville = $output->results[0]->address_components[$i]->long_name;
    		//$pays = $output['results'][0]['address_components'][$i]['short_name'];
    	}
    }
    et également de simplifier le code vue que tu as plusieurs fois les mêmes valeurs pour tes test
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ref = $output->results[0]->address_components[$i];
      if( $ref->types[0] == 'country')
    ou un truc dans le style...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. API Google Map démarrer une activity avec des coordonnées perso
    Par jeanjean6 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 23/08/2011, 14h05
  2. gérer l'ajout d'événement avec l'API Google Calendar
    Par brunoperel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/03/2009, 16h41
  3. Affichage avec api google map
    Par S-Kayp dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/10/2008, 13h52
  4. Tester l'existence d'un point avec l'api google map
    Par numerodix dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/10/2008, 09h28
  5. [Web Service] Tracer des zones avec l'API Google
    Par Cvbdev dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 21/03/2008, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo