2013-07-31 4 views
13

я использую метод камеру с цифровым значением, как это:Как получить текущий уровень масштабирования от google map для ios?

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

и мне нужно автоматически перерисовывать карту с текущей позицией с помощью таймера:

-(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]; 
} 

, но как я могу получить текущий масштаб, если я могу изменить его с помощью трогать?

ответ

25

ОК, я нахожу решение, получить текущий масштаб:

CGFloat currentZoom = self.MapView.camera.zoom; 

, а затем использовать его в камеру:

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

Вы можете использовать animateToZoom тоже.

self.mapView.animateToZoom(10) 
0

Если вы хотите определить уровень масштабирования, когда пользователь взаимодействует с картой. Мы можем использовать Google Map Делегат метод

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

Dont забыл добавить GMSMapViewDelegate

Смежные вопросы