質問: 現在は Swift で MapKit を使用して、自分の見たい地図、ピンを立てたい場所にピンを立てるということができています。 起動してたらピンがたっている状態です。 ピンの画像を変えたいのですがつまずいてしまったので教えてほしいです。 基本 「逆引きSwift(iOS編) - 001 地図の表示」 を参考にしています
回答: MapKitでピンはアノテーションとアノテーションビューいう概念で扱われます。 アノテーションが地図上の位置などを保持していて、それをピンの形など具体的に表現するのがアノテーションビューになります。 ということで、デフォルトではアノテーションはピンの形になるので、アノテーションビューに任意の画像を設定することで、好きな画像をピンの代わりに配置することができます。 例えば下記のようなコードになります。 1. アノテーションのカスタマイズはデリゲートで行うので`MKMapViewDelegate`に準拠する宣言を書きます。 2. MKMapViewにデリゲートを設定します。 3. `mapView(mapView:, viewForAnnotation:)`メソッドで必要に応じてアノテーションビューを生成して、画像を設定して返します。アノテーションには現在地を示すマークなども含まれるので適宜判定します。 ``` class ViewController: UIViewController, MKMapViewDelegate { // MKMapViewDelegateの宣言を追加します。 override func viewDidLoad() { super.viewDidLoad() // (略) myMapView.delegate = self // 自分自身をデリゲートとして設定します } func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! { if annotation === mapView.userLocation { // 現在地を示すアノテーションの場合はデフォルトのまま return nil } else { let identifier = "annotation" if let annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier("annotation") { // 再利用できる場合はそのまま返す return annotationView } else { // 再利用できるアノテーションが無い場合(初回など)は生成する let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: identifier) annotationView.image = UIImage(named: "sample") // ここで好きな画像を設定します return annotationView } } } ```