展开MKMap Location的可选项会出错

时间:2017-12-03 19:18:12

标签: swift mkmapview cllocation

我正在尝试在我的应用中添加地图 - 按照说明here。问题是我在设置区域时遇到错误 - 代码行“let region = MKMap ...”我不知道为什么。有没有人遇到过这个问题或者知道如何帮忙?谢谢!

代码更新:

import UIKit
import MapKit
import CoreLocation

class ViewController: UIViewController, MKMapViewDelegate {

    // MARK: Properties
    @IBOutlet weak var MapView: MKMapView!
    var locationManager = CLLocationManager.init()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        locationManager.requestWhenInUseAuthorization()

        MapView.mapType = .standard
        MapView.showsUserLocation = true
        MapView.showsScale = true
        MapView.showsCompass = true

        let span = MKCoordinateSpan.init(latitudeDelta: 0.0075, longitudeDelta: 0.0075)
        let region = MKCoordinateRegion.init(center: (locationManager.location?.coordinate)!, span: span)
        MapView.setRegion(region, animated: true)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


} 

错误更新: 导致错误的行是:

let region = MKCoordinateRegion.init(center: (locationManager.location?.coordinate)!, span: span)

,错误是:

主题1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)

1 个答案:

答案 0 :(得分:1)

您的代码将始终崩溃。你在说:

    locationManager.requestWhenInUseAuthorization()
    // ...
    let region = MKCoordinateRegion.init(center: (locationManager.location?.coordinate)!, span: span)

因此,您已向位置管理员提供了开始获取设备位置的说明,但在此您强制解开位置管理员的位置。当然,该位置为nil,自然会崩溃。

如果您的目标是让地图显示用户的位置,请设置地图的showsUserLocation或(更好)其userTrackingMode停止。只需退一步,让地图完成它的工作。不要试图指挥其地区来对抗地图视图;它比你更了解如何显示用户的位置。