如何旋转箭头图像以及MKMapview旋转

时间:2015-06-08 07:51:40

标签: ios objective-c annotations mkmapview cllocationmanager

我的视图控制器有两个自定义注释视图作为源和&目的地。我成功地在它们之间建立了一条叠加路径,并将目标箭头图标的方向设置在同一条叠加路径中。现在,当我通过按键盘上的“Alt”键在模拟器上旋转地图时,箭头图标不会随着覆盖路径方向旋转。为了旋转箭头图标,我采取了地图视图摄像机角度,并尝试通过该摄像机角度更新箭头图标方向,但似乎无法正常工作。以下是代码段。我怎样才能做到这一点 ?有没有更好的解决方案?任何形式的帮助都会非常明显。感谢。

在我的ViewController.m文件中 -

#import "Annotation.h"

@implementation Annotation

@synthesize coordinate=_coordinate;

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate forTitle:(NSString *)title forSubTitle:(NSString *)territory {
    self = [super init];

    if (self != nil) {
        _coordinate = coordinate;
        _name = title;
        _territory = territory;
    }

    return self;
}

-(CLLocation *) getLocation {
    return [[CLLocation alloc] initWithLatitude: _coordinate.latitude longitude: _coordinate.longitude];
}


//Add a Callout
- (NSString*) title {
    return self.name;
}

//Add a Callout
- (NSString*) subtitle {
    return self.territory;
}

@end

和我的自定义注释文件 -

gblQnbVars

1 个答案:

答案 0 :(得分:0)

哪种方式无效?

您的代码中至少有一个明显的错误。根据CoreLocation文档,CLLocationDirection必须为正数,负值表示无效方向。要在getDirection方法中强制替换字符串:

CLLocationDirection directionBetweenPoints = radiansBearing * 180.0 / M_PI;

有两个如下:

double angle = radiansBearing * 180.0 / M_PI;
CLLocationDirection directionBetweenPoints = (angle>=0)? angle : 360+angle;

希望这会有所帮助。