[MapKit] MKMap Snapshorter를 통해 맵의 스냅샷을 획득합니다.
이것은 무엇이냐
iOS 7에 추가된 MKMapSnapshotter
를 사용하여 지도 캡처(이미지)를 획득하는 방법을 기록합니다.
스냅샷을 가져오는 이유
사용자가 지도를 조작할 필요가 없는 상황에서 정지화로 표시하면 부하를 억제할 수 있다.
특히 UITableView
의 셀에 여러 지도가 표시된 경우 효과를 발휘한다.
운영 환경
사용자가 지도를 조작할 필요가 없는 상황에서 정지화로 표시하면 부하를 억제할 수 있다.
특히
UITableView
의 셀에 여러 지도가 표시된 경우 효과를 발휘한다.운영 환경
설치 방법
우선 아래의 샘플 코드를 실행해 보세요.let coordinate = CLLocationCoordinate2DMake(37.331652997806785, -122.03072304117417)
let span = MKCoordinateSpanMake(0.003, 0.003)
let options = MKMapSnapshotOptions()
options.size = CGSize(width: 300, height: 300)
options.region = MKCoordinateRegion(center: coordinate, span: span)
options.scale = UIScreen.main.scale
options.mapType = .standard
let snapshotter = MKMapSnapshotter(options: options)
snapshotter.start(completionHandler: {(snapshot, error) in
let image = snapshot?.image
})
실행 결과
image
에 다음 이미지가 설정되어 있습니다.
다음은 원본 코드의 내용을 설명한다.
해설
먼저 지도의 중심점(위도와 경도)과 표시할 범위를 설정합니다.let coordinate = CLLocationCoordinate2DMake(37.331652997806785, -122.03072304117417)
let span = MKCoordinateSpanMake(0.003, 0.003)
그리고 MKMapSnapshotOptions
를 사용하여 캡처의 크기, 해상도, 지도 유형(항공사진 등)을 설정합니다.let options = MKMapSnapshotOptions()
options.size = CGSize(width: 300, height: 300)
options.region = MKCoordinateRegion(center: coordinate, span: span)
options.scale = UIScreen.main.scale
options.mapType = .standard
마지막으로 MKMapSnapshotter
start()
방법을 실행하여 캡처를 비동기적으로 가져옵니다.let snapshotter = MKMapSnapshotter(options: options)
snapshotter.start(completionHandler: {(snapshot, error) in
let image = snapshot?.image
})
보태다
MKMapSnapshotOptions
의showsBuildings
속성에 따라 지도상의 건축물과 POI의 표시와 숨김을 전환할 수 있습니다.
▲ 어떤 내용도 표시하지 않는 예시
링크
let coordinate = CLLocationCoordinate2DMake(37.331652997806785, -122.03072304117417)
let span = MKCoordinateSpanMake(0.003, 0.003)
let options = MKMapSnapshotOptions()
options.size = CGSize(width: 300, height: 300)
options.region = MKCoordinateRegion(center: coordinate, span: span)
options.scale = UIScreen.main.scale
options.mapType = .standard
let snapshotter = MKMapSnapshotter(options: options)
snapshotter.start(completionHandler: {(snapshot, error) in
let image = snapshot?.image
})
let coordinate = CLLocationCoordinate2DMake(37.331652997806785, -122.03072304117417)
let span = MKCoordinateSpanMake(0.003, 0.003)
let options = MKMapSnapshotOptions()
options.size = CGSize(width: 300, height: 300)
options.region = MKCoordinateRegion(center: coordinate, span: span)
options.scale = UIScreen.main.scale
options.mapType = .standard
let snapshotter = MKMapSnapshotter(options: options)
snapshotter.start(completionHandler: {(snapshot, error) in
let image = snapshot?.image
})
Swift 3 Add custom annotation pin to MKMapSnapShotter snapshot - Stack Overflow-
showsPointsOfInterest
에 나온 핀도 스냅숏에 수납하고 싶을 때 이 Q&A를 참고하세요.Reference
이 문제에 관하여([MapKit] MKMap Snapshorter를 통해 맵의 스냅샷을 획득합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koogawa/items/e39a62aa9dbd323ce52a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)