Тарифы
Миграция

Та же спецификация тайлов, другой счёт.

Векторные тайлы следуют той же спецификации MVT, а документ стиля — той же схеме, поэтому сторона рендеринга переезжает переименованием. Ответы поиска и маршрутов отличаются сильнее, чем тайлы.

  • Совместимость по MVT и спецификации стиля: ваш рендерер остаётся
  • Isochrone ложится прямо на изохроны, включая диапазоны по расходу
  • Профили грузовиков входят в базу, а не в отдельный уровень продукта
  • Опубликованные тарифы вместо пакетов загрузок карты по уровням

Замена

Хост и заголовок авторизации. Всё ниже — карта параметров.

diff
- https://api.mapbox.com?access_token=YOUR_TOKEN
+ https://api.apinavi.com
+ Authorization: Bearer $APINAVI_KEY

Карта параметров

Search & navigation

MapboxApiNaviNote
GET /geocoding/v5/mapbox.places/{q}.jsonGET /v1/geocode?q=
GET /search/geocode/v6/reverseGET /v1/revgeocode?at=
features[].place_nameitems[].address.label
features[].center [lng,lat]items[].position {lat,lng}Axis order differs: GeoJSON positions are lng-first, our object is keyed.
GET /directions/v5/mapbox/drivingGET /v1/routes?transportMode=car
GET /directions-matrix/v1POST /v1/matrix
GET /isochrone/v1GET /v1/isolines

Tiles & styles

MapboxApiNaviNote
GET /v4/{tileset}/{z}/{x}/{y}.mvtGET /v1/tiles/vector/{z}/{x}/{y}.mvt
GET /styles/v1/{user}/{style}GET /v1/styles/{style}Style JSON follows the same spec; layer ids differ.
GET /styles/v1/.../static/GET /v1/static

Где это не замена один в один

Порядок координат

Mapbox возвращает center как [lng, lat]. У нас position — объект с ключами lat и lng: неоднозначности нет, но нужен небольшой адаптер.

Идентификаторы слоёв стиля

Обе стороны следуют спецификации стиля, но идентификаторы слоёв отличаются. Форку стиля Mapbox нужно переназначить id — соответствия перечислены в документации.

Идентификаторы объектов

Идентификаторы объектов Mapbox нестабильны между обновлениями данных и не взаимозаменяемы с нашими. Сохранённые ссылки нужно перевывести.

Клиентский SDK навигации

Мы отдаём API маршрутизации, а не SDK пошаговой навигации с голосовыми подсказками. Этот слой остаётся вашим или их.

Как это обычно делают

  1. 01

    Тень

    Неделю отправляйте копию боевого трафика обоим. Для пользователя ничего не меняется.

  2. 02

    Сравнение

    Сравните поле за полем на тех эндпоинтах, которыми реально пользуетесь. Обычно находится два-три настоящих отличия, а не двадцать.

  3. 03

    Разделение

    Переведите 5%, затем 50%, наблюдая за долей ошибок и задержкой по регионам.

  4. 04

    Переключение

    Переведите остальное, оставьте старый ключ живым на пару недель, потом отзовите.

Режим двойного прогона

Направьте часть трафика обоим поставщикам и сравните ответы. В консоли видно расхождение по полям на каждом эндпоинте, поэтому переключение делается по данным, а не по выборочной проверке.

Если решите уйти

Те же таблицы читаются в обратную сторону, а эндпоинт экспорта отдаёт ваши геозоны, стили и результаты пакетов в открытых форматах. Гайд по миграции, который смотрит только внутрь, — это тревожный признак, а не фича.

Чек-лист переключения

  • Лимиты на новом ключе подняты до разделения трафика, а не после
  • Потолок расходов выставлен на первый полный месяц
  • Сохранённые идентификаторы мест перевыведены, если вы их храните
  • Декодер полилинии проверен на известном маршруте
  • Покрытие сверено по странам из длинного хвоста трафика
  • Старый ключ отозван и удалён из секретов

Сравнить с HERE