diff options
author | Nadia Barbosa <captainbarbosa@users.noreply.github.com> | 2018-02-06 15:39:31 -0500 |
---|---|---|
committer | Nadia Barbosa <captainbarbosa@users.noreply.github.com> | 2018-02-06 15:39:31 -0500 |
commit | 6fcdf33545ca260d194a3845f6437d54ececfb0c (patch) | |
tree | 06da56284abf9acb4798880d291c2bfc1313fe36 | |
parent | e5cc2bc8bd4b63ed802f07ea3fb6a794686e1bd9 (diff) | |
download | qtlocation-mapboxgl-6fcdf33545ca260d194a3845f6437d54ececfb0c.tar.gz |
Add setters to pin annotation properties to force redraw
-rw-r--r-- | platform/ios/src/MGLPinAnnotationView.m | 64 |
1 files changed, 44 insertions, 20 deletions
diff --git a/platform/ios/src/MGLPinAnnotationView.m b/platform/ios/src/MGLPinAnnotationView.m index cfeff1e5cd..68aebc78f9 100644 --- a/platform/ios/src/MGLPinAnnotationView.m +++ b/platform/ios/src/MGLPinAnnotationView.m @@ -8,12 +8,37 @@ _pinColor = [UIColor blueColor]; _strokeColor = [UIColor whiteColor]; _innerColor = [UIColor whiteColor]; + self.backgroundColor = [UIColor clearColor]; return self; } - (void)drawRect:(CGRect)rect { - + [self drawMarkerWithFrame:rect innerColor:_innerColor shadowColor:_shadowColor pinColor:_pinColor strokeColor:_strokeColor]; +} + +- (void)setShadowColor:(UIColor *)shadowColor { + _shadowColor = shadowColor; + [self setNeedsDisplay]; +} + +- (void)setPinColor:(UIColor *)pinColor { + _pinColor = pinColor; + [self setNeedsDisplay]; +} + +- (void)setStrokeColor:(UIColor *)strokeColor { + _strokeColor = strokeColor; + [self setNeedsDisplay]; +} + +- (void)setInnerColor:(UIColor *)innerColor { + _innerColor = innerColor; + [self setNeedsDisplay]; +} + +- (void)drawMarkerWithFrame:(CGRect)frame innerColor:(UIColor*)innerColor shadowColor:(UIColor*)shadowColor pinColor:(UIColor*)pinColor strokeColor:(UIColor*)strokeColor +{ //// General Declarations CGContextRef context = UIGraphicsGetCurrentContext(); @@ -23,8 +48,8 @@ CGContextSaveGState(context); CGContextSetAlpha(context, 0.1); - UIBezierPath* oval2Path = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(10, 40.61, 19, 8)]; - [self.shadowColor setFill]; + UIBezierPath* oval2Path = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(CGRectGetMinX(frame) + 10, CGRectGetMinY(frame) + 40.61, 19, 8)]; + [shadowColor setFill]; [oval2Path fill]; CGContextRestoreGState(context); @@ -34,39 +59,38 @@ { //// Bezier 2 Drawing UIBezierPath* bezier2Path = [UIBezierPath bezierPath]; - [bezier2Path moveToPoint: CGPointMake(18.04, 43.43)]; - [bezier2Path addCurveToPoint: CGPointMake(20.96, 43.43) controlPoint1: CGPointMake(18.85, 44.18) controlPoint2: CGPointMake(20.16, 44.17)]; - [bezier2Path addCurveToPoint: CGPointMake(37, 19.55) controlPoint1: CGPointMake(20.96, 43.43) controlPoint2: CGPointMake(37, 29.24)]; - [bezier2Path addCurveToPoint: CGPointMake(19.5, 2) controlPoint1: CGPointMake(37, 9.86) controlPoint2: CGPointMake(29.16, 2)]; - [bezier2Path addCurveToPoint: CGPointMake(2, 19.55) controlPoint1: CGPointMake(9.84, 2) controlPoint2: CGPointMake(2, 9.86)]; - [bezier2Path addCurveToPoint: CGPointMake(18.04, 43.43) controlPoint1: CGPointMake(2, 29.24) controlPoint2: CGPointMake(18.04, 43.43)]; + [bezier2Path moveToPoint: CGPointMake(CGRectGetMinX(frame) + 18.04, CGRectGetMinY(frame) + 43.43)]; + [bezier2Path addCurveToPoint: CGPointMake(CGRectGetMinX(frame) + 20.96, CGRectGetMinY(frame) + 43.43) controlPoint1: CGPointMake(CGRectGetMinX(frame) + 18.85, CGRectGetMinY(frame) + 44.18) controlPoint2: CGPointMake(CGRectGetMinX(frame) + 20.16, CGRectGetMinY(frame) + 44.17)]; + [bezier2Path addCurveToPoint: CGPointMake(CGRectGetMinX(frame) + 37, CGRectGetMinY(frame) + 19.55) controlPoint1: CGPointMake(CGRectGetMinX(frame) + 20.96, CGRectGetMinY(frame) + 43.43) controlPoint2: CGPointMake(CGRectGetMinX(frame) + 37, CGRectGetMinY(frame) + 29.24)]; + [bezier2Path addCurveToPoint: CGPointMake(CGRectGetMinX(frame) + 19.5, CGRectGetMinY(frame) + 2) controlPoint1: CGPointMake(CGRectGetMinX(frame) + 37, CGRectGetMinY(frame) + 9.86) controlPoint2: CGPointMake(CGRectGetMinX(frame) + 29.16, CGRectGetMinY(frame) + 2)]; + [bezier2Path addCurveToPoint: CGPointMake(CGRectGetMinX(frame) + 2, CGRectGetMinY(frame) + 19.55) controlPoint1: CGPointMake(CGRectGetMinX(frame) + 9.84, CGRectGetMinY(frame) + 2) controlPoint2: CGPointMake(CGRectGetMinX(frame) + 2, CGRectGetMinY(frame) + 9.86)]; + [bezier2Path addCurveToPoint: CGPointMake(CGRectGetMinX(frame) + 18.04, CGRectGetMinY(frame) + 43.43) controlPoint1: CGPointMake(CGRectGetMinX(frame) + 2, CGRectGetMinY(frame) + 29.24) controlPoint2: CGPointMake(CGRectGetMinX(frame) + 18.04, CGRectGetMinY(frame) + 43.43)]; [bezier2Path closePath]; bezier2Path.usesEvenOddFillRule = YES; - [self.pinColor setFill]; + [pinColor setFill]; [bezier2Path fill]; //// Bezier 3 Drawing UIBezierPath* bezier3Path = [UIBezierPath bezierPath]; - [bezier3Path moveToPoint: CGPointMake(18.04, 43.43)]; - [bezier3Path addCurveToPoint: CGPointMake(20.96, 43.43) controlPoint1: CGPointMake(18.85, 44.18) controlPoint2: CGPointMake(20.16, 44.17)]; - [bezier3Path addCurveToPoint: CGPointMake(37, 19.55) controlPoint1: CGPointMake(20.96, 43.43) controlPoint2: CGPointMake(37, 29.24)]; - [bezier3Path addCurveToPoint: CGPointMake(19.5, 2) controlPoint1: CGPointMake(37, 9.86) controlPoint2: CGPointMake(29.16, 2)]; - [bezier3Path addCurveToPoint: CGPointMake(2, 19.55) controlPoint1: CGPointMake(9.84, 2) controlPoint2: CGPointMake(2, 9.86)]; - [bezier3Path addCurveToPoint: CGPointMake(18.04, 43.43) controlPoint1: CGPointMake(2, 29.24) controlPoint2: CGPointMake(18.04, 43.43)]; + [bezier3Path moveToPoint: CGPointMake(CGRectGetMinX(frame) + 18.04, CGRectGetMinY(frame) + 43.43)]; + [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(frame) + 20.96, CGRectGetMinY(frame) + 43.43) controlPoint1: CGPointMake(CGRectGetMinX(frame) + 18.85, CGRectGetMinY(frame) + 44.18) controlPoint2: CGPointMake(CGRectGetMinX(frame) + 20.16, CGRectGetMinY(frame) + 44.17)]; + [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(frame) + 37, CGRectGetMinY(frame) + 19.55) controlPoint1: CGPointMake(CGRectGetMinX(frame) + 20.96, CGRectGetMinY(frame) + 43.43) controlPoint2: CGPointMake(CGRectGetMinX(frame) + 37, CGRectGetMinY(frame) + 29.24)]; + [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(frame) + 19.5, CGRectGetMinY(frame) + 2) controlPoint1: CGPointMake(CGRectGetMinX(frame) + 37, CGRectGetMinY(frame) + 9.86) controlPoint2: CGPointMake(CGRectGetMinX(frame) + 29.16, CGRectGetMinY(frame) + 2)]; + [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(frame) + 2, CGRectGetMinY(frame) + 19.55) controlPoint1: CGPointMake(CGRectGetMinX(frame) + 9.84, CGRectGetMinY(frame) + 2) controlPoint2: CGPointMake(CGRectGetMinX(frame) + 2, CGRectGetMinY(frame) + 9.86)]; + [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(frame) + 18.04, CGRectGetMinY(frame) + 43.43) controlPoint1: CGPointMake(CGRectGetMinX(frame) + 2, CGRectGetMinY(frame) + 29.24) controlPoint2: CGPointMake(CGRectGetMinX(frame) + 18.04, CGRectGetMinY(frame) + 43.43)]; [bezier3Path closePath]; - [self.strokeColor setStroke]; + [strokeColor setStroke]; bezier3Path.lineWidth = 3; [bezier3Path stroke]; //// Oval Drawing - UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(12.5, 12.16, 14, 14)]; - [self.innerColor setFill]; + UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(CGRectGetMinX(frame) + 12.5, CGRectGetMinY(frame) + 12.16, 14, 14)]; + [innerColor setFill]; [ovalPath fill]; } } - } @end |