Хей, мне интересно, как выработать расстояние между двумя почтовыми кодами с помощью 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
Затем вы можете рассчитать расстояние между координатами двух ваших почтовых индексов, используя большое расстояние круга, например следующее:
Обратите внимание, что серверная служба геокодирования может использоваться только совместно с отображением результатов на карте 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.
Вы также можете быть заинтересованы в проверке следующих связанных статей:
Не знаю, изменил ли 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
Основываясь на ответе Даниэля, вы можете использовать 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 с вашим предпочтительным параметром:
Взгляните на список рассылки здесь:
http://groups.google.com/group/Google-Maps-API/browse_thread/thread/71e6aa2c3de66127
Как только вы решите, хотите ли вы провести прямую линию или расстояние до него, вы можете легко вычислить ее. Вам не нужно использовать PHP, но есть примеры.
Посмотрите на это также:
API Карт Google находится в JavaScript, а не в PHP. Чтобы добиться того, чего вы хотите, переведите 2 почтовых кода в координаты LatLang и используйте функцию distanceFrom
, чтобы найти расстояние между ними.
Посмотрите эту статью для примера кода.