Я пытаюсь нарисовать оверлеи с MKOverlay (многоугольник) на MKMapView из данного geo Json файла.
Мой код работает нормально. Полигоны отображаются. Я использую MKGeoJSONDecoder . Я хотел бы использовать текущее местоположение пользователя для отображения данных из текущего наложения. Эти данные также находятся в файле geo Json как свойство. Возможно ли это?
Можно ли сделать оверлеи сенсорными для отображения данных текущего оверлея касанием?
import UIKit
import MapKit
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
if let path = Bundle.main.path(forResource: "directions", ofType: "geojson") {
do {
let url = URL(fileURLWithPath: path)
let data = try Data(contentsOf: url)
if let features = try? MKGeoJSONDecoder().decode(data) as? [MKGeoJSONFeature] {
for feature in features {
if let poly = feature.geometry[0] as? MKPolygon {
mapView.addOverlay(poly)
}
if let multiPoly = feature.geometry[0] as? MKMultiPolygon {
mapView.addOverlay(multiPoly)
}
}
}
} catch {
// print errors
}
}
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
switch overlay {
case is MKPolygon:
let renderer = MKPolygonRenderer(polygon: overlay as! MKPolygon)
renderer.fillColor = UIColor.blue.withAlphaComponent(0.25)
renderer.strokeColor = UIColor.blue
renderer.lineWidth = 1
return renderer
case is MKMultiPolygon:
let renderer = MKMultiPolygonRenderer(multiPolygon: overlay as! MKMultiPolygon)
renderer.fillColor = UIColor.blue.withAlphaComponent(0.25)
renderer.strokeColor = UIColor.blue
renderer.lineWidth = 1
return renderer
default:
return MKOverlayRenderer()
}
}
}