2013-02-02 1 views
3

2000 개 이상의 장소가있는 KML 파일이 있지만 모든 장소를로드하는 데 5 분 이상 소요됩니다. 이제 내 질문은 주변 장소에서 약 5 마일 떨어진 곳에서만지도를로드 할 수 있는지 여부와 모든 장소를 사용하려면 클릭해야 할 때 사용할 수 있도록 사용자를위한 버튼을 추가 할 수 있는지 여부입니다.xcode KML 뷰어는지도에 약 5miles 만 표시합니다.

당신은 CLLocation 당신의 currentLocation 개체 및 특정 KML 위치 표시의 placemarkLocation을 만들어야합니다 사전

답변

1

주셔서 감사합니다 내가 취미 프로그래머이고 해결책을 찾기 그나마 좀 도와하고 어떻게 볼 distanceFromLocation를 사용하십시오 멀리 그들은 (미터로) 있습니다.

CLLocation *placemarkLocation = [[CLLocation alloc] initWithLatitude:latitude 
                  longitude:longitude]; 

if ([placemarkLocation distanceFromLocation:currentLocation] < 8046.72) 
{ 
    // add placemark to map 
} 
else 
{ 
    // don't 
} 

나는 두 추적 관찰이 :

  1. 당신은로드 프로세스가 복용하고 있다고 말했다 그리고 마일 당 1,609.34 미터가 주어진 다섯 마일 그러므로 8,046.72 미터 5 분. 나는 그것이 매우 의심스럽고 당신이 뭔가 다른 일이 있는지 궁금해합니다. 나는 단지 웃음 소리와 웃음 소리 때문에지도에 2000 개의 주석을 추가했으며 몇 분이 아닌 몇 초가 걸렸습니다. 문제가 XML 구문 분석이나 다른 것 인 경우지도 생성을 최적화 할 필요가 없기 때문에 지연 소스를 식별하기 위해 진단을 수행하는 것이 좋습니다. 실제로 지연의 원인을 확인하기위한 진단 작업을 수행하십시오.

    예를 들어, 인터넷을 통해 수십 또는 수백 메가 바이트로 측정되는 거대한 KML 파일을 다운로드하는 경우, MKMapView의 최적화는 전반적인 성능에 거의 영향을 미치지 않습니다. 이것은 단지 임의의 예이지만 문제의 원인을 확실히 이해하고 있는지 확인하십시오.

  2. iPhone5의 MKMapView에 2000 개의 주석을 추가하는 데 몇 초가 걸렸지 만, 분명히 훌륭한 UX는 아닙니다 (몇 초 지연의 관점 에서뿐만 아니라 2,000 개의 주석을 가질 수 없다는 생각은 분명히 없습니다. iPhone 화면에서 시각적으로 차별화). 5 마일 이내에있는 위치 표시를 잡으라고 제안하고 대안을 선택할 수있는 옵션을 사용자에게 제공했습니다. 나는, 당신은 MKMapView에 대한 region 또는 visibleMapRect 보는 것이 좋을 것이 "5 마일 모두"논리를 코딩보다

    오히려 및 내 가을 주석을 보여 나는, 나는 다른 방법을 건의 할 것입니다 수 해당 지역 또는 MKMapRect. 또는이 지역에 속하는 특수 효과를 100 개만 표시하면됩니다. 그리고이를 이것을 일상적으로 regionDidChangeAnimated 루틴에 넣었다면, 새로운 주석이 필요할 것입니다.

+0

대단히 감사드립니다. – nerkom

관련 문제