osrmroute
Документация

Мобильные SDK

Kotlin для Android/JVM и Swift для iOS. Типизированные модели и асинхронные запросы к географическим API OSRMRoute.

Подключение через ваш сервер

Храните ключ OSRMRoute на сервере. Приложение передаёт краткосрочный токен сессии вашему защищённому прокси. Прокси проверяет разрешённые endpoint, доступ и лимиты пользователя, добавляя ключ OSRMRoute на сервере. Не передавайте токен приложения в OSRMRoute.

Скачать и установить

Версия 0.1.0 доступна в исходниках. Kotlin не опубликован в Maven Central. Подключите папку Kotlin как модуль Gradle, а Swift — как локальный пакет Xcode.

settings.gradle.kts
// Extract the Kotlin archive into your project folder.
include(":osrmroute-kotlin")
project(":osrmroute-kotlin").projectDir = file("osrmroute-kotlin-0.1.0")
app/build.gradle.kts
dependencies {
    implementation(project(":osrmroute-kotlin"))
}
// AndroidManifest.xml:
// <uses-permission android:name="android.permission.INTERNET" />
Xcode · Swift Package Manager
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

Kotlin
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

Swift
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 / Swift
// 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+. Тесты пакетов не заменяют проверку на устройствах.

Документация →
Команда поддержки

Поддержка OSRMRoute

Напишите нашей команде напрямую

МЫ ГОТОВЫ ПОМОЧЬ

Чем вам помочь?

Задайте вопрос об интеграции, оплате или аккаунте. Ответы появятся в этой беседе.

Ваши чаты

Ваши чаты появятся здесь.