iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 12
0

分類:UIKit學習

1. 以MKMapView來實現地圖功能

需要提供的資訊包含:

  • 座標CLLocationCoordinate2D:以經度(CLLocationDegrees)及緯度(CLLocationDegrees)來產生。
  • 縮放範圍:MKCoordinateSpan,用橫向縮放值(CLLocationDegrees)與直向縮放值(CLLocationDegrees)合成縮放範圍。
  • 產生顯示區域:MKCoordinateRegion,以上述兩者來決定地圖的顯示區域。

2. 地圖實作

2-1. 以得知目前使用者位置的經緯度並追蹤為例:

  • 把MKMapView拉進ViewController中,並進行連結,這邊命名為myMap。

  • 加入函式庫MapKit 、CoreLocation,並勾選右方屬性版中的User Location。

  • 在info.list新增Privacy-Location When In Use Usage Description,並填入說明。

  • 產生CLLocationManger並要求授權。

  • 抓取使用者座標:

let myLocation = locationManager.location?.coordinate
        print(myLocation?.latitude)
        print(myLocation?.longitude)
  • 設定縮放範圍:
 //直向縮放範圍
        let latRange:CLLocationDegrees = 0.01
 //橫向縮放
        let lonRange:CLLocationDegrees = 0.01
 //總縮放範圍
        let range:MKCoordinateSpan = MKCoordinateSpanMake(latRange, lonRange)
  • 產生地圖:
//以座標與縮放範圍來顯示地圖
        if myLocation != nil{
            let appearRegion:MKCoordinateRegion = MKCoordinateRegionMake(myLocation!, range)
//在地圖上顯示
            myMap.setRegion(appearRegion, animated: true)
        }

顯示結果:

2-2. 追蹤並更新使用者位置:

  • 要追蹤的使用者位置就必需服從CLLocationManagerDelegate協定。
  • 並在ViewDidLoad()裡面加入下列程式碼:
 locationManager.delegate = self //設定ViewController為代理人
 locationManager.desiredAccuracy = kCLLocationAccuracyBest //準確度設定
 locationManager.activityType = .automotiveNavigation//移動的模式
 locationManager.startUpdatingLocation() //開始更新位置
  • 在ViewDidDisapper()寫下locationManager.stopUpdatingLocation()當畫面消失時停止更新位置。
    PS:關於地圖還有許多功能沒有深入探討,原因是主要配合旅遊app實作目前僅需用到這兩個部分。

上一篇
Swift從零開始-Day11:開始進行旅遊app的規劃
下一篇
Swift從零開始-Day13:UITableView中嵌入UICollectionView基本概念學習
系列文
Swift零基礎實作旅遊景點app30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言