最近在研究 MapKit 的用法,就來寫個 MapKit 的基礎教學文!
市面上許多的 App,都會把使用者所在的位置或是想要標示的地點顯4在地圖上,而這類的應用程式,都使用了「MapKit」框架。MapKit 提供所有地圖元件創建時必要的方法以及地圖的結構配置,讓使用者能夠在 App 上輕易的查看地點或獲取資訊。
而 Maps 的父類別是 UIView,稱為 MKMapView。MKMapView 負責載入地圖、處裡與使用者的互動以及在地圖上顯示自定義內容。
Map的配置
MapKit 框架有不同類型的基礎設定,這些設定可以讓使用者去放大、縮小地圖,或者讓地圖旋轉、滑動等等:
・mapType:這個屬性決定了地圖所呈現的類型 ( .standard by default )
・isScrollEnabled:地圖是否可以滾動 ( true by default )
・isRotatedEnabled:地圖是否可以旋轉 ( true by default )
・isPitchEnabled:地圖可否改變角度 ( true by default )
雖然說使用者可以自行使用滑動及縮放功能,找到特定的地點或是區域,不過我們仍然可以使用程式碼來做到相同的事 — 顯示特定區域或地點。以下先介紹一些屬性及方法:
・region:回傳 MKCoordinateRegion 結構的參數,這個參數決定了螢幕要顯示區域的大小。
・centerCooordinate:這個屬性回傳了 CLLocationCoordinate2D 結構的參數,這個參數決定了要顯示的中心點在何處。
・setRegion(MKCoordinateRegion, animated: Bool)
此方法設定了要顯示地區的座標,第一個屬性設定了區域的經度及緯度,而第二個屬性設定是否由動畫呈現。
設置區域所需要的 MKCoordinateRegion 結構,是從CLLocationCoordinate2D 結構所創建的,CLLocationCoordinate2D 包含兩個屬性:latitude 及 longitude,用於返回位置的經度及緯度,以及一個MKCoordinateSpan 值,包含以度為單位的區域大小。但由於區域的度數可能非常難計算,因此框架為了此結構定義了初始化的程序,讓我們能以公尺單位設置區域的大小。
MKCoordinateRegion(center: CLLocationCoordinate2D, latitudinalMeters: CLLocationDistance, longitudinalMeters: CLLocationDistance)
第一個屬性指定區域的座標,第二及第三個屬性指定區域的垂直及水平的大小 ( 以公尺為單位 )
以下為好想工作室為座標,設定比例尺為300的範例:
以上程式碼創建了一個 CLLocation object,其中包含了好想工作室的座標,使用了 MKCoordinateRegion 定義了好想工作室周圍的區域,最後用 setRegion() 來設定可見區域。