Мобильные SDK
Kotlin для Android/JVM и Swift для iOS. Типизированные модели и асинхронные запросы к географическим API OSRMRoute.
Подключение через ваш сервер
Храните ключ OSRMRoute на сервере. Приложение передаёт краткосрочный токен сессии вашему защищённому прокси. Прокси проверяет разрешённые endpoint, доступ и лимиты пользователя, добавляя ключ OSRMRoute на сервере. Не передавайте токен приложения в OSRMRoute.
Скачать и установить
Версия 0.1.0 доступна в исходниках. Kotlin не опубликован в Maven Central. Подключите папку Kotlin как модуль Gradle, а Swift — как локальный пакет Xcode.
// Extract the Kotlin archive into your project folder.
include(":osrmroute-kotlin")
project(":osrmroute-kotlin").projectDir = file("osrmroute-kotlin-0.1.0")dependencies {
implementation(project(":osrmroute-kotlin"))
}
// AndroidManifest.xml:
// <uses-permission android:name="android.permission.INTERNET" />Xcode → File → Add Package Dependencies → Add Local
// Select the extracted osrmroute-swift-0.1.0 folder.
// Add the OSRMRoute library to your application target.Kotlin · Android / JVM
import com.osrmroute.OSRMRoute
import com.osrmroute.Coordinate
// Call from a coroutine. Use your app session, not an embedded OSRMRoute key.
val client = OSRMRoute(
baseUrl = "https://your-backend.example/location",
tokenProvider = { applicationSessionToken }
)
val result = client.route(listOf(
Coordinate(latitude = 52.52, longitude = 13.405),
Coordinate(latitude = 52.50, longitude = 13.39)
))
val metres = result.routes.first().distance
// Close the shared client when its owner is disposed.
client.close()Swift · iOS
import Foundation
import OSRMRoute
// Call from an async function. Use your own authenticated backend.
let client = try OSRMRouteClient(
baseURL: URL(string: "https://your-backend.example/location")!,
tokenProvider: { applicationSessionToken }
)
let result = try await client.route([
Coordinate(latitude: 48.8566, longitude: 2.3522),
Coordinate(latitude: 48.8606, longitude: 2.3376)
])
let metres = result.routes[0].distanceМетоды
Типизированные ответы: route, matrix, geocode, reverse и autocomplete. Places возвращает JSON. getJson/getJSON и postJson/postJSON поддерживают другие географические endpoint. Лимиты тарифа и покрытие сохраняются.
Запросы и ошибки
По умолчанию повторов нет. Можно включить до двух повторов GET при 429, 502, 503 или 504. Retry-After свыше 30 секунд или в формате даты не повторяется. Сетевые ошибки и POST автоматически не повторяются.
// Kotlin: OSRMRouteException.status and .code
// Swift: SDKError.http(status:), .transport, .invalidResponse, .invalidInput
// Cancellation propagates to the caller.
// Default timeout: 30 seconds. Configurable maximum: 120 seconds.
// Coordinates: latitude, longitude. Distances: metres. Durations: seconds.
// Matrix null cells mean unreachable, not zero.Только интеграция API
Пакеты не рисуют карты и не предоставляют офлайн-карты или пошаговую навигацию. Kotlin: Android API 21+ и JVM 17; Swift: iOS 15+ и macOS 12+. Тесты пакетов не заменяют проверку на устройствах.
Документация →