JSON uitlezen van Google Maps API

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Leander ---

Leander ---

05/04/2011 18:52:38
Quote Anchor link
Ik ben bezig om via de Google Maps API een adres om te zetten naar Latitude/Longitude.

Nou lukt dat wel aardig, enkel het uitlezen van de JSON lukt me nog niet helemaal.

Ik heb het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    public function getGeolocation($zipcode, $city) {
        $url = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $zipcode . "," . $city . "&sensor=false";
        
        $content = file_get_contents($url);
        
        $geo = var_dump(json_decode($content, TRUE));
        
        return $geo['geometry'];
    }


?>


En dan zit in $geo het volgende:

array(2) {
6 ["status"]=>
7 string(2) "OK"
8 ["results"]=>
9 array(1) {
10 [0]=>
11 array(4) {
12 ["types"]=>
13 array(1) {
14 [0]=>
15 string(11) "postal_code"
16 }
17 ["formatted_address"]=>
18 string(36) "xxxx xx xxxxxx, The Netherlands"
19 ["address_components"]=>
20 array(5) {
21 [0]=>
22 array(3) {
23 ["long_name"]=>
24 string(7) "xxxx xx"
25 ["short_name"]=>
26 string(7) "xxxx xx"
27 ["types"]=>
28 array(1) {
29 [0]=>
30 string(11) "postal_code"
31 }
32 }
33 [1]=>
34 array(3) {
35 ["long_name"]=>
36 string(11) "xxxxxx"
37 ["short_name"]=>
38 string(11) "xxxxxx"
39 ["types"]=>
40 array(2) {
41 [0]=>
42 string(8) "locality"
43 [1]=>
44 string(9) "political"
45 }
46 }
47 [2]=>
48 array(3) {
49 ["long_name"]=>
50 string(15) "xxxxxx"
51 ["short_name"]=>
52 string(15) "xxxxxx"
53 ["types"]=>
54 array(2) {
55 [0]=>
56 string(27) "administrative_area_level_2"
57 [1]=>
58 string(9) "political"
59 }
60 }
61 [3]=>
62 array(3) {
63 ["long_name"]=>
64 string(9) "Friesland"
65 ["short_name"]=>
66 string(2) "FR"
67 ["types"]=>
68 array(2) {
69 [0]=>
70 string(27) "administrative_area_level_1"
71 [1]=>
72 string(9) "political"
73 }
74 }
75 [4]=>
76 array(3) {
77 ["long_name"]=>
78 string(15) "The Netherlands"
79 ["short_name"]=>
80 string(2) "NL"
81 ["types"]=>
82 array(2) {
83 [0]=>
84 string(7) "country"
85 [1]=>
86 string(9) "political"
87 }
88 }
89 }
90 ["geometry"]=>
91 array(3) {
92 ["location"]=>
93 array(2) {
94 ["lat"]=>
95 float(00.0000000)
96 ["lng"]=>
97 float(0.0000000)
98 }
99 ["location_type"]=>
100 string(11) "APPROXIMATE"
101 ["viewport"]=>
102 array(2) {
103 ["southwest"]=>
104 array(2) {
105 ["lat"]=>
106 float(00.0000000)
107 ["lng"]=>
108 float(0.0000000)
109 }
110 ["northeast"]=>
111 array(2) {
112 ["lat"]=>
113 float(00.0000000)
114 ["lng"]=>
115 float(0.0000000)
116 }
117 }
118 }
119 }
120 }
121}


Nu is het de bedoeling dat ik de waardes lat en long uit Geometry->location->lat/long haal. Het enige probleem is is dat het me niet lukt. Ik krijg het niet voor elkaar om uit zo iets gegevens te halen, terwijl het niks anders is dan een associative array? Kan iemand mij op de goede weg helpen?
Gewijzigd op 05/04/2011 18:56:36 door Leander ---
 
PHP hulp

PHP hulp

23/11/2024 09:18:02
 
Joris van Rijn

Joris van Rijn

