我正在尝试在我的应用中添加地图 - 按照说明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)
答案 0 :(得分:1)
您的代码将始终崩溃。你在说:
locationManager.requestWhenInUseAuthorization()
// ...
let region = MKCoordinateRegion.init(center: (locationManager.location?.coordinate)!, span: span)
因此,您已向位置管理员提供了开始获取设备位置的说明,但在此您强制解开位置管理员的位置。当然,该位置为nil
,自然会崩溃。
如果您的目标是让地图显示用户的位置,请设置地图的showsUserLocation
或(更好)其userTrackingMode
和停止。只需退一步,让地图完成它的工作。不要试图指挥其地区来对抗地图视图;它比你更了解如何显示用户的位置。