3

我正在尝试使用 php 和谷歌地图创建一个简单的跟踪器。现在我有跟踪器工作,但我希望它检测到某些标记的接近度。例如,如果用户在我的“房子”(一个标记)的 30m 范围内,脚本将更新它的状态,说它在“某某的房子”。我希望这可以在 PHP 中实现。最好的方法是检测每个标记的经度/纬度并在其周围创建一个简单的周边,然后检测用户的经度和纬度是否位于该周边内。周围有没有我可以使用的例子或数学方程。

4

2 回答 2

2

使用的解决方案 -

function calc_distance($point1, $point2)
{
    $radius      = 3958;      // Earth's radius (miles)
    $deg_per_rad = 57.29578;  // Number of degrees/radian (for conversion)

    $distance = ($radius * pi() * sqrt(
                ($point1['lat'] - $point2['lat'])
                * ($point1['lat'] - $point2['lat'])
                + cos($point1['lat'] / $deg_per_rad)  // Convert these to
                * cos($point2['lat'] / $deg_per_rad)  // radians for cos()
                * ($point1['long'] - $point2['long'])
                * ($point1['long'] - $point2['long'])
        ) / 180);

    return $distance;  // Returned using the units used for $radius.
}

我使用了在另一篇文章中找到的 Haversine 公式。

于 2012-02-26T14:11:51.317 回答
2

Haversine 公式正是您要寻找的。有一篇关于 Google Code 的文章描述了如何将它与 MySQL 和 PHP 一起使用。

于 2012-02-26T05:37:29.607 回答