2013-06-21 1 views
3

ios 응용 프로그램에서 google maps sdk를 사용하고 있습니다. 여기서 mapview에 마커 배열을 추가하고 있습니다. 지도 뷰에 추가 할 마커가 너무 많아서 마커를지도에로드하는 동안 UI가 차단됩니다. UI를 차단하지 않는 마커를지도에 추가하는 다른 방법이 있습니까? 이것이 맵보기에 마커를 추가하는 방법입니다.ios google mapview에서 마커를로드하는 시간을 줄이는 방법은 무엇입니까?

위의 코드 집합은 for 루프를 사용하여 반복되고 마커가 만들어져 맵에 추가됩니다.

감사합니다.

+0

말을 내 아이폰에서 작동하지만 충돌 시뮬레이터에서 찾을 희망 Google지도. –

+1

mapview는 'thread safe'가 아니므로 아이콘이 bg 스레드에로드 될 수 있지만 마커는 거기에 추가 할 수 없습니다. –

답변

1

장소 마커 시리즈의 전체 설정을 넣습니다 (내 경우에는 for 루프에서 수행). 다른 스레드에서 블록을 실행하면 뷰가 먼저 이동하고 for 루프를 포함하는보기 설정을 표시하고 표시합니다. 지도의 각 마커는 다시 메인 스레드에 표시됩니다. 이 도움말이 =]

버전 1

dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)) { 

     dispatch_async(dispatch_get_main_queue()) { 
      for markers { 
      let placeMarker = PlaceMarker() 
       placeMarker.map = self.mapView 
      } 
     } 
    } 

버전 2, 나는이 방법은 1000 개 마커는 스트레칭에 추가 된 예를 들어

dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)) { 
     for markers { 
      let placeMarker = PlaceMarker() 
     dispatch_async(dispatch_get_main_queue()) { 

       placeMarker.map = self.mapView 
      } 
     } 
    } 
관련 문제