Доброе утро.
Я хотел бы знать, как я добавляю километры к точке карты (широта / долгота).
Например: город Jaraguá делает Sul находится в широте-26.462049, долгота-49.059448. Я хочу сложить 100 километров, вниз, и на сторонах. Я хочу сделать квадрат и понять новые мысли.
Как я делаю это?
Я попробовал его:
<?php
$distance = 100;
$earthRadius = 6371;
$lat1 = -26.4853239150483;
$lon1 = -49.075927734375;
$bearing = 0;
$lat2 = asin(sin($lat1) * cos($distance / $earthRadius) + cos($lat1) * sin($distance / $earthRadius) * cos($bearing));
$lon2 = $lon1 + atan2(sin($bearing) * sin($distance / $earthRadius) * cos($lat1), cos($distance / $earthRadius) - sin($lat1) * sin($lat2));
echo 'LAT: ' . $lat2 . '<br >';
echo 'LNG: ' . $lon2;
?>
Но это возвращает неправильные координаты.Спасибо!
Большое спасибо.
Большая тема. Вот несколько вводных ссылок:
ОБНОВЛЕНИЕ:
Тригонометрические функции PHP принимают радианы в качестве параметров, а не градусы, поэтому вам нужно использовать deg2rad () в качестве параметра:
sin(deg2rad($lat))
http : //www.php.net/manual/en/function.deg2rad.php
Исходный ответ:
Действительно большая тема.
В зависимости от требуемой точности (и пройденного расстояния) вам, возможно, придется принять во внимание, что Земля - не идеальная сфера, а геоид (плоский эллипсоид).
http://en.wikipedia.org/wiki/Earth_radius
поможет вам начать это.
Картирование и проекция - две темы, на которые вы тоже должны обратить внимание
еще одна ссылка из Википедии на тему расстояний
На основании вашей новой информации у меня есть два альтернативных подхода. (1) Google "PHP GIS". Вы найдете несколько интересных ресурсов. Может быть, один из них сработает. (2) Если ваши предприятия определены по широте и долготе, вам придется использовать (1), я думаю. Но есть ли подход «тупее»? Например, если каждое предприятие связано с городом, используйте простые координаты карты («K16») для определения городов. Или что-то более умное с точки зрения кода, но это идея.