Php 插入N个城市并获取起点到终点的距离值

Php 插入N个城市并获取起点到终点的距离值,php,google-maps-api-3,Php,Google Maps Api 3,大家好,你能给我一些建议吗 我在城市间的距离上有些困难 示例:我给出1个paramater(paramater是txt中的城市名称) 如果我像这样插入城市 “巴厘-雅加达-乔加-三宝垄-独奏” 我可以计算从巴厘岛+雅加达+乔加+三宝垄+索洛的距离 范例 巴厘-->雅加达=480公里 雅加达-->Jogja=1202公里 Jogja-->三宝垄=432公里 三宝垄-->单飞=202公里 所以我希望返回值是4个城市的和,并显示起点到终点的距离:2316公里 我得到了与json的距离google ma

大家好,你能给我一些建议吗 我在城市间的距离上有些困难

示例:我给出1个paramater(paramater是txt中的城市名称)

如果我像这样插入城市

“巴厘-雅加达-乔加-三宝垄-独奏”

我可以计算从巴厘岛+雅加达+乔加+三宝垄+索洛的距离

范例

  • 巴厘-->雅加达=480公里

  • 雅加达-->Jogja=1202公里

  • Jogja-->三宝垄=432公里

  • 三宝垄-->单飞=202公里

  • 所以我希望返回值是4个城市的和,并显示起点到终点的距离:2316公里

    我得到了与json的距离google matrix json

    到目前为止,我的代码是:

        public function addJarak1($kota) 
        {
           $kota1=$kota;
           $kota2=$kota;
           foreach ($kota1 as $key1 => $value1)
           {
               foreach ($kota2 as $key2 => $value2)
               {
    
                $berangkat = urlencode($value1);
                $tujuankota = urlencode($value2);
    
                $data = file_get_contents("http://maps.googleapis.com/maps/api/distancematrix/json?origins=$berangkat&destinations=$tujuankota&language=id&units=metric&sensor=true");
                $data = json_decode($data);
    
             //       echo "<pre>". print_r($data ,true) ."</pre>";
                $jarak = 0;
    
                foreach ($data->rows[0]->elements as $road) 
                {
                    $jarak += $road->distance->text;
                }
                $this->simpanjarak1=$jarak;
                //echo "Berangkat: " . $data->origin_addresses[0]+"<br \>Tujuan : " . $data->destination_addresses[0]+"<br \>Jarak: " . $jarak . " KM<br \><br \>";
                return $this->simpanjarak1;
    
            }
           }
        }
    
    
    
    
        public function hitungKM ($kota)
        {
            $this->addJarak1($kota);
            $jarak = $this->simpanjarak1;
                if ($jarak != 0 )
                {
                    {
                        $jarak ;
                    } 
                    if($jarak == 1)
                    {
                        $jarak = 0;
                    } 
                }
                else
                {
                    $jarak=0;
                }
                $x= $jarak;
                $x += $jarak;
    
                echo $jarak;
                return $jarak;
    
        }
    
    
        $kota= Bali + Jakarta + Jogja + Semarang + Solo
        $algo->hitungKM($kota);
    
    公共函数addJarak1($kota)
    {
    $kota1=$kota;
    $kota2=$kota;
    foreach($kota1作为$key1=>$value1)
    {
    foreach($kota2作为$key2=>$value2)
    {
    $berangkat=urlencode($value1);
    $tujuankota=urlencode($value2);
    $data=文件\u获取\u内容(“http://maps.googleapis.com/maps/api/distancematrix/json?origins=$berangkat&destinations=$tujuankota&language=id&units=metric&sensor=true“;
    $data=json_decode($data);
    //回显“.print_r($data,true)”;
    
    print calculate_distance_between_two_uk_cities('birmingham', 'sheffield');
    
    function calculate_distance_between_two_uk_cities($origin, $destination)
    {
        $google_matrix_url = 'http://maps.googleapis.com/maps/api/distancematrix/json?origins='
            . urlencode($origin) . ',UK'
            . '&destinations='
            . urlencode($destination) . ',UK'
            . '&language=en&units=imperial';
    
        $json = file_get_contents($google_matrix_url);
    
        var_dump($json);
    
        if($json === false) {
            throw new Exception('Failed to retrieve response.');
        }
        $result = json_decode($json, TRUE);
        if($result === null) {
            throw new Exception('Could not decode JSON response.');
        }
        if(! isset($result['rows'][0]['elements'][0]['distance']['text'])) {
            throw new Exception('Could not retrieve distance from remote service.');
        }
        $distance = $result['rows'][0]['elements'][0]['distance']['text'];
        $distance = intval($distance);
    
        return $distance;
    }
    
    $jarak=0; foreach($data->rows[0]->元素为$road) { $jarak+=$road->distance->text; } $this->simpanjarak1=$jarak; //echo“Berangkat:.$data->origin_addresses[0]+”Tujuan:.$data->destination_addresses[0]+“Jarak:.$Jarak.KM”; 返回$this->simpanjarak1; } } } 公共功能hitungKM($kota) { $this->addJarak1($kota); $jarak=$this->simpanjarak1; 如果($jarak!=0) { { $jarak; } 如果($jarak==1) { $jarak=0; } } 其他的 { $jarak=0; } $x=$jarak; $x+=$jarak; echo$jarak; 返回$jarak; } $kota=巴厘岛+雅加达+乔加+三宝垄+独奏 $algo->hitungKM($kota);
    所以如果返回值是2316公里

    谁能给我一些建议吗? 谢谢你
    抱歉英语不好:)

    也许这会有帮助:

    我将英国后缀添加到了起点和终点,否则像“伯明翰”这样的查找将失败