1

我已经设法从谷歌地图获得邮政编码的经度和纬度,但我无法获得两者之间的距离。下面的 url 给了我一些 JSON:

https://maps.googleapis.com/maps/api/distancematrix/json?origins=51.6896118,-0.7846495&destinations=51.7651382,-3.7914676&units=imperial&sensor=false

但我无法使用 PHP 将其剥离:

<?php
    $du = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=51.6896118,-0.7846495&destinations=51.7651382,-3.7914676&units=imperial&sensor=false";
    $djd = json_decode(utf8_encode($du),true);
    print("-".$djd."-");
?>

有人知道这是为什么吗?

编辑

以下工作得很好:

<?php
    $pc1 = 'SA92NH';
    $pc2 = 'HP270SW';
    $url1 = "https://maps.googleapis.com/maps/api/geocode/json?address=".$pc1."&sensor=false";
    $url2 = "https://maps.googleapis.com/maps/api/geocode/json?address=".$pc2."&sensor=false";
    $url1_data = file_get_contents($url1);
    $url2_data = file_get_contents($url2);
    $json1_data = json_decode(utf8_encode($url1_data),true);
    $json2_data = json_decode(utf8_encode($url2_data),true);
    $longlat1 = $json1_data['results'][0]['geometry']['location']['lat'].",".$json1_data['results'][0]['geometry']['location']['lng'];
    $longlat2 = $json2_data['results'][0]['geometry']['location']['lat'].",".$json2_data['results'][0]['geometry']['location']['lng'];
    print($longlat1."<br>\n");
    print($longlat2."<br>\n");
?>
4

2 回答 2

4

这是你想要的?您需要获取数据,不能只输入 url。

在我的示例中,我使用 get file_get_contents

<?php
    $du = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?origins=51.6896118,-0.7846495&destinations=51.7651382,-3.7914676&units=imperial&sensor=false");
    $djd = json_decode(utf8_encode($du),true);
    print_r($djd);
?>

http://codepad.viper-7.com/LqxpJW

于 2013-03-26T14:44:32.613 回答
2
$url = 'https://maps.googleapis.com/maps/api/distancematrix/json?origins=51.6896118,-0.7846495&destinations=51.7651382,-3.7914676&units=imperial&sensor=false';

$content = file_get_contents($url);
$json = json_decode($content, true);

然后像数组一样访问 $json !像这样的东西:

echo $json['rows']['elements']['distance']['text'];
于 2013-03-26T14:46:34.557 回答