2013-04-27 3 views
0

MySQL 원격 서버의 DB에 300 개의 긴 숫자가 저장되어 있습니다. 원격으로 내 DB에 오래, 내 휴대 전화와 위도에서 현재 위도와 경도의 차이를 계산하고 싶습니다. O안드로이드의 위도와 경도

이것을 달성하는 가장 좋은 방법은 무엇입니까?

나는 휴대 전화에서 현재 위도와 경도를 보내고 계산을하고 그 차이를 되돌려 보내고 있다고 생각하고 있었습니까?

더 좋은 방법이 있습니까?

감사합니다.

+2

위치 수가 제한되어있는 경우 응용 프로그램이 다시 시작될 때 로컬 메모리에 해시/캐시합니다. 그렇지 않으면 전화가 lon-lat 인 서버를 호출하고 서버가 반환하도록 웹 서비스를 작성하십시오 거리. – alfasin

답변

1

300 데이터 포인트가 많지 않습니다. 50,000 이상의 앱이 있는데 문제가되지 않습니다.

원격 서버의 데이터베이스를 전화기 (또는 어쨌든 열의 하위 집합)로 보냅니다. 내 자신의 응용 프로그램에서

, 내가 효율적으로 해싱

sector = (lat+90)*360 + (lon+180); 

와 부문과 할당 된 섹터 번호 ° 1 ° X1로 세계를 나누었다. 해시 코드는 데이터베이스의 일부입니다.

그러면 근처의 데이터 포인트를 찾고 싶을 때 현재 위도와 경도의 섹터 번호와 인접한 8 개의 섹터를 계산합니다. 그런 다음 데이터베이스 검색을 9 개 섹터로 제한합니다.

그런 다음 해당 섹터의 데이터 포인트를 데이터베이스에 쿼리하고 현재 위치와 데이터 포인트 사이의 거리를 계산하면됩니다.

휴대 전화에 데이터베이스를 다운로드하는 데 일회성 비용이 있지만 나중에 상당한 시간과 대역폭을 절약 할 수 있습니다.