如何在 SwiftUI Map() 中显示方向

Hat*_*tim 6 apple-maps swiftui

我在 SwiftUI 3 和 Xcode 13+ 中使用 Map


import SwiftUI
import CoreLocation
import CoreLocationUI
import MapKit

Map(coordinateRegion: $mapViewModel.region,
                    interactionModes: [.all],
                    showsUserLocation: true,
                    userTrackingMode: .constant(.none),
                    annotationItems: annotations) { place in
                    MapAnnotation(coordinate: place.placemark.location!.coordinate) {
                        MapPinView()
                    }
                }
                    .tint(.blue)
                    .environmentObject(mapViewModel)
                    .edgesIgnoringSafeArea(.all)
                    .onAppear {
                        mapViewModel.checkLocationServicesIsEnabled()
                        
                    }
Run Code Online (Sandbox Code Playgroud)

所以,我在这里使用 Map(...)

有没有显示两点之间路线的示例?

谢谢

小智 1

从本教程https://www.youtube.com/watch?v=H6pmm62axCg

您可以在这里找到来源: https: //github.com/apatronl/YouTube/blob/main/Directions/Directions/ContentView.swift

这是相关的代码片段:

let request = MKDirections.Request()
    request.source = MKMapItem(placemark: p1)
    request.destination = MKMapItem(placemark: p2)
    request.transportType = .automobile

    let directions = MKDirections(request: request)
    directions.calculate { response, error in
      guard let route = response?.routes.first else { return }
      mapView.addAnnotations([p1, p2])
      mapView.addOverlay(route.polyline)
      mapView.setVisibleMapRect(
        route.polyline.boundingMapRect,
        edgePadding: UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20),
        animated: true)
      self.directions = route.steps.map { $0.instructions }.filter { !$0.isEmpty }
    }
Run Code Online (Sandbox Code Playgroud)

  • 这没有使用 SwiftUI 的 Map() ..我正在使用这个 https://developer.apple.com/documentation/mapkit/map (2认同)