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

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

Любой получил какую-либо идею или ссылки на примеры.

Предполагая, что вы ищете географическое расстояние , сначала вам нужно получить широту и долготу ваших двух почтовых индексов с помощью служб геокодирования на сервере 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 

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

  • Snipplr – рассчитать расстояние между двумя координатами в PHP

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

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

  • Переполнение стека: рассчитать маршруты проезда с помощью PHP?
  • Получение расстояния с помощью GDirections через URL
  • Получите маршруты проезда с карт Google с помощью HTTP-вызовов на стороне сервера и покажите результаты со статическими картами для WAP
  • Карты и маршруты Google, интерфейс REST?

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

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

 $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 

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

 $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 на ваш предпочтительный параметр:

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

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

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

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

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