GoogleMap SDKを使用しているユーザーがパスを記録しようとしています。私はポリラインを使ってマップ上に線を引いて、ユーザーにそのパスを表示しています。生成された座標を縮小し、線がきれいに見えるようにするため、startUpdatingLocationの代わりにCLLocationMangerのstartMonitoringSignificantChangeを呼び出します。しかし、それは動作していないようです。ビューがロードされたときにdidUpdateLocationsメソッドを呼び出しますが、その後は呼び出しを停止します。どこが間違っていますか?startMonitoringSignificantLocationChangeはdidUpdateLocationsを呼び出しません
これは
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
locationManager.requestAlwaysAuthorization()
locationManager.startMonitoringSignificantLocationChanges()
}
extension LocationViewController: CLLocationManagerDelegate {
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == .AuthorizedAlways {
locationManager.startMonitoringSignificantLocationChanges()
mapView.myLocationEnabled = true
mapView.settings.myLocationButton = true
}
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = manager.location {
path.addCoordinate(CLLocationCoordinate2D(latitude: location.coordinate.latitude,
longitude: location.coordinate.longitude))
let polyline = GMSPolyline(path: path)
polyline.strokeColor = UIColor.redColor()
polyline.strokeWidth = 3
polyline.geodesic = true
polyline.map = mapView
// Save the coordinates to array
coordinateArray.append([location.coordinate.latitude, location.coordinate.longitude])
}
}
}
}
更新を期待していて、取得していないときはどのくらい移動していますか? – dan
5km先のダウンタウンに行く。 – user30646
500mごとに更新が必要です。アプリをフォアグラウンドで維持していて、デバイスが目を覚ましていますか?バックグラウンドの位置情報を有効にしていないため、アプリが一時停止されたり、デバイスがスリープ状態になったりすると、更新情報は取得されません。 – Paulw11