Использование PHP и Google Maps Api для определения расстояния между двумя почтовыми индексами (Великобритания) - PullRequest
17 голосов
/ 19 февраля 2010

Слушай, мне интересно, как рассчитать расстояние между двумя почтовыми кодами, используя PHP и Google Maps Api.

У любого есть идеи или ссылки на примеры.

Ответы [ 5 ]

30 голосов
/ 19 февраля 2010

Предполагая, что вы ищете географическое расстояние , сначала вам нужно получить широту и долготу ваших двух почтовых индексов с помощью серверных служб геокодирования Карт Google , как показано ниже пример:

$url = 'http://maps.google.com/maps/geo?q=EC3M,+UK&output=csv&sensor=false';

$data = @file_get_contents($url);

$result = explode(",", $data);

echo $result[0]; // status code
echo $result[1]; // accuracy
echo $result[2]; // latitude
echo $result[3]; // longitude

Затем вы можете рассчитать расстояние между координатами двух ваших почтовых индексов, используя расстояние по большому кругу , например, следующее:

Обратите внимание, что служба геокодирования на стороне сервера может использоваться только в сочетании с отображением результатов на карте Google; Результаты геокодирования без отображения их на карте запрещены Условиями использования Google Maps API Условия лицензии .


ОБНОВЛЕНИЕ:

Если вы ищете расстояние вождения, а не географическое расстояние, обратите внимание, что в настоящее время не существует документированного и утвержденного метода доступа к API Google Maps Directions через HTTP-запрос на стороне сервера.

Тем не менее недокументированный метод, который возвращает вывод JSON, выглядит следующим образом:

http://maps.google.com/maps/nav?q=from:London%20to:Dover

Это вернет вам маршруты проезда, а также общее расстояние в формате JSON: "meters":122977.

Формат параметра q должен быть from:xxx%20to:yyy. Замените xxx и yyy на начало и пункт назначения соответственно. Вы можете использовать координаты широты и долготы вместо полных адресов:

http://maps.google.com/maps/nav?q=from:51.519894,-0.105667%20to:51.129079,1.306925

Обратите внимание, что это не только недокументировано, но и может нарушать ограничения 10.1 и 10.5 Общих положений и условий API Карт Google .

Вам также может быть интересно проверить следующие связанные статьи:

4 голосов
/ 17 мая 2013

Не знаю, если API V3 что-то меняет, но я уже давно пользуюсь этим, и он все еще работает:

От и до каждый выражается в виде широты, долготы (адрес, вероятно, будет работать; Я уверен, что попробовал, но не помню, и у меня все равно были координаты)

$base_url = 'http://maps.googleapis.com/maps/api/directions/xml?sensor=false';
$xml = simplexml_load_file("$base_url&origin=$from&destination=$to");
$distance = (string)$xml->route->leg->distance->text;
$duration = (string)$xml->route->leg->duration->text
2 голосов
/ 03 февраля 2014

Опираясь на ответ Даниэля, вы можете использовать Google Geocoding API , чтобы легко проехать на автомобиле, общественном транспорте, пешком и на велосипеде:

$postcode1='W1J0DB';
$postcode2='W23UW';
$result = array();

$url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$postcode1&destinations=$postcode2&mode=bicycling&language=en-EN&sensor=false";

$data = @file_get_contents($url);

$result = json_decode($data, true);
print_r($result);

Обязательно замените & mode = bicycling на предпочитаемый вами параметр:

  • & Режим = вождение
  • & Режим = велосипедный
  • & режим = транзит
  • & режим = ходьба
0 голосов
/ 19 февраля 2010

API Карт Google работает на JavaScript, а не на PHP.Чтобы получить то, что вы хотите, поверните 2 почтовых кода в координаты LatLang и используйте функцию distanceFrom, чтобы найти расстояние между ними.

Взгляните на эту статью для некоторого примера кода.

0 голосов
/ 19 февраля 2010

Взгляните на список рассылки здесь:

http://groups.google.com/group/Google-Maps-API/browse_thread/thread/71e6aa2c3de66127

Как только вы решите, хотите ли вы прямую линию или проезжаемое расстояние, вы можете рассчитать ее очень легко.Вам не нужно использовать PHP, но есть примеры.

Посмотрите на это также:

http://groups.google.com/group/google-maps-api/browse_thread/thread/d43de63d05adc62d/1a04053f39a3edf3?lnk=gst&q=calculate+distance#1a04053f39a3edf3

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