2012-05-24 55 views
13

Tôi đang cố gắng phân tích cú pháp phản hồi json từ API mã hóa địa lý của Google nhưng tôi gặp một chút rắc rối khi hiểu nó.Phân tích cú pháp JSON mã hóa địa lý của Google bằng PHP

Đối với những người không quen với Mã hóa địa lý API đây là URL: http://maps.google.com/maps/api/geocode/json?address=albert%20square&sensor=false

Tôi đang sử dụng đoạn mã sau để phân tích các yêu cầu

<?php 

$address = urlencode($_POST['address']); 
$request = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=" . $address . "&sensor=false"); 
$json = json_decode($request, true); 

?> 

Và tôi đang cố gắng để đầu ra như sau:

echo $json['results'][0]['formated_address']; 

Tôi không chắc tại sao không có gì được lặp lại. Tôi cũng đã thử $json[0]['results'][0]['formated_address']. Tôi biết đây là một câu hỏi noob, nhưng mảng đa chiều làm tôi bối rối.

+5

Câu hỏi này dường như không có chủ đề vì đó là lỗi chính tả, điều gì đó không giúp người khác tìm kiếm các vấn đề liên quan đến chủ đề. – DaveRandom

Trả lời

12
echo $json['results'][0]['formatted_address']; 

Nó giúp nếu bạn đánh vần từ đó một cách chính xác ;-)

+5

doh! Tôi là một thằng ngốc đôi khi –

7

... chỉ FYI, URL yêu cầu JSON đã được định dạng đúng để trở lại bất cứ điều gì tốt nếu không bạn có thể nhận được phản hồi NULL.

Ví dụ, đây là cách tôi lấy kinh độ và vĩ độ giá trị từ phản ứng JSON:

// some address values 
    $client_address = '123 street'; 
    $client_city = 'Some City'; 
    $client_state = 'Some State'; 
    $client_zip = 'postal code'; 

// building the JSON URL string for Google API call 
    $g_address = str_replace(' ', '+', trim($client_address)).","; 
    $g_city = '+'.str_replace(' ', '+', trim($client_city)).","; 
    $g_state = '+'.str_replace(' ', '+', trim($client_state)); 
    $g_zip  = isset($client_zip)? '+'.str_replace(' ', '', trim($client_zip)) : ''; 

$g_addr_str = $g_address.$g_city.$g_state.$g_zip;  
$url = "http://maps.google.com/maps/api/geocode/json? 
     address=$g_addr_str&sensor=false"; 

// Parsing the JSON response from the Google Geocode API to get exact map coordinates: 
// latitude , longitude (see the Google doc. for the complete data return here: 
// https://developers.google.com/maps/documentation/geocoding/.) 

$jsonData = file_get_contents($url); 

$data = json_decode($jsonData); 

$xlat = $data->{'results'}[0]->{'geometry'}->{'location'}->{'lat'}; 
$xlong = $data->{'results'}[0]->{'geometry'}->{'location'}->{'lng'}; 

echo $xlat.",".$xlong; 

... cũng có, bạn có thể sử dụng cùng một mã để mã hóa cứng Google Map iframe và nhúng nó vào bạn trang nếu API v3 không cư xử ... xem hướng dẫn đơn giản ở đây: http://pmcds.ca/blog/embedding-google-maps-into-the-webpage.html

nhúng là không chính xác cách tiếp cận đúng nhưng có những lúc nó trở nên cần giải pháp.

+0

Tôi sẽ sử dụng 'urlencode()' thay vì 'str_replace()', điều này sẽ chăm sóc không gian và bất kỳ ký tự đặc biệt nào khác cho địa chỉ. –

Các vấn đề liên quan