Laravel рассчитать расстояние между двумя точками в милях - PullRequest
0 голосов
/ 26 июня 2018

Я использую код для получения расстояния между двумя точками, он работает нормально, но проблема в том, что код возвращает данные с символами КМ (например, 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]);
   }

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Используйте $distance = $data['rows'][0]['elements'][0]['distance']['value'];, это будет расстояние в метрах как число.

Вы можете преобразовать это в мили, разделив на 1609.34.

Ответ (для на этот запрос ):

{
   "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"
}
0 голосов
/ 26 июня 2018

Можно указать units параметр в URL-адресе API, чтобы использовать метрические единицы (футы и мили) вместо метрики. Примечание от документов:

Эта системная настройка устройства влияет только на текст, отображаемый в полях расстояния . Поля расстояния также содержат значения, которые всегда выражаются в метрах.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...