2011-08-13 1 views
1

위치 인식 응용 프로그램을 만들고 있습니다. 위도와 경도 좌표가있는 다른 점포의 정보가 들어있는 서버에 XML 파일이 있습니다. 이제 응용 프로그램에서 현재 위도와 경도 좌표를 가져올 수 있으며 XML 파일도 구문 분석 할 수 있습니다.위치 인식 XML 파일의 문제점

그러나 XML 파일의 현재 좌표에 따라 가장 가까운 저장소를 어떻게 알아낼 수 있습니까?

google Api를 사용하면 검색어에 따라 가장 가까운 위치가 포함 된 xml 파일이 반환됩니다. 하지만 여기에 제 경우에는 서버에서 xml 파일을 사용하고 있습니다.

이이 땅에 두 점 사이의 거리를 계산하는 하버 사인 식이다

답변

3

사용자가 위도/경도 점을 제출하고 올바른 항목을 반환 할 수 있도록 데이터를 DB 형식 (sqlite/mysql)으로 변환하는 것이 더 좋을 것이라고 생각합니다. 그렇지 않으면 매번 파일 전체를 구문 분석하고 비교할 수 있지만 여전히 수식을 사용할 수 있습니다 (앱 내에서 비교 단계를 DB 쿼리로 이동하는 것).

편집 :이 예는 haversine을 구현하고 x 결과를 반환하는 SQL 쿼리 : MySQL Great Circle Distance (Haversine formula)

+1

+1은 트래픽을 최소화하고 기기에서 작업을 최소화합니다. 생각하지 않았어 :) – SideSwipe

+0

그래서 위도와 경도를 SQL 서버 데이터베이스에 보내야한다고 생각합니다. 계산은 서버 측에서 수행되어야합니까? – Mann

+0

하나 더 질문이 생깁니다. SQL Server와 응용 프로그램을 연결하는 것이 안전할까요? 어떻게 안전하게 연결할 수 있습니까? – Mann

2

제안하십시오 :

a = sin²(Δlat/2) + cos(lat1)*cos(lat2)*sin²(Δlong/2); 
c = 2*atan2(√a, √(1−a)); 
d = R*c; 

당신은 쉽게 OBJ-C에서 그것을 적용 할 수 있습니다.

참고 : R은 지구의 반지름 = 6,371km;

그래서 두 점의 위도와 경도의 차이를 계산하고이를 바탕으로 d를 계산하십시오.

희망이 도움이됩니다.

+0

이 작업을 모든 상점에서 수행 한 다음 가장 작은 d를 확인하십시오. – SideSwipe

+0

감사드립니다. 조금 설명해 주시겠습니까? 내가 2 개의 좌표를 가질 것 같이. 위도, 현재 위치 및 위도와 경도가 긴 점포 수식이 어떻게 구현 되나요? – Mann

+0

여기에 일부 C 코드가 있습니다. http://www.jaimerios.com/?p=39 그냥 두 번째 C 함수를 실행합니다 (사용자의 좌표와 각 상점의 좌표로 obj-c로 "변환"하고 객체의 거리를 nsdictionary에있는 상점 키에 저장 한 다음 어떤 상점이 가장 작은 거리인지 확인하십시오. – SideSwipe