Help us understand the problem. What is going on with this article?

Swift MkMapViewで地図アプリ作成してみた(07)- 地図の表示タイプを切り替える

記事一覧

Swift MkMapViewで地図アプリ作成してみた(記事一覧)

地図表示タイプを切り替えるボタンを配置する

UIButtonの変数を定義する。

ViewController.swift:UIButtonの変数を定義する
class ViewController:   UIViewController,
                        CLLocationManagerDelegate,
                        UIGestureRecognizerDelegate {

    var mapViewType: UIButton!

コード上からボタンを配置する。

ViewController.swift:ボタンを配置
        // 地図表示タイプを切り替えるボタンを配置する
        mapViewType = UIButton(type: UIButton.ButtonType.detailDisclosure)
        mapViewType.frame = CGRect(x:width - 50, y:60, width:40, height:40)
        mapViewType.layer.backgroundColor = UIColor(white: 1, alpha: 0.8).cgColor // 背景色
        mapViewType.layer.borderWidth = 0.5 // 枠線の幅
        mapViewType.layer.borderColor = UIColor.blue.cgColor // 枠線の色
        self.view.addSubview(mapViewType)

タッチダウンを検出して地図の表示タイプを切り替える

タッチダウン時にCallする関数を定義する。

ViewController.swift:タッチダウン時にCallする関数
    // 地図の表示タイプを切り替える
    @objc internal func mapViewTypeBtnThouchDown(_ sender: Any) {
        switch mapView.mapType {
        case .standard:         // 標準の地図
            mapView.mapType = .satellite
            break
        case .satellite:        // 航空写真
            mapView.mapType = .hybrid
            break
        case .hybrid:           // 標準の地図+航空写真
            mapView.mapType = .satelliteFlyover
            break
        case .satelliteFlyover: // 3D航空写真
            mapView.mapType = .hybridFlyover
            break
        case .hybridFlyover:    // 3D標準の地図+航空写真
            mapView.mapType = .mutedStandard
            break
        case .mutedStandard:    // 地図よりもデータを強調
            mapView.mapType = .standard
            break
        }
    }

タッチダウン時に作成した関数をCallする。

ViewController.swift:タッチダウン時に作成した関数をCall
        mapViewType.addTarget(self, action: #selector(ViewController.mapViewTypeBtnThouchDown(_:)), for: .touchDown)

PCシミュレータで実行した結果は以下の通り。

mapType 説明 画像
.standard 標準の地図 map1.png
.satellite 航空写真 map2.png
.hybrid 標準の地図+航空写真 map3.png
.satelliteFlyover 3D航空写真 map4.png
.hybridFlyover 3D標準の地図+航空写真 map5.png
.mutedStandard 地図よりもデータを強調 map6.png

参考文書

MKMapType - MapKit | Apple Developer Documentation

yuta-sasaki
車載ソフトウェア開発者です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした