2012-02-25 3 views
3

PHP 및 Google지도를 사용하여 간단한 추적 프로그램을 만들려고합니다. 지금은 트래커가 작동하지만 특정 마커의 근접성을 감지하고 싶습니다. 예를 들어 사용자가 내 "집"(마커)에서 30m 이내 인 경우 스크립트는 상태가 "너무 그렇습니다"라고 말합니다. 나는 이것을 PHP에서 달성하고자한다. 가장 좋은 방법은 각 마커의 긴/위도를 감지하고 그 주위에 간단한 경계를 작성한 다음 사용자가 해당 경계 내에서 길고 위도가 낮은지 여부를 감지하는 것입니다. 내가 수학이나 수학 방정식에서 일할 수있는 주변의 예가 있습니까?PHP/Google지도 - Geofence

+0

질문에 답변을 쓰거나 제목에 [해결됨]을 사용하지 마십시오. 답을 직접 알아 낸 경우 아래의 답안 상자에 게시하십시오. 당신이 rep <100 이상의 새로운 사용자이기 때문에, 당신은 7 시간 내에 그것을 할 수있을 것입니다. – abcd

+0

@Keiran Lovett 어떤 데이터베이스를 사용하고 있습니까? postgresql을 사용할 수 있습니까? –

+0

요다를 지적 해 주셔서 고맙습니다! –

답변

2

Haversine 공식이 당신이 찾고있는 것입니다. MySQL과 PHP에서 사용하는 방법을 설명하는 an article on Google Code이 있습니다. 사용

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

는 내가 다른 게시물에있는 하버 사인 공식을 사용했다.