2017-01-24 8 views
0

У меня есть код php, который возвращает значение $distance с использованием номера местоположения, но как получить расстояние, используя название местоположения? здесь кодКак получить расстояние от двух мест имя с использованием php

$from = "Arlington Heights, IL 60005, United States"; 
$to = 'Arlington Heights, IL 60004, United States'; 
$from = urlencode($from); 
$to = urlencode($to); 
$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); 
$time = 0; 
$distance = 0; 

foreach($data->rows[0]->elements as $road) { 
    $time += $road->duration->value; 
    $distance += $road->distance->value; 
} 
+0

Что вы имеете в виду под "номер места"? Насколько я вижу, вы используете фактические имена мест в своем коде? – treegarden

ответ

0

Хорошо, это похоже, что я был неправ разделителями-х годов, но взять на борт, что их не нужно для этого запроса и может привести к ошибкам, особенно если ваш полагаться на ввод данных пользователем. Я полагаю, что ваша проблема сводится к вашему циклу foreach(), так как в нем нет необходимости, если ваш запрос A - B. Кроме того, вы запрашиваете массив, как будто это объект, которого нет. Вы должны использовать квадратные скобки [] при запросе определенных элементов в массиве.

$from = 'Arlington Heights, IL 60005, United States'; 
$remFrom = str_replace(',', '', $from); //Remove Commas 
$from = urlencode($remFrom); 

$to = 'Arlington Heights, IL 60004, United States'; 
$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); 

$time = $data['rows'][0]['elements'][0]['duration']['text']; //Text for String and Value for INT 
$distance = $data['rows'][0]['elements'][0]['distance']['text'];//Text for String and Value for INT 

echo 'Distance: ' . $distance . '<br>'; 
echo 'Time: ' . $time; 

Выход:

Distance: 5.7 km 
Time: 11 mins 

См:

https://developers.google.com/maps/documentation/distance-matrix/intro

+0

Он отлично работает с запятыми, так что это не проблема. 'urlencode' заботится об этом – treegarden

+0

Спасибо, но информация поступает из текста ввода, так как я могу удалить кому? –

+0

@ GhadahSalman запятая пройдет после 'urlencode()', но их не нужно. Я бы лично удалил все символы без слова, кроме пробелов. В приведенном выше коде объясняется, как это сделать, используя 'str_replace()', просто установите переменную '$ from' &' $ to', чтобы содержать вашу переменную ввода пользователя. – Kitson88