私はアプリを書いています。ユーザーの現在地を表示するために埋め込まれたマップビューがあります。これは、これまでの私のコードです:どのように地図をユーザーの場所に迅速に配置できますか?
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.
}
}
私はまた私のplistに2つのエントリを追加しました:
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
とも私のXcodeで、私はロンドン、英国でのGPSデータをエミュレートするように設定されています。
アプリを実行すると、地図が表示されますが、ロンドンにはマークが付きません。私は間違って何をしていますか?それ以外の場合は、私がエラーだった、viewDidLoad()
で
//mapView.delegate = self
:
ところで、私はこの行をコメントアウトしなければならなかった
Cannot assign value of type YourCurrentLocation to type MKMapViewDelegate
をし、私はそれが問題の一部だのかはわかりませんここに。
私はユーザーマップと彼の場所でそのマップ上にマークされたポイントに表示するときに効果を達成したいと思います。あなたはそれで私を助けることができますか?
あなたのコードの 'locationManager.location!'は、シミュレータまたはデバイスの最後の場所を提供します。これは何でもかまいません。私の答えでは、 'CLLocationManagerDelegate'を使って実際のユーザの場所を取得する方法を示します。 – paulvs
さて、私は見る...ありがとう! 1つの最後の質問 - 電話機がGPS圏内にいないか、またはその場所が実際のものと区別されていない状況ではどうなりますか? – user3766930
@ user3766930あなたの問題を解決した場合は、回答を受け入れ可能とマークすることができます。 – paulvs