MapKit zoom to user current location

后端 未结 8 533
慢半拍i
慢半拍i 2021-02-01 17:59

I am trying to simply show user\'s location on the map, but I need to when app launches, the map should zoom to current location ,but I don\'t know why map doesn\'t zoom at all

8条回答
  •  谎友^
    谎友^ (楼主)
    2021-02-01 18:22

    Code:

    import UIKit
    import MapKit
    
    class ViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {
    
    @IBOutlet weak var mapview: MKMapView!
    
    let locationmanager = CLLocationManager()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    
        mapview.mapType = MKMapType.standard
    
        let location = CLLocationCoordinate2DMake(22.4651, 70.0771)
    
        let span = MKCoordinateSpanMake(0.5, 0.5)
        let region =  MKCoordinateRegionMake(location, span)
        mapview.setRegion(region, animated: true)
    
        let annonation = MKPointAnnotation()
        annonation.coordinate = location
        annonation.title = "Chandi Bazar"
        annonation.subtitle = "Jamnagar"
        //
        mapview.addAnnotation(annonation)
    
        self.locationmanager.requestWhenInUseAuthorization()
    
        if CLLocationManager.locationServicesEnabled()
        {
            locationmanager.delegate = self
            locationmanager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
            locationmanager.startUpdatingLocation()
        }
    }
    
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
    {
        let locValue:CLLocationCoordinate2D = manager.location!.coordinate
        print("locations = \(locValue.latitude) \(locValue.longitude)")
    
        locationmanager.stopUpdatingLocation()
    }
    
    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?
    {
        if (annotation is MKUserLocation)
        {
            return nil
        }
    
        let annotationidentifier = "Annotationidentifier"
    
        var annotationview:MKAnnotationView
        annotationview = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationidentifier)
    
        let btn = UIButton(type: .detailDisclosure)
    
        btn.addTarget(self, action: #selector(ViewController.hirenagravat(sender:)), for: .touchUpInside)
    
        annotationview.rightCalloutAccessoryView = btn
    
        annotationview.image = UIImage(named: "images (4).jpeg")
    
        annotationview.canShowCallout = true
    
        return annotationview
    }
    
    func hirenagravat(sender:UIButton)
    {
        let fvc = storyboard?.instantiateViewController(withIdentifier: "secondViewController") as? secondViewController
        self.navigationController?.pushViewController(fvc!, animated: true)
    }
    

提交回复
热议问题