PHP / Google Maps - Геозона - PullRequest
       24

PHP / Google Maps - Геозона

3 голосов
/ 25 февраля 2012

Я пытаюсь создать простой трекер, используя карты php и google. Прямо сейчас у меня работает трекер, но я хочу, чтобы он обнаруживал близость к определенным маркерам. Например, если пользователь находится в пределах 30 м от моего «дома» (маркер), сценарий обновит свой статус, сказав, что он находится в «том-же доме». Я хотел бы, чтобы это было достижимо в PHP. Будет ли лучший способ определить длину / широту каждого маркера и создать вокруг него простой периметр, а затем определить, находятся ли пользователи в длинных и латах в пределах этого периметра. Есть ли примеры этого, на которых я мог бы поработать, или математические уравнения.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

Используемое решение -

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.
}

Я использовал формулу Хаверсина, которую нашел в другом посте.

2 голосов
/ 26 февраля 2012

Формула Haversine - это то, что вы ищете. статья о Google Code , в которой описывается, как использовать ее с MySQL и PHP.

...