【发布时间】:2014-08-08 09:45:53
【问题描述】:
我正在尝试在 Swift 中使用 Map Kit。我尝试在地图上显示该区域、一个大头针和当前位置。所有显示正常,排除当前位置 - 它不显示。
这是一个示例代码:
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
@IBOutlet weak var mainMapView: MKMapView!
var locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
var userLocation = MKUserLocation()
println("Location: \(userLocation.location)")
var objectLatitude = 53.204526
var objectLongitude = 50.111751
var currentLatitude = 53.203715
var currentLongitude = 50.160374
var latDelta = 0.01
var longDelta = 0.01
var currentLocationSpan: MKCoordinateSpan = MKCoordinateSpanMake(latDelta, longDelta)
var currentLocation: CLLocationCoordinate2D = CLLocationCoordinate2DMake(currentLatitude, currentLongitude)
var currentRegion: MKCoordinateRegion = MKCoordinateRegionMake(currentLocation, currentLocationSpan)
self.mainMapView.setRegion(currentRegion, animated: true)
var objectLocation: CLLocationCoordinate2D = CLLocationCoordinate2DMake(objectLatitude, objectLongitude)
var objectAnnotation = MKPointAnnotation()
objectAnnotation.coordinate = objectLocation
objectAnnotation.title = "St. George's Church"
objectAnnotation.subtitle = "Church of the Great Martyr St. George"
self.mainMapView.addAnnotation(objectAnnotation)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
行println("Location: \(userLocation.location)")显示Location: nil
确保地理定位的所有必要措施:
【问题讨论】:
-
请注意,您不应自己创建
MKUserLocation的实例(例如var userLocation = MKUserLocation())。地图视图将在内部创建一个实例。您应该使用 userLocation 属性或在 didUpdateUserLocation 或 didUpdateLocations 委托方法中读取位置。 -
谢谢大家 - 我已经解决了这个问题。你能帮我解决这段代码中的另一个问题吗?这是问题的链接:stackoverflow.com/questions/25202613/mapkit-in-swift-part-2
标签: swift mapkit cllocationmanager ios8