MKMapSnapshotter の startWithCompletionHandler メソッドでマップ ビューのスナップショットを取得しようとしています。カスタム ピン注釈ビューをスナップ ショットに追加したいと考えています。カスタム注釈ビューにラベルがあります。そのため、スナップショットを取得しているときにそのラベルを表示できません。コードは次のとおりです。
let snapshotter = MKMapSnapshotter(options: options)
snapshotter.startWithCompletionHandler() {
snapshot, error in
if error != nil {
completion(image: nil, error: error)
return
}
let image = snapshot.image
let pin = MKPinAnnotationView(annotation: nil, reuseIdentifier: "") // I want to use custom annotation view instead of MKPinAnnotationView
let pinImage = UIImage(named: "pinImage")
UIGraphicsBeginImageContextWithOptions(image.size, true, image.scale);
image.drawAtPoint(CGPointMake(0, 0))
var homePoint = snapshot.pointForCoordinate(coordinates[0])
pinImage!.drawAtPoint(homePoint)
pinImage!.drawAtPoint(snapshot.pointForCoordinate(coordinates[1]))
let finalImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
completion(image: finalImage, error: nil)
}
ご覧のとおり、drawAtPoint は UIImage の関数です。UIImageView を使用しようとしてから、サブビューとして imageView にラベルを追加しますが、imageView で drawAtPoint を使用できないため、mapView スナップショットにラベルを追加できないことが問題です。
リンクで私が何を意味するかを見ることができます: https://www.dropbox.com/s/83hnkiqi87uy5ab/map.png?dl=0
アドバイスをありがとう。