Please help to check.
This is my sample code:
func takeSnapshot(mapView: MapView, passedLocations: [[CLLocation]]) -> UIImage? {
var overlays = [Overlay]()
overlays.append(contentsOf: markers.compactMap { marker in
if let url = URL(string: marker.type.iconURL) {
return CustomMarker(coordinate: marker.location.coordinate, url: url)
}
return nil
})
passedLocations.forEach { locations in
let coordinates = locations.map { $0.coordinate }
if coordinates.count >= 2 {
let path = Path(
coordinates: coordinates
)
path.strokeColor = UIColor(red: 0.376, green: 0.439, blue: 0.941, alpha: 1)
path.strokeWidth = 3
path.fillColor = .clear
overlays.append(path)
}
}
let center = mapView.cameraState.center
let zoom = mapView.cameraState.zoom
let snapshotCamera = SnapshotCamera(lookingAtCenter: center, zoomLevel: zoom > 20 ? 20 : zoom)
if let styleURL = URL(string: StyleURI.streets.rawValue) {
let options = SnapshotOptions(
styleURL: styleURL,
camera: snapshotCamera,
size: mapView.bounds.size)
options.overlays = overlays
let snapshot = Snapshot(
options: options,
accessToken: MapBoxResource.accessToken
)
return snapshot.image
}
return nil
}