2011-01-17 4 views
1

I이 방법 maded 좌표 (위도 및 경도)의 배열을 가지고 루프경도/위도 점의 하위 집합을 표시 하시겠습니까?

[0] = "45.,9.12345" 
[1] = "46.11111,9.12345" 
[2] = "47.22222,9.98765" 
[...] etc 

(UTM의 X 좌표/UTM의 Y 좌표) m 이들 좌표를 변환하고 그 후 I 화소 이러한 좌표 변환 (X/Y) 화면 (출력 장치는 iPhone)을 사용하여 사용자 정의지도에 경로 선을 그립니다.

[0] = "512335.00000,502333.666666" 
[...] etc 

돌아 오는 픽셀은 화면에 선을 그리는 방법 (경로 계산 시뮬레이션)으로 전달됩니다. 바와 같이 (위도/경도)를 좌표

[0] = "20,30" 
[1] = "21,31" 
[2] = "25,40" 
[...] etc 

내가 바인딩지도 (화면에지도의 보이는 부분)을 작성하지 않는 값을 제거 위도/경도 배열을 절단 할 필요가 너무 많습니다.
지도 경계는 위도/경도, 좌상단 및 우하 중 두 쌍의 좌표입니다.

이제이 배열을 루프 처리 (정렬되지 않음)하고 값이 경계에 있는지 여부를 확인하고 바깥에있는 값을 제거한 후 가장 좋은 방법은 무엇입니까?
화면에 보이는 좌표 만 포함 된 깨끗한 배열을 반환 하시겠습니까?

참고 : coords 배열은 매우 큰 배열입니다. 4000/5000 몇 가지 항목.
이 방법은 끌기 또는 확대/축소 할 때마다 반복해야하는 방법입니다.

이 배열에서 검색 및 컨트롤을 최적화하려면 어떻게해야합니까?

+2

이것은 주관적인 답변이 아니라 상당히 구체적인 기술 답변을 가지고 있습니다. 이 방법을 SO로 마이그레이션하는 것이 좋습니다. –

+0

@Gary : 게시물을 * SO *로 마이그레이션 할 수 있습니까? (다른 방법으로 만 본 적이 있습니다)? – FrustratedWithFormsDesigner

+1

예, 게시물을 SO로 마이그레이션 할 수 있습니다. 그리고 그것이 바로이 곳이 끝날 곳입니다. – Walter

답변

2

나는 몇 단계로이 문제를 깨는 게 좋을 것 :

  1. 새 좌표계에 미터의 쌍에 각 위도/경도 쌍을 변환합니다.
  2. 집합의 모든 점을 포함하는 kd- 트리 데이터 구조를 만듭니다. 이를 통해 주어진 직사각형 범위에있는 점을 효율적으로 쿼리 할 수 ​​있습니다.
  3. 뷰포트가 변경 될 때마다 해당 사각형에 표시 될 kd 트리의 모든 점을 찾습니다.
  4. 점을 표시하려면 표시 할 점 집합을 반복하고 각 점을 표시하십시오.
관련 문제