Подтвердить что ты не робот

Как получить текущий уровень масштабирования с карты google для 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];
}

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

4b9b3361

Ответ 1

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

CGFloat currentZoom = self.MapView.camera.zoom;

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

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

Ответ 2

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

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

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

Ответ 3

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

self.mapView.animateToZoom(10)

Ответ 4

мои буксирные центы за swift 4.x:

let currZoom = self.googleMapView.camera.zoom

НО - это Float, а не CGFloat, как в первом примере objC. В Swift a Float НЕ является CGFloat.