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

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

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

17
задан dotty 19 February 2010 в 12:03
поделиться

3 ответа

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


ОБНОВЛЕНИЕ:

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

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

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

Он вернет вам маршруты проезда вместе с общим расстоянием вождения в формате JSON: «метры»: 122977 .

Формат параметра q должен быть от: xxx% 20 до: 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 .

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

30
ответ дан 30 November 2019 в 11:52
поделиться

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

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

0
ответ дан 30 November 2019 в 11:52
поделиться

Это действительно должен быть комментарий, но он слишком длинный для поля комментариев, так что вот он.

Если вы хотите проиллюстрировать разницу между unshift и push , достаточно:

#!/usr/bin/perl

use strict; use warnings;

my @x;

push @x, $_ for 1 .. 3;

my @y;

unshift @y, $_ for 1 .. 3;

print "\@x = @x\n\@y = @y\n";

Output:

@x = 1 2 3
@y = 3 2 1

Note use strict; защищает от многих ошибок программистов и use warnings; предупреждает при использовании конструкций сомнительной ценности. На вашем уровне ни то, ни другое не является необязательным.

-121--4086761-

Ну, все они делают разные вещи.

Однако все остальные факторы равны,

push @list, 'foo' if $foo;

является утверждение, которое передает его значение наиболее непосредственно, поэтому он должен быть предпочтительным.

Если вам нужно сделать паузу и подумать о том, что оператор якобы делает что-то такое же простое, как толкание элемента массива, вы делаете что-то неправильно.

my @list = (
    $foo ? 'foo' : (),
    $bar ? 'bar' : (),
);

может быть в порядке, если это часть какой-то колоссальной инициализации, которая выполняется в другом месте.

Я думаю, что использование

my @list = (
    ('foo') x!! $foo,
    ('bar') x!! $bar,
); 

указывает на то, что программист имеет - как я могу поставить это? - проблемы .

Кстати, нет такой вещи, называемой x!! композитный оператор. !! - двойное логическое отрицание . Он преобразует произвольное ложное значение в определенное, но ложное значение (пустой ряд), которое дает 0 при использовании, где perl ожидает число. Истинное значение преобразуется в 1 . Вот, !! оперирует на $ foo и $ bar и написание его x!! $ foo излишне запутывает смысл кода.

x - оператор повторения . Так,

 ('foo') x !!$foo;

означает повторить ('foo') один раз или нет, в зависимости от того, является ли $ foo истинным или ложным, соответственно .

PS: Конечно, оказывается, что была статья PerlMonks , вводящая так называемый логический оператор squash . Я прочитал статью и считаю ее неубедительной.

-121--3823316-

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

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

0
ответ дан 30 November 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: