Как динамически хранить координаты широты и долготы на основе текущего mapView?

У меня есть следующий код, который выполняется, если пользователь нажимает кнопку уменьшения или увеличения:

 - (void)zoomHandler:(CGFloat)currentZoom
 {
GMSCameraPosition *camera = [GMSCameraPosition **cameraWithLatitude:40.790218 longitude:-73.959722** zoom:currentZoom];
self.mapView.camera = camera;
 }

Однако, если пользователь отойдет от указанных выше координат по умолчанию и нажмет любую кнопку, он/она вернется к указанным выше координатам по умолчанию. Я хочу, чтобы пользователь мог увеличивать/уменьшать масштаб текущего отображаемого mapView и не возвращаться автоматически к координатам, объявленным в методе выше.

Как мне этого добиться?


person konyv12    schedule 19.03.2017    source источник


Ответы (1)


Создайте две переменные для хранения вашего текущего координатного местоположения:

CLLocationDegrees latitude,longitude;

       -(void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position
        {
        CGPoint point = self.mapView.center;
        CLLocationCoordinate2D coor = [mapView.projection coordinateForPoint:point];
        longitude = coor.longitude;
        latitude = coor.latitude;
        }

Вы можете использовать код в приведенном ниже методе для масштабирования:

        -(void)zoomInAction {
        CGFloat currentZoom = self.mapView.camera.zoom;
        currentZoom = currentZoom + 1.0;

        if(currentZoom < self.mapView.maxZoom) {
          GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:latitude
                                                                  longitude:longitude
                                                                       zoom:currentZoom];
          self.mapView.camera = camera;
          [self.mapView animateToCameraPosition:camera];
          }
        }

        -(void)zoomOutAction {
        CGFloat currentZoom = self.mapView.camera.zoom;
        currentZoom = currentZoom - 1.0;
        if(currentZoom > self.mapView.minZoom) {
         GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:latitude
                                                                 longitude:longitude
                                                                      zoom:currentZoom];
           self.mapView.camera = camera;
           [self.mapView animateToCameraPosition:camera];
           }
         }
person nikdange_me    schedule 19.03.2017