05/04/2011 19:27:28
Quote Anchor link
$geo['geometry']['location']['lat'];
$geo['geometry']['location']['lon'];

Die zouden het moeten zijn toch?
 
Noppes Homeland

Noppes Homeland

05/04/2011 19:27:31
Quote Anchor link
Gaat jij lekker eerst eens een cursus "Hoe en Wat Array's" volgen.

M.a.w. je stelt hier een vraag welke al ettelijke malen beantwoord is.

En de vraag luid dan in veel gevallen: Hoe lees ik een arrayuit
 
Leander ---

Leander ---

05/04/2011 19:55:15
Quote Anchor link
Joris van Rijn op 05/04/2011 19:27:28:
$geo['geometry']['location']['lat'];
$geo['geometry']['location']['lon'];

Die zouden het moeten zijn toch?


Nee, dat werkt dus op een vreemde wijze niet.

($geo['results']['geometry']['location']['lat']; < die ook niet ['results'] is nog een laag daarboven (was ik vergeten). Zelfs $geo['status'] geeft niks terug!)

Noppes Homeland op 05/04/2011 19:27:31:
Gaat jij lekker eerst eens een cursus "Hoe en Wat Array's" volgen.

M.a.w. je stelt hier een vraag welke al ettelijke malen beantwoord is.

En de vraag luid dan in veel gevallen: Hoe lees ik een arrayuit


Sorry

EDIT:

Het vreemde is dat als ik het op de volgende manier doe:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$obj
= json_decode($content);
        
print $obj->{'status'};

?>


Hij wel iets laat zien, maar op deze manier niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$geo
= var_dump(json_decode($content, TRUE));
echo $geo['status'];

?>


Wat het naar mijn idee wel moet doen? Toch?
Gewijzigd op 05/04/2011 20:13:41 door Leander ---
 
Joris van Rijn

Joris van Rijn

05/04/2011 20:14:14
Quote Anchor link
Ik kom er net met wat testen achter dat de api meerdere resultaten terug stuurt, wanneer die er zijn. Dit allemaal wordt ook in een array gezet:
http://jorisvrijn.nl/test/googlemaps.php

Het stukje code van die webpagina:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    function getGeolocation($location){
        $url = 'http://maps.googleapis.com/maps/api/geocode/json?address='.$location.'&sensor=false';
        $recieved = file_get_contents($url);
        $returnedarray = json_decode($recieved, true);
        
        return $returnedarray;
    }

    
    $arr = getGeolocation('grevelingen');
    
    foreach($arr['results'] as $location){
        echo '<b>'.$location['formatted_address'].'</b><br/>';
        echo 'Lon: '.$location['geometry']['location']['lng'].'<br/>';
        echo 'Lat: '.$location['geometry']['location']['lat'].'<br/><hr/>';
    }

?>
 
Leander ---

Leander ---

05/04/2011 20:30:04
Quote Anchor link
Joris van Rijn op 05/04/2011 20:14:14:
Ik kom er net met wat testen achter dat de api meerdere resultaten terug stuurt, wanneer die er zijn. Dit allemaal wordt ook in een array gezet:
http://jorisvrijn.nl/test/googlemaps.php

Het stukje code van die webpagina:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    function getGeolocation($location){
        $url = 'http://maps.googleapis.com/maps/api/geocode/json?address='.$location.'&sensor=false';
        $recieved = file_get_contents($url);
        $returnedarray = json_decode($recieved, true);
        
        return $returnedarray;
    }

    
    $arr = getGeolocation('grevelingen');
    
    foreach($arr['results'] as $location){
        echo '<b>'.$location['formatted_address'].'</b><br/>';
        echo 'Lon: '.$location['geometry']['location']['lng'].'<br/>';
        echo 'Lat: '.$location['geometry']['location']['lat'].'<br/><hr/>';
    }

?>


Dankje het werkt! Uiteindelijk is de oplossing eigenlijk heel simpel xD Maar goed, als nog bedankt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.