Подтвердить что ты не робот

Использование PHP и Google Maps Api для определения расстояния между двумя почтовыми кодами (Великобритания)

Хей, мне интересно, как выработать расстояние между двумя почтовыми кодами с помощью PHP и Google Maps Api.

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

4b9b3361

Ответ 1

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

$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; результаты геокодирования, не отображая их на карте, запрещены Ограничения лицензии на использование API Карт Google.


ОБНОВЛЕНИЕ:

Если вы ищете расстояние на расстоянии вместо географического расстояния, обратите внимание, что на данный момент нет документально подтвержденного метода, чтобы получить доступ к 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 Условия использования Google Maps API.

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

Ответ 2

Не знаю, изменил ли 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

Ответ 3

Основываясь на ответе Даниэля, вы можете использовать Google 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 с вашим предпочтительным параметром:

  • & Режим = вождение
  • & Режим = езда на велосипеде
  • & Режим = транзит
  • &ampы; Режим = ходьба

Ответ 4

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

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

Ответ 5

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

Посмотрите эту статью для примера кода.