Подтвердить что ты не робот

Разбор Google Geocoding JSON с PHP

Я пытаюсь разобрать ответ json из Google Geocode API, но я немного затрудняюсь его понять.

Для незнакомых с Geocode API здесь находится URL: http://maps.google.com/maps/api/geocode/json?address=albert%20square&sensor=false

Я использую следующий код для анализа запроса

<?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);

?>

И я пытаюсь выполнить вывод со следующим:

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

Я не уверен, почему ничего не повторилось. Я также пробовал $json[0]['results'][0]['formated_address']. Я знаю, что это вопрос о нобе, но многомерные массивы меня путают.

4b9b3361

Ответ 1

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

Это помогает, если вы правильно произнесете его, -)

Ответ 2

... только FYI, URL-адрес запроса JSON должен быть правильно отформатирован, чтобы вернуть что-либо хорошее, иначе вы можете получить NULL-ответ.

Например, это то, как я извлекаю значения долготы и широты из ответа 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;

... также вы можете использовать тот же код для жесткого кодирования iframe Google Map и встраивать его в свою страницу, если API v3 не ведет себя... см. простой учебник здесь: http://pmcds.ca/blog/embedding-google-maps-into-the-webpage.html

Внедрение - это не совсем правильный подход, но есть моменты, когда это становится необходимым решением.