2013-07-31 7 views
13

Ich benutze Methode Kamera mit digitalem Wert wie folgt aus:Wie bekomme ich die aktuelle Zoomstufe von Google Map für iOS?

camera = [GMSCameraPosition cameraWithLatitude:37.35 longitude:-122.0 zoom:6]; 

und ich brauche automatisch Karte mit aktuellen Position über Timer neu zu zeichnen:

-(void)gmapRedraw{ 
    NSLog(@"gmapRedraw"); 
// self.MapView.camera 
    [locationManager startUpdatingLocation]; 
    NSLog(@"lat %f, lon %f", locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude); 
    camera = [GMSCameraPosition cameraWithLatitude:locationManager.location.coordinate.latitude//37.36//-37.81319//-33.86 
             longitude:locationManager.location.coordinate.longitude//-122.0//144.96298//151.20 
               zoom:6]; 
    self.MapView.camera = camera; 
} 

-(void)timer{ 
    [NSTimer scheduledTimerWithTimeInterval:0.5 
            target:self 
            selector:@selector(gmapRedraw) 
            userInfo:nil 
            repeats:YES]; 
} 

aber wie kann ich aktuelle Zoom, wenn ich es über ändern berühren?

Antwort

25

OK, ich finde Lösung, aktuellen Zoom erhalten:

CGFloat currentZoom = self.MapView.camera.zoom; 

und es dann in der Kamera verwenden:

camera = [GMSCameraPosition cameraWithLatitude:locationManager.location.coordinate.latitude 
            longitude:locationManager.location.coordinate.longitude 
              zoom:currentZoom]; 
self.MapView.camera = camera; 
1

Sie animateToZoom benutzen konnten.

self.mapView.animateToZoom(10) 
0

Wenn Sie Zoom-Ebene erkennen möchten, während der Benutzer mit der Karte interagiert. Wir verwenden Google Map Delegatmethode

func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) { 
    let zoom = mapView.camera.zoom 
    print("map zoom is ",String(zoom)) 
} 

Dont vergessen GMSMapViewDelegate hinzufügen