24

我使用具有数字值的方法相机,如下所示:

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

但是如果我通过触摸更改它,我如何获得当前缩放?

4

4 回答 4

38

好的,我找到了解决方案,获取当前缩放:

CGFloat currentZoom = self.MapView.camera.zoom;

然后在相机中使用它:

camera = [GMSCameraPosition cameraWithLatitude:locationManager.location.coordinate.latitude
                                     longitude:locationManager.location.coordinate.longitude
                                          zoom:currentZoom];
self.MapView.camera = camera;
于 2013-08-01T06:26:48.427 回答
7

如果您想在用户与地图交互时检测缩放级别。我们可以使用谷歌地图委托方法

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

不要忘记添加GMSMapViewDelegate

于 2017-11-21T20:47:22.677 回答
5

swift 4.x 我的两分钱:

let currZoom = self.googleMapView.camera.zoom

BUT 是一个浮点数,而不是一个 CGFloat,就像第一个 objC 示例一样。在 Swift 中,浮点数不是 CGFloat。

于 2018-09-17T17:20:55.090 回答
4

你也可以使用 animateToZoom。

self.mapView.animateToZoom(10)
于 2016-04-08T13:34:31.933 回答