iOS MKMapViewCamera旋转动画

iOS MKMapViewCamera旋转动画,ios,mkmapview,google-maps-sdk-ios,mkmapcamera,Ios,Mkmapview,Google Maps Sdk Ios,Mkmapcamera,我一直在摆弄iOS版的谷歌地图和iOS地图已经有一段时间了,在谷歌地图示例代码中,我发现了一个很棒的动画,其中地图始终以一个中心旋转。他们使用的代码是这样的 animationTimer = [[NSTimer alloc]initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:0] interval:1.f/30.f target:self selector:@selector(moveCamera) userInfo:nil repea

我一直在摆弄iOS版的谷歌地图和iOS地图已经有一段时间了,在谷歌地图示例代码中,我发现了一个很棒的动画,其中地图始终以一个中心旋转。他们使用的代码是这样的

animationTimer =   [[NSTimer alloc]initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:0] interval:1.f/30.f target:self selector:@selector(moveCamera) userInfo:nil repeats:YES];

NSRunLoop *defaultRunnLoop = [NSRunLoop currentRunLoop];
[defaultRunnLoop addTimer:preventTimer forMode:NSDefaultRunLoopMode];

- (void)moveCamera{
    GMSCameraPosition *camera = self.mapView.camera;
    float zoom = fmaxf(camera.zoom - 0.1f, 17.5f);
    currentZoomLevel = zoom;
    GMSCameraPosition *newCamera =
    [[GMSCameraPosition alloc] initWithTarget:rotateAnimationCenter
                                         zoom:zoom
                                      bearing:camera.bearing + 10
                                 viewingAngle:camera.viewingAngle + 10];
    [self.mapView animateToCameraPosition:newCamera];
  }
我现在想做的是通过使用MKMapCamera在iOS地图中实现同样的效果,下面是我迄今为止尝试过的代码

- (void)moveCamera{

   MKMapCamera *newCamera = [MKMapCamera cameraLookingAtCenterCoordinate:loc fromEyeCoordinate:[self coordinateFromCoord:loc atDistanceKm:0.001 atBearingDegrees:camera.heading + 2] eyeAltitude:zoom];
   [self.mapView setCamera:newCamera animated:YES];
}



- (CLLocationCoordinate2D)coordinateFromCoord:(CLLocationCoordinate2D)fromCoord
                                 atDistanceKm:(double)distanceKm
                             atBearingDegrees:(double)bearingDegrees
{
    double distanceRadians = distanceKm / 6371.0;
    //6,371 = Earth's radius in km
    double bearingRadians = [self radiansFromDegrees:bearingDegrees];
    double fromLatRadians = [self radiansFromDegrees:fromCoord.latitude];
    double fromLonRadians = [self radiansFromDegrees:fromCoord.longitude];

    double toLatRadians = asin(sin(fromLatRadians) * cos(distanceRadians)
                               + cos(fromLatRadians) * sin(distanceRadians) * cos(bearingRadians) );

    double toLonRadians = fromLonRadians + atan2(sin(bearingRadians)
                                                 * sin(distanceRadians) * cos(fromLatRadians), cos(distanceRadians)
                                                 - sin(fromLatRadians) * sin(toLatRadians));

    // adjust toLonRadians to be in the range -180 to +180...
    toLonRadians = fmod((toLonRadians + 3*M_PI), (2*M_PI)) - M_PI;

    CLLocationCoordinate2D result;
    result.latitude = [self degreesFromRadians:toLatRadians];
    result.longitude = [self degreesFromRadians:toLonRadians];

    return result;
}

- (double)radiansFromDegrees:(double)degrees
{
    return degrees * (M_PI/180.0);
}

- (double)degreesFromRadians:(double)radians
{
    return radians * (180.0/M_PI);
}
MKMapview没有按我希望的方式运行,我更改了相机的各种属性,但没有任何用处。感谢您的帮助