-
Notifications
You must be signed in to change notification settings - Fork 0
mapkit polyline
tyler edited this page Oct 10, 2023
·
2 revisions
1. coordinates λ³μ μμ±
2. Polyline Overlay μΆκ°
3. μμ±ν Polyline 컀μ€ν
-
CLLocationCoordinate2Dνμ μΌλ‘ λͺ¨μΈ μ’νμ λ°°μ΄μ μμ±ν©λλ€.
@State private var coordinates = [
CLLocationCoordinate2D(latitude: 37.53958, longitude: 127.07435),
CLLocationCoordinate2D(latitude: 37.54132, longitude: 127.07575),
CLLocationCoordinate2D(latitude: 37.54233, longitude: 127.07631),
CLLocationCoordinate2D(latitude: 37.54215, longitude: 127.07750),
CLLocationCoordinate2D(latitude: 37.53936, longitude: 127.07687),
CLLocationCoordinate2D(latitude: 37.53958, longitude: 127.07435)
]- λ§λ
coordinatesλ³μλ₯Ό μ¬μ©νμ¬ Polyline μ λ§λλλ€.
let polyline = MKPolyline(coordinates: coordinates, count: coordinates.count)
mapView.addOverlay(polyline) func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if let routePolyline = overlay as? MKPolyline {
let renderer = MKPolylineRenderer(polyline: routePolyline)
renderer.strokeColor = UIColor.orange
renderer.lineWidth = 3
renderer.alpha = 0.5
return renderer
}
return MKOverlayRenderer()
}- μλμ κ°μ΄ currentStep μ κΈ°μ€μΌλ‘ polyline μ νμ± ν©λλ€.
- currentStep μ λΆλͺ¨λ·°μμ μμ°¨μ μΌλ‘ μ¬λ €μ€λλ€.
// νμμλ λΆλΆμ μλ΅νμ΅λλ€.
var currentStep: Int
func makeUIView(context: Context) -> MKMapView {
let polyline = MKPolyline(coordinates: coordinates, count: currentStep)
mapView.addOverlay(polyline)
}
func updateUIView(_ view: MKMapView, context: Context) {
// νμ¬ μ€ν
μ λ°λΌ μλ‘μ΄ μ λΆμ μΆκ°νκΈ° μ μ μ΄μ μ λΆμ μ κ±°ν©λλ€.
let overlays = view.overlays.filter { $0 is MKPolyline }
view.removeOverlays(overlays)
// νμ¬ μ€ν
μ λ°λΌ μλ‘μ΄ μ λΆμ μΆκ°ν©λλ€.
let subCoordinates = Array(coordinates.prefix(upTo: currentStep))
let currentSegment = MKPolyline(coordinates: subCoordinates, count: subCoordinates.count)
view.addOverlay(currentSegment)
}