展开 MKMap 位置的可选选项会出错
Unwrapping optional for MKMap Location gives error
我正尝试在我的应用程序中包含一张地图 - 按照说明 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)
您的代码总是会崩溃。你是说:
locationManager.requestWhenInUseAuthorization()
// ...
let region = MKCoordinateRegion.init(center: (locationManager.location?.coordinate)!, span: span)
所以您没有向位置管理器提供开始获取设备位置的指令,但您在这里强制展开位置管理器的位置。那个位置自然是nil
,自然你就崩溃了
如果您的目标是让地图显示用户的位置,则设置地图的 showsUserLocation
或(更好)它的 userTrackingMode
和 stop。退后一步,让地图发挥作用。不要通过试图指定其区域来对抗地图视图;它比你更清楚如何显示用户的位置。
我正尝试在我的应用程序中包含一张地图 - 按照说明 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)
您的代码总是会崩溃。你是说:
locationManager.requestWhenInUseAuthorization()
// ...
let region = MKCoordinateRegion.init(center: (locationManager.location?.coordinate)!, span: span)
所以您没有向位置管理器提供开始获取设备位置的指令,但您在这里强制展开位置管理器的位置。那个位置自然是nil
,自然你就崩溃了
如果您的目标是让地图显示用户的位置,则设置地图的 showsUserLocation
或(更好)它的 userTrackingMode
和 stop。退后一步,让地图发挥作用。不要通过试图指定其区域来对抗地图视图;它比你更清楚如何显示用户的位置。