【问题标题】:How to get distance between two locations using Google Distance Matrix [duplicate]如何使用谷歌距离矩阵获取两个位置之间的距离[重复]
【发布时间】:2021-01-26 14:47:51
【问题描述】:
<html>
    <body>

        <form action="" method="post">

            <label>Origin:</label> <input type="text" name="o" placeholder="Enter Origin location" required> <br><br>
            <label>Destination:</label> <input type="text" name="d" placeholder="Enter Destination location" required> <br><br>
            <input type="submit" value="Calculate distance & time" name="submit"> <br><br>

        </form>

        <?php
        $con = mysqli_connect("localhost","root","","buspass");

            if(isset($_POST['submit'])){
            $origin = $_POST['o']; 
            $destination = $_POST['d'];
            $api = file_get_contents("https://www.google.com/maps/search/?api=1&query=centurylink+field/distancematrix/json?units=imperial&origins=".$origin."&destinations=".$destination."&key=AIzaSyAWOoVKOdZ3xCEvoz735TBrggU0q7EgPsU");
            $data = json_decode($api);
        ?>
                <label><b>Distance: </b></label> <span>
                <?php 
                if (is_object($data)) {
                    echo((int)$data->rows[0]->elements[0]->distance->value / 1000).' Km'; //line24
                }
                ?>
                </span> <br><br>
            <label><b>Travel Time: </b></label> <span>
            <?php
            if (is_object($data)) {
                echo $data->rows[0]->elements[0]->duration->text;        //line 31
            }
            ?>
            </span> 
    
        <?php 
        } 
        ?>

    </body>
</html>

当我输入这两个位置并发布时,它应该输出两个位置之间的距离和大约到达的时间

错误信息

注意:试图获取非对象的属性“行” C:\xampp\htdocs\Bus Pass\distance.php 在第 24 行

注意:试图获取非对象的属性“元素” C:\xampp\htdocs\Bus Pass\distance.php 在第 24 行

注意:试图获取非对象的属性“距离” C:\xampp\htdocs\Bus Pass\distance.php 在第 24 行

注意:试图获取非对象的属性“值” C:\xampp\htdocs\Bus Pass\distance.php on line 24 0 Km

旅行时间:注意:试图获取非对象的属性“行” C:\xampp\htdocs\Bus Pass\distance.php 在第 31 行

注意:试图获取非对象的属性“元素” C:\xampp\htdocs\Bus Pass\distance.php 在第 31 行

注意:试图获取非对象的属性“持续时间” C:\xampp\htdocs\Bus Pass\distance.php 在第 31 行

注意:试图获取非对象的属性“文本” C:\xampp\htdocs\Bus Pass\distance.php 在第 31 行

【问题讨论】:

    标签: php google-maps time google-distancematrix-api


    【解决方案1】:

    我自己在使用 PHP 的 JSON 对象时遇到了一些困难,

    1。将$data = json_decode($api); 替换为$data = json_decode($api, true); 以获得关联数组。

    2。删除所有对象检查(如if (is_object($data)) {)。

    3。最后,使用数组样式调用而不是对象样式,例如,将代码更改为:

    $data->rows[0]->elements[0]->distance->value
    

    变成类似:

    $data['rows'][0]['elements'][0]['distance']['value']
    

    【讨论】:

    • 已解决问题,谢谢
    • @Susan_WM 如果这个答案帮助你解决了你的问题,那么你为什么“接受”另一个答案?
    • 对不起@jibsteroos ....我是这个stackoverflow等的新手
    • @Susan_WM 不用担心!
    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    相关资源
    最近更新 更多