#38 經緯度的轉換
Published in
Sep 11, 2021
經緯度的表示有度,度分,度分秒三種表示法。請模仿以下網頁實作 App,實現三種表示法的轉換。
參考這篇的資料知道經緯度、經緯分、經緯秒之間的關係
因為比較少使用到MapKit,使用上看了文章花了點時間理解!
因為有import MapKit,mapMkMapView才能使用MapKit裡的屬性region控制地圖中心點的經緯度和範圍,它的型別為 MKCoordinateRegion。
生成MKCoordinateRegion時傳入3個參數
- center: 型別 CLLocationCoordinate2D,代表地圖中心點的經緯度座標。latitude 是緯度,longitude 是經度。
- latitudinalMeters: 緯度範圍,單位是公尺,傳入 1000 表示地圖的最北邊 & 最南邊距離 1000 公尺
- longitudinalMeters: 經度範圍,單位是公尺,傳入 1000 表示地圖的最東邊 & 最西邊距離 1000 公尺。
特別需要注意的地方是
MKCoordinateRegion裡Center: CLLocationCoordinate2D(
latitude: CLLocationDegrees:Double,
longitude: CLLocationDegrees:Double
)
宣告mapAnnotation = MKPointAnnotation(),利用MKPointAnnotation產生座標,透過 coordinate 設定經緯度座標,最後記得addAnnotation到Map上
let annotation = mapAnnotationTextfield.text!//利用 MKPointAnnotation 產生地圖標記let mapAnnotation = MKPointAnnotation()mapAnnotation.title = "\(annotation)"//透過它的 coordinate 設定經緯度座標mapAnnotation.coordinate = CLLocationCoordinate2D(latitude: mapLatitde!, longitude: mapLongitude!)//加入mapMKMapViewmapMKMapView.addAnnotation(mapAnnotation)
最後在清除的動作時將mapMKMapView回到台灣全景
//地圖回到台灣全景mapMKMapView.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 23.535267, longitude: 120.961449), latitudinalMeters: 400000, longitudinalMeters: 400000)
・完整程式碼:
・GitHub :)
更新! 把“!”用if let解包,算是練習讓自己不要使用”!”
・參考資料