Устранение неполадок

Ошибки

В случае ошибки будет возвращено тело ответа в стандартном формате, а в качестве кода статуса HTTP будет указан код ошибки.

Ответ содержит объект с одним объектом error со следующими ключами:

  • code – то же самое, что и статус HTTP-ответа.
  • message – краткое описание ошибки.
  • status – код статуса, указывающий на характер ошибки.

Например, если вы отправите недопустимый параметр placeId, то получите следующую ошибку:

{
  "error": {
    "code": 400,
    "message": "\"placeId\" value is malformed: \"aChIJqaknMTeuEmsRUYCD5Wd9ARM\"",
    "status": "INVALID_ARGUMENT"
  }
}

Возможные ошибки:

Код Статус Сообщение Устранение неполадок
400 INVALID_ARGUMENT Указанный ключ недействителен. Ключ API недействителен или не включен в запрос. Убедитесь, что вы указали ключ целиком и включили для него API.
400 INVALID_ARGUMENT "Параметр path содержит недопустимое значение: ☃" Запрос содержит недопустимые аргументы. Наиболее вероятные причины этой ошибки:
  • Проблема с параметром path.
    Убедитесь, что у вас от 1 до 99 баллов. Каждая точка должна быть парой чисел, разделенных запятой, например 48.409114,-123.369158. Точки должны быть разделены вертикальной чертой (|).
  • В запросе указано недопустимое значение параметра placeId.
  • Ваш запрос содержал как placeId, так и path. В каждом запросе можно указать только один из этих параметров.

Эта ошибка не будет возвращена, если для дороги, которой больше не существует, или для места, которое не является дорогой, передается код placeId.

403 PERMISSION_DENIED Запрос от незарегистрированного устройства был заблокирован. Для этого создайте аккаунт, используя Google Developers Console. Запрос был отклонен по одной или нескольким из следующих причин:
  • Ключ API отсутствует или недействителен.
  • В вашем аккаунте не включены платежные функции.
  • Превышено заданное ограничение на использование.
  • Указанный способ оплаты больше не действует (например, истек срок действия кредитной карты).

Сервисами платформы Google Карт можно пользоваться, только если в вашем аккаунте активированы платежные функции, а в запросах к API указан действительный ключ API. Чтобы устранить проблему, выполните следующие действия:

404 NOT_FOUND Для этого сервиса требуется HTTPS. Убедитесь, что вы отправляете запросы на адрес https://roads.googleapis.com/, а не http://roads.googleapis.com/.
429 RESOURCE_EXHAUSTED Запрос был ограничен из-за достижения лимита запросов для проекта. Вы превысили лимит запросов, заданный в консоли Google Cloud Platform. Обычно это ограничение устанавливается как количество запросов в день, количество запросов в 100 секунд и количество запросов в 100 секунд на пользователя. Этот лимит должен быть настроен таким образом, чтобы один или небольшая группа пользователей не исчерпали дневную квоту, но при этом все пользователи имели разумный доступ. Подробнее о том, как настроить ограничения на использование API…

Экспоненциальная выдержка

Если запрос не удается выполнить, повторите его с экспоненциальной выдержкой. Например, если запрос не удался, повторите попытку через секунду, если снова не удался – через две секунды, затем через четыре и так далее. Это позволяет избежать перегрузки серверов Google из-за большого количества запросов, которые клиенты пытаются отправить повторно.

Часто задаваемые вопросы по устранению неполадок

Проблемы с реализацией

Как часто нужно определять местоположение автомобиля?
Для получения качественных результатов привязки к дорогам рекомендуется использовать интервал от 1 до 10 секунд.
Есть ли ограничение на количество баллов, которые можно отправить за один запрос?
Да, в запросе может быть не более 100 точек.
С какой точностью следует хранить пары широты и долготы, полученные с помощью привязки к дорогам?
Чтобы привязанные к дорогам маршруты были точными на всех уровнях масштабирования, даже на максимальном, храните привязанные пары координат с точностью до семи знаков после запятой.
Можно ли использовать закодированные ломаные линии для отображения привязанных путей?
Точность закодированных ломаных линий составляет пять знаков после запятой, что приводит к погрешности примерно в два метра. Поэтому закодированные ломаные линии не подходят, если вы хотите, чтобы привязанные маршруты следовали по дороге при высоких уровнях масштабирования.

