Alles funktioniert perfekt, wenn ich mit Koordinaten in den USA, Japan oder Hongkong teste, ob sich mein Netzwerk außerhalb des chinesischen Festlandes befindet.
Wenn mein Gerät (oder Simulator) jedoch mit einem Netzwerk auf dem chinesischen Festland verbunden ist, schlägt es immer mit der Fehlermeldung „Wegbeschreibung nicht verfügbar“ fehl.
Einige Testergebnisse:
Hongkong → Hongkong:
Hongkong → Shanghai:
Shanghai → Hongkong:
Japan (Tokio → Tokio):
USA (New York → New York):
Code: Select all
struct TravelTimeCalculator {
static func calculateTravelTime(
from: CLLocationCoordinate2D,
to: CLLocationCoordinate2D
) async throws -> TimeInterval {
let sourcePlacemark = MKPlacemark(coordinate: from)
let destPlacemark = MKPlacemark(coordinate: to)
let request = MKDirections.Request()
request.source = MKMapItem(placemark: sourcePlacemark)
request.destination = MKMapItem(placemark: destPlacemark)
request.transportType = .automobile
let directions = MKDirections(request: request)
let response = try await directions.calculate()
guard let route = response.routes.first else {
throw NSError(domain: "No route found", code: -1)
}
return route.expectedTravelTime
}
}
@MainActor
struct TravelTimeView: View {
@State private var travelTime: String = "Calculating..."
var body: some View {
VStack {
Text(travelTime)
.font(.title2)
}
.task {
do {
// Example: Tokyo Station → Shibuya Station
let from = CLLocationCoordinate2D(latitude: 35.6811441, longitude: 139.7644865)
let to = CLLocationCoordinate2D(latitude: 35.6580382, longitude: 139.6990609)
let seconds = try await TravelTimeCalculator.calculateTravelTime(from: from, to: to)
let minutes = Int(seconds / 60)
travelTime = "🚗 Estimated \(minutes) min"
} catch {
travelTime = "❌ Route not available"
print("Route error: \(error.localizedDescription)")
}
}
}
}
Mobile version