0

下面是我想翻译成 PHP 的公式(大圆算法)。如果有人能帮助我,我将不胜感激?

输入是不同的坐标集,例如:

Place 1 Lat: 59.389057
Place 1 Long: 17.937422

Place 2 Lat: 59.388914
Place 2 Long: 17.920441

想要的输出是地点 1 和地点 2 之间的距离。

distance = ((115.1666667 * (lat2-lat1)) ^ 2 + (115.1666667 * (lng2 - lng1) * cos(lat2 / 57.3)) ^ 2) ^ .5

我的尝试:

$distance = pow(((115.1666667 * ($lat2 - $lat1)), 2) + (115.1666667 * pow(($lng2 - $lng1) * cos($lat2 / 57.3)), 2)), 0.5)
4

2 回答 2

3

正如 DCoder 在评论中所写,临时变量使事情更容易阅读:

$latD = (691 / 6) * ($lat2 - $lat1);
$lngD = (691 / 6) * ($lng2 - $lng1) * cos($lat2 / 57.3);

$distance = sqrt( $latD * $latD + $lngD * $lngD );

codepad.org 上的演示

于 2012-12-30T16:04:31.653 回答
1

这是更正后的代码:

$distance = pow((pow((115.1666667 * ($lat2 - $lat1)), 2) + pow((115.1666667 * ($lng2 - $lng1) * cos($lat2 / 57.3)), 2)), 0.5);
于 2012-12-30T15:30:09.797 回答