Распространенные проблемы

Некоторые точки не привязываются, или в привязанных путях есть пробелы. Как это исправить?
  • Если вы собираете точки через определенные интервалы времени, убедитесь, что они достаточно короткие (от 1 до 10 секунд). Если интервал будет больше (например, 60 секунд), алгоритм привязки к дорогам может не определить пройденный маршрут с достаточной точностью.
  • Если вы вручную отмечаете точки на карте, то можете легко создать путь с небольшим количеством точек или с точками, расположенными далеко друг от друга. В таких случаях алгоритм привязки работает плохо. Алгоритм привязки лучше всего работает с точками, расположенными близко друг к другу. Попробуйте демонстрацию привязки к дорогам или используйте инспектор дорог, чтобы проверить свои пути.
Почему при увеличении масштаба привязанные пути выглядят неровными или немного смещены относительно дороги?
  • Вы усекаете точность привязанных пар широты и долготы перед их отображением? Если хранить привязанные пары широты и долготы с точностью менее семи знаков после запятой, при отображении привязанного маршрута на карте могут возникать ошибки.
  • Используете ли вы кодированные ломаные линии? Закодированные полилинии усекают пары координат широты и долготы до пяти знаков после запятой, что приводит к ошибке в несколько метров. В результате линии получаются неровными или при высоком уровне масштабирования немного смещаются относительно дороги.

Если ни один из этих вариантов не подходит, возможно, фрагменты карты были недавно обновлены, из-за чего они не синхронизированы с индексом дорог, используемым для привязки. Если проблема возникает только с некоторыми запросами, скорее всего, причина именно в этом. Поскольку Google Карты регулярно обновляются, это может происходить время от времени, особенно если вы часто просматриваете старые маршруты на карте (например, маршруты, привязанные несколько недель назад). Чтобы обеспечить оптимальное отображение, следует привязывать старые маршруты к дорогам непосредственно перед показом на карте. Это позволит свести к минимуму несоответствия между плитками карты и индексом дорог, используемым для привязки.

Почему ограничение скорости на дороге X может отображаться неправильно?
Информация об ограничениях скорости поступает из разных источников, которые могут отличаться по точности и охвату. Если вы заметили, что ограничения скорости для определенного типа дорог или в определенном районе постоянно указаны неверно, сообщите нам об этом, выполнив следующие действия:
  1. Откройте Google Карты на компьютере или в приложении для Android.
  2. Откройте меню слева.
  3. Нажмите Отправить отзыв. Примечание. Возможно, вам будет предложено войти в аккаунт.
  4. Выберите Редактировать карту.
  5. Выберите сегмент дороги, который хотите изменить.
  6. Нажмите Далее.
  7. В поле "Другое" укажите, что ограничение скорости для этой дороги задано неверно.
  8. Нажмите Отправить.
Здесь также можно сообщить о других проблемах, например если у дороги неправильное название, она неверно нарисована, закрыта или является частной.
Почему привязанный к дороге маршрут срезает углы, а не следует дороге?
Чтобы устранить проблему, проверьте следующее:
  • Убедитесь, что параметр interpolate имеет значение true.
  • Убедитесь, что исходные точки данных собираются с достаточно малыми интервалами (каждые 1–10 секунд).
Почему в привязанном пути для дороги без изменений ограничения скорости возвращается много сегментов?
Если для параметра interpolate задано значение true, запрос привязки к дорогам возвращает ломаную линию, которая повторяет изгибы дороги на поворотах и круговых перекрестках. Если дорога изгибается, возвращается несколько сегментов, даже если ограничение скорости не меняется. Это позволяет создать ломаную линию, которая точно повторяет геометрию дороги.