大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

新アプリ「何処リマインダ」の諸々(3) ー MapView ー 現在地Mark印のカスタマ(2)

株式会社クローバーフィールドの経営理念
著者:川上洋
公開日:2018/06/11
最終更新日:2018/06/20
カテゴリー:技術情報 雑記

現在地処理のマーク印のカスタマのお話です。
一応、フツーにカスタマ無しで、起動時に見えるマーク印は、

でしょう。

で。カスタマしたマーク印は

でした。

MapViewのdelegateで受けれる「アノテーションビューを返すメソッド」があります。

    //MARK: ⚡+++  MKMapViewDelegate アノテーションビューを返すメソッド
    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? 

この「アノテーションビューを返すメソッド」には、
今のところ、「何処リマインダ」では、
・現在地マーク印の編集
・「吹き出し」の編集
をカスタマしています。

    //MARK: ⚡+++  MKMapViewDelegate アノテーションビューを返すメソッド
    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
        print("== MKMapViewDelegate - viewFor annotation")
        // MARK: === アノテーションビューを生成する。
        let anoPinView = MKPinAnnotationView()
        
        // MARK: === アノテーションビューに座標、タイトル、サブタイトルを設定する。
        anoPinView.annotation = annotation
        
        // MARK: === 現在地のアノテーションビューを設定する。
        if annotation === mapView.userLocation { // 現在地を示すアノテーションの場合はデフォルトのまま
            let identifier = "annotation"
            if let annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "annotation") { // 再利用できる場合はそのまま返す
                return annotationView
            }
            else { // 再利用できるアノテーションが無い場合(初回など)は生成する
                let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: identifier)
                annotationView.image = UIImage(named: "curpos2") //⭐のマーク印
                return annotationView
            }
        }
        // MARK: === 「吹き出し」の編集 == カスタムAnnotationの表示
        else if let customAnno = annotation as? CustomMKPointAnnotation {
  				// ・・・ CustomMKPointAnnotation は、プチカスタマ用のMKAnnotationです。
        }
        else{
            anoPinView.pinTintColor = UIColor.purple

        }
        
        //吹き出しの表示をONにする。
        anoPinView.canShowCallout = true
        
        return anoPinView
    }

と、まぁいうことで、現在地点処理は、一旦で区切りができました。

ではでは。

    上に戻る