2012-10-22 5 views
0

사용자 근처에있는 결과를 쿼리하는 webapp가 있습니다. 앱이 작동하는 방식으로 인해 사용자는 4 점으로 둘러싸인 사각형에 위치합니다.이 지점은 왼쪽 하단에 2 개, 오른쪽 상단에 2 개가 있습니다. latsw, latne, longsw, longne. 사각형의 가운데에 사용자를 유지하면서 "사각형"의 크기를 늘려야합니다. 나는 같은 기본적인 것들에 노력했습니다 :GPS 좌표로 경계가 지정된 영역의 크기를 늘립니다.

$latsw= $latsw - $increasing_factor; 
$latne= $latne + $increasing_factor; 
$longsw=$longsw - $increasing_factor; 
$longne=$longne + $increasing_factor; 

$latsw= $latsw/$increasing_factor; 
$latne= $latne * $increasing_factor; 
$longsw=$longsw/$increasing_factor; 
$longne=$longne * $increasing_factor; 

하지만 결과는 나에게 이동 지역 또는 다른 이상한 행동을주고있다. GPS 좌표계가 실제로 2D 평면에서 선형으로 동작하지 않기 때문입니다. 상대적으로 단순하게 유지하면서 이와 같은 일을 할 수있는 아이디어가 있습니까?

+0

이제이 문제에 대해 생각해 보았습니다.이 질문에는 코딩 자체가별로 없기 때문에 누군가 다른 사이트에 있어야한다고 생각하면 알려주세요. – leonsas

답변

1

당신은 같은 것을 시도 할 수 :

당신은 같은 중심 위도/경도를 유지하려면를, 그래서 ( 두 경도와 두 개의 위도 당신은 이미 평균하여) 첫 번째를 계산 :

center_long = (ne_long + sw_long)/2 
center_lat = (ne_lat + sw_lat)/2 

그런 다음 경계 상자의 크기를 두 경도의 차이와 두 위도로 계산하여 delta_long, delta_lat을 얻습니다.

delta_long = ne_long - sw_long 
delta_lat = ne_lat - sw_lat 

(가령 50 % 증가 1.5) 일부 인자로 곱하여 delta_long 및 delta_lat 조정 :

new_corner_long = center_long +/- new_delta_long 
new_corner_lat = center_lat +/- new_delta_lat 

만큼 :

new_delta_long = delta_long * increasing_factor 
new_delta_lat = delta_lat * increasing_factor 

마지막 새로운 경계 지점을 계산할 적도 또는 자오선과 너무 가깝거나 (범위/부호 문제를 피하기 위해) 또는 너무 큰 경계 상자를 사용하지 않으면 (2-d 평면 동작과 어색한 편차를 피하기 위해) 당신이 찾고있는 것의 야구장에 들어가십시오.

관련 문제