【问题标题】:laravel calculate distance between two points in Milelaravel计算英里两点之间的距离
【发布时间】:2018-06-26 17:03:54
【问题描述】:

我正在使用代码来获取两点之间的距离,它工作正常,但问题是代码返回带有 KM 字符的数据(例如 56.0 公里),所以我想使用纯数字以英里或到用于与其他值进行比较

 public function getdistance(Request $request)
 {
  $currentaddress =$request->currentadd;
  $from = '4429 North Broadway, Chicago, IL, United States';
  $remFrom = str_replace(',', '', $from); //Remove Commas
 $from = urlencode($remFrom);
$to = $currentaddress;
$remTo = str_replace(',', '', $to); //Remove Commas
  $to = urlencode($remTo);
 $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,true);
 $distance = $data['rows'][0]['elements'][0]['distance']['text'];

  return response()->json([$distance]);
   }

【问题讨论】:

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


【解决方案1】:

您可以在 API URL 中指定 units parameter 以使用英制单位(英尺和英里)而不是公制。来自文档的注释:

此单位系统设置仅影响距离字段中显示的文本。距离字段还包含始终以米表示的值。

http://maps.googleapis.com/maps/api/distancematrix/json?origins=$from&destinations=$to&language=en-EN&sensor=false&units=imperial

【讨论】:

  • 我知道,当我在纯 php 中而不是在 laravel 中使用它时,我能够像这样 $mile = $distance * 0.62137;但在 laravel 中不能,不知道为什么,结果带有 km 字符
  • 我没有看到任何特定于 Laravel 的内容会影响 KM 中的结果。尝试将您的原生 PHP 代码与您的 Laravel 代码进行比较,看看有什么不同——也许您之前指定了 units,或者点击了不同的 API URL。
【解决方案2】:

使用$distance = $data['rows'][0]['elements'][0]['distance']['value'];,它将以米为单位的距离作为数字。

您可以通过除以1609.34 将其转换为英里。

响应(this request):

{
   "destination_addresses" : [ "New York, NY, USA" ],
   "origin_addresses" : [ "4429 North Broadway, Chicago, IL 60640, USA" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "1,294 km",
                  "value" : 1293988    // <============ distance in meters
               },
               "duration" : {
                  "text" : "12 hours 24 mins",
                  "value" : 44618      // <============ duration in seconds
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

【讨论】:

    猜你喜欢
    • 2016-10-18
    • 2010-10-30
    • 1970-01-01
    • 2011-04-23
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多