我可以在Mapbox SDK中使用混合模式和MGLPolygon吗?

时间:2017-12-25 14:36:18

标签: ios objective-c mkmapview mapbox mglmapview

我正在使用MGLPolygon在mapView上使用Mapbox SDK进行叠加。

以下是我目前的代码:

- (UIColor *)mapView:(MGLMapView *)mapView fillColorForPolygonAnnotation:(MGLPolygon *)annotation
{
    return [UIColor colorWithWhite:1.0 alpha:0.5];
}

但是MapBox只提供委托来填充颜色。 MapKit可以重新定义MKPolygonRederer。以下是一个例子。 (来自Custom MKOverlayRenderer drawMapRect function not drawing polygons):

class MyCustomMapRenderer: MKPolygonRenderer {

    override func drawMapRect(mapRect: MKMapRect, zoomScale: MKZoomScale, inContext context: CGContext) {
        //super.drawMapRect(mapRect, zoomScale: zoomScale, inContext: context)

        CGContextSaveGState(context)
        CGContextSetBlendMode(context, CGBlendMode.Exclusion)
        CGContextSetFillColorWithColor(context, fillColor!.CGColor)
        CGContextSetStrokeColorWithColor(context, UIColor.whiteColor().CGColor)
        CGContextSetLineWidth(context, 1.0)

        if polygon.pointCount > 1 {
            CGContextBeginPath(context)

            let point = pointForMapPoint(polygon.points()[0])
            CGContextMoveToPoint(context, CGFloat(point.x), CGFloat(point.y))
            for i in 1 ..< polygon.pointCount {
                let point = pointForMapPoint(polygon.points()[i])
                CGContextAddLineToPoint(context, CGFloat(point.x), CGFloat(point.y))
            }

            CGContextClosePath(context)
            CGContextDrawPath(context, CGPathDrawingMode.FillStroke)
        }
        CGContextRestoreGState(context)
    }

}

请给我一些线索。提前谢谢。

0 个答案:

没有答案