Все работает отлично, когда я тестирую координаты в США, Японии или Гонконге, если моя сеть находится за пределами материкового Китая.
Однако, когда мое устройство (или симулятор) подключено к сети материкового Китая и всегда выдает ошибку: «Маршруты недоступны»
Некоторые результаты теста:
Гонконг → Гонконг:
Гонконг → Шанхай:
Шанхай → Гонконг:
Япония (Токио → Токио):
США (Нью-Йорк) → Нью-Йорк):
Код: Выделить всё
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)")
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-in-china
Мобильная версия