#76 加入MapKit地圖

先在storyboard中加入mapKit元件

在controller.swift中加入以下程式碼

    func configure(location: String){
        let geoCoder = CLGeocoder()
        print(location)
        
        geoCoder.geocodeAddressString(location, completionHandler:{ placemarks, error in if let error = error{
            print(error.localizedDescription)
            return
            }
            
            if let placemarks = placemarks{
                //取得第一個地點標記
                let placemark = placemarks[0]
                
                //加上標記
                let annotation = MKPointAnnotation()
                
                if let location = placemark.location{
                    //顯示標記
                    annotation.coordinate = location.coordinate
                    self.mapView.addAnnotation(annotation)
             
                   //設定縮放程度
                    let region = MKCoordinateRegion(center: annotation.coordinate,latitudinalMeters: 250,longitudinalMeters: 250)
                    
                    self.mapView.setRegion(region, animated: false)
                }
            }
        })

    }


記得對應到的mapKit要按ctrl拉進來新增@IBOutlet,mapView及為對應mapKit在@IBOutlet設定的名稱( @IBOutlet var mapView: MKMapView!)


---------------------------------------------
修改地圖上大頭釘圖示及顯示文字方法
    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation)->MKAnnotationView?{
        let identifier = "MyMarker"
        
        if annotation.isKind(of: MKUserLocation.self){
            return nil
        }
    
        var annotationView: MKMarkerAnnotationView? = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) as? MKMarkerAnnotationView
        if annotationView == nil {
            annotationView = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: identifier)
        }
        //annotationView?.glyphtext = "123" //顯示在氣球標記的文字
        annotationView?.glyphImage = UIImage(named: "6")//顯示在氣球標記的圖片
        annotationView?.markerTintColor = UIColor.orange//氣球標記的背景顏色
        
        return annotationView

    }

-------------------------------------------
在viewDidLoad中加入以下可獲得不同地圖資訊
mapView.showsCompass = true //顯示交通流量大的點
mapView.showsScale = true  //左上角顯示比例尺
mapView.showsTraffic = true  //右上角顯示一個指南針控制

留言