Ich versuche, Polylinie in Echtzeit zu zeichnen, um Benutzern die Route zu zeigen, die sie bisher genommen haben. Ich benutze Google Map API, und bis jetzt zeigt es den aktuellen Standort der Benutzer ohne Probleme. Aber die Polylinie funktioniert nicht (Polylinie wird überhaupt nicht gezeichnet). Ich rufe startMonitoringSignificantLocationChanges auf, nachdem ich die Berechtigung überprüft und die Polylinie in didupdatelocations gezeichnet habe. Hier ist ein relevanter Teil meines Codes:Polylinie auf der Google-Karte in Echtzeit funktioniert nicht
extension MapViewController: CLLocationManagerDelegate {
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == .AuthorizedAlways {
locationManager.startUpdatingLocation()
mapView.myLocationEnabled = true
mapView.settings.myLocationButton = true
locationManager.startMonitoringSignificantLocationChanges()
}
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = manager.location {
mapView.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
path.addCoordinate(CLLocationCoordinate2D(latitude: location.coordinate.latitude,
longitude: location.coordinate.longitude))
let polyline = GMSPolyline(path: path)
polyline.strokeColor = UIColor.redColor()
polyline.strokeWidth = 3
polyline.map = mapView
locationManager.stopUpdatingLocation()
}
}
UPDATE-1
Nach Auskommen stopUpdatingLocation Linie, tut es die Grenze ziehen. Aber die Linie ist verstümmelt.
UPDATE-2
ich herausgefunden, warum die Linie ein Chaos statt einer geraden Linie ist. Das liegt daran, dass das iPhone den aktuellen Standort ständig ändert (obwohl es stationär ist), also mehrere Zeilen in einem kleinen Bereich zeichnet. Wie halte ich das iPhone davon ab?
UPDATE-3
ich gerade herausgefunden, dass "Jumpy" aktuelle Position nicht nur in meiner app passieren. Es passiert auch in der GoogleMap App. Das ist also wahrscheinlich Iphone/ios GPS-Problem.
Sie müssen nur das Rauschen aus den Standortdaten entfernen. Grundsätzlich ignorieren neue Standortwerte, wenn der neue Wert nur einen Unterschied von nur 0,0001 hat (so etwas) – Nishant
Eigentlich ist der Bereich nicht wirklich klein . Es ist groß genug, um sich mit dem Benutzer zu verwechseln, der sich in eine andere Straße verwandelt, um sie als Lärm herauszufiltern. Ich benutze IPhone 5 bty. – user30646