Я получаю изображение определенной области, используя MKMapSnapshotter
.
Я рисую линии на изображении, используя UIGraphicsGetCurrentContext()
, чтобы показать многоугольник,
Я могу установить цвет линий, но не могу установить цвет заливки для многоугольника.
Ниже приведен код
private func drawLineOnImage(snapshot: MKMapSnapshotter.Snapshot, coordinates: [CLLocationCoordinate2D]) -> UIImage {
let image = snapshot.image
UIGraphicsBeginImageContextWithOptions(getMapFrameSize(), true, 0)
image.draw(at: CGPoint.zero)
let context = UIGraphicsGetCurrentContext()
context!.setLineWidth(2.0)
context!.setStrokeColor(UIColor.red.cgColor)
context!.move(to: snapshot.point(for: coordinates[0]))
for i in 0...coordinates.count-1 {
context!.addLine(to: snapshot.point(for: coordinates[i]))
context!.move(to: snapshot.point(for: coordinates[i]))
}
context!.strokePath()
context!.setFillColor(UIColor.green.cgColor)
context!.fillPath()
let resultImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resultImage!
}
Как мне этого добиться?
РЕШЕНИЕ:
private func drawLineOnImage(snapshot: MKMapSnapshotter.Snapshot, coordinates: [CLLocationCoordinate2D]) -> UIImage {
let image = snapshot.image
UIGraphicsBeginImageContextWithOptions(getMapFrameSize(), true, 0)
image.draw(at: CGPoint.zero)
let context = UIGraphicsGetCurrentContext()!
context.setLineWidth(2.0)
context.setStrokeColor(annotationColor.cgColor)
context.setFillColor(annotationColor.withAlphaComponent(0.5).cgColor)
var coordinates = coordinates
if let firstPoint = coordinates.first { context.move(to: snapshot.point(for: firstPoint)) }
context.move(to: snapshot.point(for: coordinates[0]))
coordinates.removeFirst()
coordinates.forEach { context.addLine(to: snapshot.point(for: $0)) }
context.drawPath(using: .fillStroke)
context.fillPath()
let resultImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resultImage!
}