#38 經緯度的轉換

經緯度的表示有度,度分,度分秒三種表示法。請模仿以下網頁實作 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解包,算是練習讓自己不要使用”!”

・參考資料

--

--