Как получить текущий уровень масштабирования с карты 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];
}
но как я могу получить текущий масштаб, если я изменю его прикосновением?
Ответы
Ответ 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.