Как переместить х расстояние в любом направлении от географических координат? - PullRequest
0 голосов
/ 09 сентября 2011

Я использую API Google Адресов, чтобы получить список заведений рядом с географическим местоположением, и пытаюсь выяснить, как переместиться на 1 км к северу и получить там географические координаты, а затем выполнить другой вызов Google API.

В идеале я бы хотел иметь возможность идти в любом направлении на любое расстояние и получать географические координаты.С чего начать?Если это невозможно, пожалуйста, дайте мне знать.

Я ничего не получаю.Пожалуйста, посмотрите.Как именно я использую направление.Как мне идти на север?

$lat = "40.712714";
$lon = "-74.005997";
$direction = "80";
$length="2000";

 move($lon, $lat, $direction, $length);


function move($cx,$cy,$direction,$length){
    $x=$cx*cos($direction*M_PI/180)+$length;
    $y=$cy*sin($direction*M_PI/180)+$length;
    return array($x,$y);
    echo $x;
    echo $y;
    }

РЕДАКТИРОВАТЬ Я только что попытался изменить номер координат вручную, и, кажется, делает то, что я хочу.Например, я взял эти координаты

40.717828, -73.998672

и изменил третье десятичное число.Это переместило мое местоположение на север.

40.710828, -73.998672

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

Итак, я провел небольшое расследование.Это исправленный код для этой функции:

function move($ylat,$xlng,$direction_degree,$length_degree){
    $x=$xlng+$length_degree*cos($direction_degree*M_PI/180);
    $y=$ylat+$length_degree*sin($direction_degree*M_PI/180);
    return array($x,$y);
}

var_dump(move(52.1,11.2,0,1)); //North 1 degree.

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

Направление в градусах, 0 севернее, 90 восточнее, 180 южнее, 270 западнее.наконец.К тому времени вы просто делаете расстояние между старыми и новыми координатами (например, loceo.se / doc / distance )
0 голосов
/ 10 сентября 2011

Цитата из этой статьи в википедии Статья в WCS GCS :

На сфероиде GRS80 или WGS84 на уровне моря на экваторе один вторая широта составляет 30,715 метра, одна широтная минута равна 1843 метра и один широтный градус составляет 110,6 километра. круги долготы, меридианы, встречаются на географических полюсах, с западно-восточная ширина секунды, естественно уменьшающаяся как широта увеличивается. На экваторе на уровне моря одна продольная секунда измеряет 30,92 метра, продольная минута составляет 1855 метров и продольный градус - 111,3 километра. При 30 ° продольной секунды 26,76 метра, в Гринвиче (51 ° 28 '38 "с.ш.) 19,22 метра и при 60 ° это 15,42 метра.

...