Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Google距离矩阵获取两个位置之间的距离 来源: 目的地: 距离: 旅行时间:_Php_Google Maps_Time_Google Distancematrix Api - Fatal编程技术网

Php 如何使用Google距离矩阵获取两个位置之间的距离 来源: 目的地: 距离: 旅行时间:

Php 如何使用Google距离矩阵获取两个位置之间的距离 来源: 目的地: 距离: 旅行时间:,php,google-maps,time,google-distancematrix-api,Php,Google Maps,Time,Google Distancematrix Api,当我输入两个位置并发布时,它应该输出两个位置之间的距离以及到达所需的大致时间 错误消息 注意:尝试在中获取非对象的属性“行” 第24行的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

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

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

注意:尝试在中获取非对象的属性“值” C:\xampp\htdocs\Bus Pass\distance.php在线24 0 Km

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

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

注意:正在尝试获取中非对象的属性“duration” 第31行的C:\xampp\htdocs\Bus Pass\distance.php

注意:正在尝试获取中非对象的属性“text” 第31行的C:\xampp\htdocs\Bus Pass\distance.php


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

一,。替换
$data=json\u decode($api)带有
$data=json\u解码($api,true)
以获取关联数组

二,。删除任何对象检查(如
if(is_object($data)){

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

$data->行[0]->元素[0]->距离->值
变成类似于:

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

我自己在处理PHP的JSON对象时遇到了一些困难

1.将
$data=json\u decode($api);
替换为
$data=json\u decode($api,true);
以获得关联数组

2.删除任何对象检查(如
if(is_object($data)){

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

$data->行[0]->元素[0]->距离->值
变成类似于:

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

解决了问题,谢谢you@Susan_WM如果这个答案帮助你解决了问题,那么你为什么要“接受”另一个答案呢?对不起@Jibstroos…我是新来的etc@Susan_WM不用担心!解决了问题谢谢you@Susan_WM如果这个答案帮助你解决了问题,那么你为什么“接受”另一个答案呢?抱歉@Jibstroos..我是新来的etc@Susan_WM别担心!
<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>