2010-02-16 4 views
1

실제 주소와 지오 코드가있는 상점이 약 60 개 있습니다. 나는 사용자가 우편 번호, 도시 및 주 또는 거리 주소를 입력 할 수 있고 입력 된 주소에 근접한 순서로 목록 정렬을 할 수있는 간단한 인터페이스를 만들고 싶습니다. 내가 아는 바로는 이것은 웹 사이트의 매우 일반적인 특징입니다.위치별로 상점 찾기

Google지도 API를 사용하여 입력 한 위치의 지오 코드를 찾고 Pythagorean Theorem을 사용하여 각 위치로부터 거리를 계산하고 거리별로 목록을 정렬 한 다음 결과를 반환합니다 (또는 어쩌면). 결과 집합의 상위 5 개 ...).

올바른 방법입니까? 이 작업을 수행하는 데있어 Google Maps API에 내장 된 최적의 방법이나 기능이 있습니까? 이것은 매우 일반적인 것이기 때문에 여러 가지 방법으로 시도하고 테스트 한 결과 아마 여러 가지 정답이있을 것이라고 생각합니다. 나는 이것이 올바른 방향으로 나아가고 있다면 몇 가지 조언을 찾고 있습니다.

감사합니다.

답변

2

피타고라스 정리가 충분하지 않습니다. 지구의 커브가 그렇게 만듭니다. 유클리드 기하학이 약간 필요합니다. formula 간단한 지구상의 두 점 사이의 거리를 찾기위한 구현 - 조류 파리로가 아닌 실제 이동 거리 - (PHP에서)입니다 :

// pass the latitudes and longitudes in as degrees 
function getDistance($lat1,$long1,$lat2,$long2) 
{ 
    $r = 3963.1; //3963.1 statute miles; 3443.9 nautical miles; 6378 km 
    $pi = pi(); 

    // convert the degrees to radians 
    $lat1 = $lat1*($pi/180); 
    $lat2 = $lat2*($pi/180); 
    $long1 = $long1*($pi/180); 
    $long2 = $long2*($pi/180); 

    $ret = (acos(cos($lat1)*cos($long1)*cos($lat2)*cos($long2) + cos($lat1)*sin($long1)*cos($lat2)*sin($long2) + sin($lat1)*sin($lat2)) * $r) ; 
    return $ret; 
} 

당신은 당신의 코드에서이 버전을 통합 할 수 있습니다. 또한 여기에는 MySQL에 사용 된 또 다른 함수를 파생시킨 가능한 (테스트되지 않은) 함수가 있습니다.

DELIMITER $$ 

DROP FUNCTION IF EXISTS `FindDist` $$ 
CREATE FUNCTION `FindDist` (lt1 DOUBLE,lg1 DOUBLE,lt2 DOUBLE,lg2 DOUBLE) RETURNS DOUBLE 
DETERMINISTIC 
BEGIN 
    DECLARE dist,eradius DOUBLE; 

    SET eradius=3963.1; 
    SET dist=Acos(Cos(lt1) * Cos(lg1) * Cos(lt2) * Cos(lg2) + Cos(lt1) * Sin(lg1) * Cos(lt2) * Sin(lg2) + Sin(lt1) * Sin(lt2)) * eradius; 
    RETURN dist; 
END $$ 

DELIMITER ; 
1

비슷한 것을 연구했을 때이 링크를 발견했습니다. .NET을 사용하지만 원칙은 모든 언어/프레임 워크에 적용됩니다.

Store Locator: Help customers find you with Google Maps

솔루션의 핵심은 위도와 경도로 지정된 두 점 사이의 거리를 찾기 위해 Haversine Formul 사용 a된다. 여기에 위의 문서에 연결이 공식의 C#을 구현있다 : Distance between locations using latitude and longitude (CodeProject)

좀 더 주위에 응원을 밝혀 :

Calculate Distance Between Two Points on a Globe in 9 Different Languages

관련 문제