2009-05-12 2 views
2

"가장 가까운 위치"로 정렬 된 드롭 다운 목록을 iPhone에 표시하는 쉬운 방법이 있습니까?표시 방법 iPhone에서 Objective C의 GPS 위치에 따라 정렬 된 드롭 다운 정보

e.e. GPS 위치가있는 도시 목록이있는 경우 가장 가까운 도시 순서로 도시 선택을 신속하게 정렬 할 수 있습니까?

빠른가요? 또는 백그라운드에서 미리 선택해야합니다 (드롭 다운을 선택하기 전에)?

답변

2

당신은 위치의 배열에 sortedArrayUsing ... 메시지 중 하나를 사용하여 배열을 정렬 할 수 있습니다.

각 위치가 CLLocation을 사용하여 표시된다고 가정하면 CLLocation의 'getDistanceFrom :'을 현재 위치를 인수로 사용하여 정렬 할 수 있습니다.

1

가능한 경우 백그라운드에서 수행하려는 것처럼 보입니다. 결국, 대다수의 시간은 똑같은 순서로 진행될 것입니다. (도시가 정말로 가까이에 있지 않고, 많이 여행한다면, 나는 생각합니다).

표시 시간에 정렬해야하는 경우 시간이 없어도 몇 천 개까지 정렬 할 수 있습니다. 많은 응용 분야에서 위도 경도를 직각 좌표로 처리하면 아마도 충분할 것입니다. 실제 거리를 계산하는 것이 그리 어려운 것은 아니지만, 정렬보다 몇 배 더 많은 계산이 필요합니다.

아, 그리고 당신이있는 NSArray에 데이터 포인트를 가지고 있다면, sortedArrayUsingSelector보고 : 및 sortedArrayUsingFunction : 문맥 :

+0

더 구체적으로 말하면 실제로 내가 카지노에 어떤 정보가 있는지 알려주고 싶습니다. 라스베가스의 어느 도시가 어느 백화점에서 바뀔 수 있는지는 알 수 없습니다. –

+0

오, 알겠습니다. 이 경우 목록을 더 자주 정렬하려고합니다. 사람들이 실행을 떠나거나 시작 및 중지 할 응용 프로그램인지 여부에 따라 시작시 정렬을 업데이트하는 것이 좋습니다. –

+0

아, 그리고 거리가 100 마일 미만이고 기둥 가까이에 있지 않으면 위도를 치료하십시오. 그리고 Long. 직각 좌표는 확실히 괜찮습니다. –

1

당신이 당신의 데이터베이스에있는 도시의 수에 따라 달라집니다. 그것이 많은 경우 미리 계산 된 '영역'을 사용하거나 '크기 X 이상의 도시'로 검색을 제한하는 것과 같이 검색 범위를 제한하기 위해 미리 잘라내는 기술을 사용할 수 있습니다. 도시는 이동하지 않으므로 인구와 크기가 갑자기 변하지 않는다면 가능한 한 많은 사전 계산을 어떻게 할 수 있는지 생각해보십시오.

또 다른 일반적인 기술은 한 도시에서 가까운 거리에 별도의 '주변'테이블을 갖는 것입니다. 따라서 현재 위치에 가까운 도시를 찾고 에 가장 가까운 도시를 표시하면 도시 일뿐입니다.

에뮬레이션 할 가치가있는 또 다른 트릭은 정보를 필요에 따라 가져 오는 UITableView의 또 다른 트릭입니다. 따라서 주어진 시간에 계산할 필요가있는 셀의 수가 표시됩니다. 따라서 근처의 모든 도시에서 데이터를 가져 오는 대신 첫 번째 화면에 표시되는보기를 5-6으로 제한하고 스크롤을 허용하려면 사용자가 위아래로 탐색 할 때 나머지를 가져 오십시오.

관련 메모에

, 여기 geopoints 사이의 거리를 계산하기위한 공식의 목록은 다음과 같습니다 http://www.movable-type.co.uk/scripts/latlong.html

+0

CLLocation은 거리 계산을 지원합니다. –

관련 문제