4

私は次のコードを持っています:

$output = file_get_contents("http://maps.google.com/maps/nav?q=from:39.519894,-5.105667%20to:51.129079,1.306925");

$distance = json_decode($output);

Google API から JSON 応答を取得しますが、JSONjson_decode()のデコードに使用NULLすると、関数がそれをデコードできないことを意味する値が得られます。

この背後にある理由は何ですか?

4

2 に答える 2

3

これはあなたのために働くはずです、あなたはアドレスまたはちょうど緯度/経度を$fromと$toに渡すことができます

$from = "Więckowskiego 72, Łódź";
$to = "Gazowa 1, Łódź";

$from = urlencode($from);
$to = urlencode($to);

$data = file_get_contents("http://maps.googleapis.com/maps/api/distancematrix/json?origins=$from&destinations=$to&language=en-EN&sensor=false");
$data = json_decode($data);

$time = 0;
$distance = 0;

foreach($data->rows[0]->elements as $road) {
    $time += $road->duration->value;
    $distance += $road->distance->value;
}

echo "To: ".$data->destination_addresses[0];
echo "<br/>";
echo "From: ".$data->origin_addresses[0];
echo "<br/>";
echo "Time: ".$time." seconds";
echo "<br/>";
echo "Distance: ".$distance." meters";
于 2012-12-27T08:45:15.067 に答える
2

誤ったエンコードが原因で、戻り値に不正な形式のUTF-8文字が含まれている可能性があります。あなたに必要なのはutf8_encode

$json = file_get_contents('http://maps.google.com/maps/nav?q=from:39.519894,-5.105667%20to:51.129079,1.306925');
$data = json_decode(utf8_encode($json),true);
var_dump($data);

ライブデモを見る

于 2012-12-27T08:46:21.267 に答える