2010-06-01 4 views
5

POI로 식별 된 데이터베이스의 좌표 목록이 있습니다. 도시는 100 레코드 이상일 수 있습니다.전화가 위치 집합에 도달하면 무엇인가합니까?

전화가 위치 중 하나의 150 미터 범위에서 수신되면 알림을 받고 싶습니다. 위치 좌표 역시 오차/반경이 있으며 대개 10 ~ 100 미터입니다. 트리거를 위해 각 위치를 추가하는 것이 좋지 않으므로 (수 백 가지가 될 수 있음) 어떻게 깨우는 코드를 최적화 할 수 있습니까?

또한 큐에서 이전에 설정 한 알림을 제거 할 수있는 옵션이 있습니까?

답변

2

고유 한 해시를 계산하는 좌표를 사용하여 일종의 지능형 해시 테이블에 POI를 저장할 수 있습니다. 위치 업데이트가 도착할 때마다 해시 테이블을 검색하여 현재 위치 근처에 POI가 있는지 확인합니다. 이 조회는 해시 - 검색이므로 O (1) 만 사용해야합니다.

해시를 계산하고 POI를 저장할 때 원하는 범위를 고려해야합니다.

그냥 아이디어!

종류와 관련, mefiX

GPS 위치 또는 사용 가능한 와이파이 네트워크 또는 세포 스테이션 ID를 기반으로 다양한 이벤트를 전환 할 수 있습니다 로케일라는 앱 등

그것은 또한 플러그인 인터페이스를 가지고 거기

+0

Android에서 알고있는 것처럼 설정 알림 트리거는 '전화가 x, y로 도착하면 나를 윙윙 거려'라고 말합니다. 이미 좌표를 말합니다. 내 모든 pois에 대한 알림을 설정할 수 있지만 수백 개의 레코드에서 제대로 작동하지 않을 수 있습니다. 위치 업데이트를 듣는 것은 배터리 소모 과정 일 수 있으므로 앱이 실행되어야합니다. – Pentium10

+0

Android SDK에는 정확한 목적으로 사용할 수있는 'addProximityAlert' 메소드가 있습니다. – Pentium10

0

. 해당 응용 프로그램을 검사하고 해당 응용 프로그램에 대한 플러그인을 작성하는 것이 유용 할 수 있습니다.

+0

로케일의 존재에 대해 알고 있습니다. 저는 다른 목적으로 아주 비슷한 것을하고 싶습니다. 로케일의 플러그인 SDK는 사용할 수 없습니다. – Pentium10

0

이 문제는 비디오 게임에서 그래픽을 생각 나게합니다. 운동 범위 밖에있는 지점을로드 할 필요가 없습니다. 나는지도를 그리드로 분해하고, 8 개의 인접한 그리드 블록에 대한 트리거를 설정 한 다음, 현재 그리드 블록 내의 각각의 POI에 대해 트리거를 설정합니다. 새 그리드 블록에 도달하면 트리거가 업데이트됩니다. 오류 범위를 고려하여 그리드 블록을 겹치는 것이 현명 할 것입니다.

관련 문제