2016-08-03 4 views
0

Ich habe eine App, bei der der Standort des Benutzers ständig aktualisiert werden muss, damit ich die aktuellen Koordinaten und die Höhe anzeigen kann. Ich tue dies die didUpdateLocations Funktion:Google Maps iOS SDK Verhindert das Zoomen der Kamera nach jeder Standortaktualisierung

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    if let location = locations.last { 
     mapView.camera = GMSCameraPosition(target: locationManager.location!.coordinate, zoom: 15, bearing: 0, viewingAngle: 0) 
     let locValue : CLLocationCoordinate2D = manager.location!.coordinate 
     let altitude : CLLocationDistance = Double(round(1000*manager.location!.altitude)/1000) 
     let long = Double(round(10000*locValue.longitude)/10000) 
     let lat = Double(round(10000*locValue.latitude)/10000) 
     let alt = String(altitude) + " m" 
     latitudeLabel.text = String(lat) 
     longitudeLabel.text = String(long) 
     altitudeLabel.text = alt 
     showLearningObjectsWithinRange(location) 
    } 
} 

Das Problem ist, wenn ich versuche, auf der Karte auf einer bestimmten Stelle zu vergrößern, wenn ich das Gerät auch leicht die Kamera bewegen, wieder heraus zoomt zurück. Offensichtlich liegt das an der ersten Zeile in meiner didupdateLocations-Funktion, die die Kameraposition festlegt, aber wenn ich diese Zeile entferne, zentriert sich die Karte überhaupt nicht auf ihren Standort.

Ich habe versucht, den GMSCameraPosition-Code in viewDidLoad, viewWillAppear und an mehreren anderen Stellen zu verschieben, aber dies führte zum Absturz der App, weil der Benutzer nicht rechtzeitig gefunden werden konnte.

Hat jemand irgendwelche Vorschläge, wie dies funktioniert? Vielen Dank.

+0

Zoom: 15, verwenden Sie die map.camera.zoom etwas oder überprüfen Sie in der Dokumentation, so dass der Zoom nicht ändern tut wenn Sie den Standort aktualisieren – Shubhank

Antwort

0

Im Hinblick auf die Umsetzung der Standortaktualisierung, es gab ein Problem in GitHub geschrieben - Implement Responsive User Location Tracking Mode aufgrund Standortaktualisierung Optimierung und gehen durch den Faden, eine bestimmte Problemumgehung den Benutzer Standort auf der Karte zu zeigen, ist

nMapView.setMyLocationEnabled(true); 
zu nennen

statt:

nMapView.setMyLocationTrackingMode(MyLocationTrackingMode.TRACKING_FOLLOW); 

Dann im Hinblick auf die Kamera-Zoom, wie in Camera and View - Zoom diskutiert, können Sie versuchen, eine minimale oder maximale Zoomeinstellung Zoomstufe zu beschränken. Wie bereits erwähnt,

Sie können den für die Karte verfügbaren Zoombereich einschränken, indem Sie eine minimale und maximale Zoomstufe einstellen.

Sie können auch versuchen, die Lösungen in diesem SO Post - Google Maps iOS SDK, Getting Current Location of user. Ich hoffe es hilft.

+0

Dies ist irrelevant. Die Frage bezieht sich auf Google Maps. – user3687

0

Verwendung dieses anstelle dieser bestimmten Zeile (mapview.camera = ...)

mapView.animate(toLocation: CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)) 
+0

Dies funktioniert nicht – user3687

Verwandte Themen