Skip to content

Commit 2eee7f9

Browse files
committed
add high lights for selected region
1 parent 1dde1a6 commit 2eee7f9

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

MapSelection/MapSelection/ViewController.swift

+21-2
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ struct PointsInfoToPass {
2323
}
2424
}
2525

26-
class ViewController: UIViewController {
26+
class ViewController: UIViewController, MKMapViewDelegate {
2727

2828
private var mapView : MKMapView!
2929
private let regionRadius : CLLocationDistance = 1000
30+
private var pointsSelected : [MKPointAnnotation] = []
3031

3132
private var choosePointButton : UIButton = {
3233
let btn = UIButton()
@@ -55,8 +56,9 @@ class ViewController: UIViewController {
5556

5657
private func setUp() {
5758
self.view.backgroundColor = .white
58-
59+
5960
self.mapView = MKMapView(frame: CGRect(x: 0, y: 50, width: self.view.frame.width, height: 300))
61+
self.mapView.delegate = self
6062
let stack = UIStackView()
6163
let stackHeight : CGFloat = 500
6264
stack.translatesAutoresizingMaskIntoConstraints = false
@@ -79,10 +81,21 @@ class ViewController: UIViewController {
7981
mapView.setRegion(coordinateRegion, animated: true)
8082
}
8183

84+
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
85+
86+
if overlay .isKind(of: MKPolygon.self) {
87+
let renderer = MKPolygonRenderer(overlay: overlay)
88+
renderer.fillColor = UIColor(white: 0.5, alpha: 0.5)
89+
return renderer
90+
}
91+
return MKOverlayRenderer(overlay: overlay)
92+
}
93+
8294
@objc func choosePoint(_ sender: UIButton) {
8395
let mapVC = ChoosePointController(info: PointsInfoToPass(del: self, points: []))
8496
let navVC = UINavigationController(rootViewController: mapVC)
8597
navVC.modalPresentationStyle = .fullScreen
98+
self.mapView.removeAnnotations(self.pointsSelected)
8699
self.present(navVC, animated: true)
87100
}
88101

@@ -91,10 +104,16 @@ class ViewController: UIViewController {
91104
extension ViewController : SelectPointsDel {
92105
func didSelectPoints(points: [MKPointAnnotation]) {
93106
guard !points.isEmpty else { return }
107+
self.pointsSelected = points
108+
var coordinates = [CLLocationCoordinate2D]()
94109
for point in points {
95110
self.mapView.addAnnotation(point)
111+
coordinates.append(point.coordinate)
96112
}
97113
self.mapView.setRegion(MKCoordinateRegion(center: points[0].coordinate, latitudinalMeters: self.regionRadius, longitudinalMeters: regionRadius), animated: true)
114+
let polygon = MKPolygon(coordinates: &coordinates, count: coordinates.count)
115+
self.mapView.addOverlay(polygon)
116+
98117
}
99118
}
100119

0 commit comments

Comments
 (0)