Tôi đang viết một ứng dụng và tôi có một bản đồ được nhúng để hiển thị vị trí của người dùng. Đây là mã của tôi cho đến nay:Làm thế nào tôi có thể căn giữa bản đồ vào vị trí của người dùng nhanh chóng?
class YourCurrentLocation: UIViewController, CLLocationManagerDelegate {
@IBOutlet weak var mapView: MKMapView!
var locationManager = CLLocationManager()
let regionRadius: CLLocationDistance = 1000
func checkLocationAuthorizationStatus() {
if CLLocationManager.authorizationStatus() == .AuthorizedWhenInUse {
mapView.showsUserLocation = true
centerMapOnLocation(locationManager.location!, map: mapView, radius: regionRadius)
} else {
locationManager.requestAlwaysAuthorization() //requestWhenInUseAuthorization()
}
}
func centerMapOnLocation(location: CLLocation, map: MKMapView, radius: CLLocationDistance) {
let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate,
radius * 2.0, radius * 2.0)
map.setRegion(coordinateRegion, animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
// mapView.delegate = self
if CLLocationManager.locationServicesEnabled()
{
//locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
print("location enabled")
checkLocationAuthorizationStatus()
}
else
{
print("Location service disabled");
}
// Do any additional setup after loading the view.
}
}
Tôi cũng đã thêm hai mục để plist của tôi:
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
và cũng trong xcode của tôi, tôi đã từng muốn ganh đua dữ liệu GPS trên london, Vương quốc Anh.
Khi tôi chạy ứng dụng - Tôi thấy bản đồ, nhưng london không được đánh dấu. Tôi đang làm gì sai?
Btw, tôi đã phải nhận xét ra dòng này:
//mapView.delegate = self
trong viewDidLoad()
, nếu không tôi đã có lỗi:
Cannot assign value of type YourCurrentLocation to type MKMapViewDelegate
và tôi không chắc chắn nếu đó là một phần của vấn đề đây.
Tôi muốn đạt được hiệu quả khi tôi hiển thị bản đồ người dùng và một điểm được đánh dấu trên bản đồ đó với vị trí của anh ấy. Bạn có thể giúp tôi với đó?
'locationManager.location!' Trong mã của bạn sẽ cung cấp cho bạn giả lập hoặc vị trí cuối cùng của thiết bị, có thể là bất kỳ thứ gì. Trong câu trả lời của tôi, tôi chỉ cho bạn cách sử dụng 'CLLocationManagerDelegate' để có được vị trí người dùng thực tế. – paulvs
Được rồi, tôi hiểu ... cảm ơn! một câu hỏi cuối cùng - điều gì sẽ xảy ra trong một tình huống khi điện thoại không ở trong phạm vi GPS hoặc vị trí chưa được phân biệt là thực tế? – user3766930
@ user3766930 bạn có thể đánh dấu câu trả lời là được chấp nhận nếu nó đã giải quyết được sự cố của bạn. – paulvs