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