Authored by Vladimir Vyskocil

r607 doesn't take care about path rotation, now all layers (markers and paths) a…

…re rotated or not according to their allowRotate property 
... ... @@ -47,6 +47,7 @@
/// Backpointer to map; we need this reference so we can access the projections...
RMMapContents *mapContents;
CGAffineTransform rotationTransform;
}
- (id)initForContents: (RMMapContents *)contents;
... ... @@ -64,7 +65,7 @@
/// \deprecated name will change after 0.5
- (void) correctPositionOfAllSublayers;
- (BOOL) hasSubLayer:(CALayer *)layer;
- (void) setRotationOfAllSublayers:(float) angle;
//-(void) drawRect: (CGRect)rect;
//-(CALayer*) layer;
... ...
... ... @@ -39,6 +39,7 @@
sublayers = [[NSMutableArray alloc] init];
mapContents = _contents;
self.masksToBounds = YES;
rotationTransform = CGAffineTransformIdentity;
return self;
}
... ... @@ -61,6 +62,9 @@
RMProjectedPoint location = [layer_with_proto projectedLocation];
layer_with_proto.position = [[mapContents mercatorToScreenProjection] projectXYPoint:location];
}
if(!layer_with_proto.enableRotation){
[layer_with_proto setAffineTransform:rotationTransform];
}
}
}
... ... @@ -188,4 +192,18 @@
return [sublayers containsObject:layer];
}
- (void) setRotationOfAllSublayers:(float) angle
{
rotationTransform = CGAffineTransformMakeRotation(angle); // store rotation transform for subsequent layers
@synchronized(sublayers) {
for (id layer in sublayers)
{
CALayer<RMMovingMapLayer>* layer_with_proto = (CALayer<RMMovingMapLayer>*)layer;
if(!layer_with_proto.enableRotation){
[layer_with_proto setAffineTransform:rotationTransform];
}
}
}
}
@end
... ...
... ... @@ -1036,7 +1036,7 @@ static BOOL _performExpensiveOperations = YES;
- (void)setRotation:(float)angle
{
[markerManager setRotation:(-angle)]; // rotate markers back
[overlay setRotationOfAllSublayers:(-angle)]; // rotate back markers and paths if theirs allowRotate=NO
}
... ...
... ... @@ -42,5 +42,6 @@
@property (assign, nonatomic) RMProjectedPoint projectedLocation;
@property (assign) BOOL enableDragging;
@property (assign) BOOL enableRotation;
@end
... ...
... ... @@ -48,9 +48,11 @@
UIColor *textBackgroundColor;
BOOL enableDragging;
BOOL enableRotation;
}
@property (assign, nonatomic) RMProjectedPoint projectedLocation;
@property (assign) BOOL enableDragging;
@property (assign) BOOL enableRotation;
@property (nonatomic, retain) NSObject* data;
@property (nonatomic, retain) UIView* label;
... ...
... ... @@ -33,6 +33,7 @@
@synthesize projectedLocation;
@synthesize enableDragging;
@synthesize enableRotation;
@synthesize data;
@synthesize label;
@synthesize textForegroundColor;
... ... @@ -53,6 +54,7 @@
textForegroundColor = [UIColor blackColor];
textBackgroundColor = [UIColor clearColor];
enableDragging = YES;
enableRotation = NO;
}
return self;
}
... ...
... ... @@ -63,6 +63,7 @@
BOOL scaleLineWidth;
BOOL enableDragging;
BOOL enableRotation;
float renderedScale;
RMMapContents *contents;
... ... @@ -78,6 +79,7 @@
@property BOOL scaleLineWidth;
@property (nonatomic, assign) RMProjectedPoint projectedLocation;
@property (assign) BOOL enableDragging;
@property (assign) BOOL enableRotation;
@property (readwrite, assign) UIColor *lineColor;
@property (readwrite, assign) UIColor *fillColor;
... ...
... ... @@ -37,6 +37,7 @@
@synthesize scaleLineWidth;
@synthesize projectedLocation;
@synthesize enableDragging;
@synthesize enableRotation;
#define kDefaultLineWidth 100
... ... @@ -60,6 +61,7 @@
scaleLineWidth = NO;
enableDragging = YES;
enableRotation = YES;
return self;
}
... ...