Как разрешить навигацию только по определенным ссылочным ссылкам в Here API (с использованием пользовательских маршрутов или иным образом)? - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь использовать Here Telematics Api, чтобы разрешить только определенные сегменты дороги. Сначала мы выполняем сопоставление маршрутов, чтобы получить linkIds, а затем генерируем разрешающий и запрещающий список ссылок (или сегментов дороги), по которым мы хотим перемещаться. Количество ссылок в запрещенном списке превышает 30 000.

Теперь мы хотим использовать это в навигационном интерфейсе карт Here. Для этого я нашел 2 способа - 1) использование параметра запроса avoLinks и 2) использование пользовательских маршрутов и наложений карт.

Это то, что я пробовал до сих пор.

1. Использование навигации API: Я вызвал навигационный API с параметром запроса avoidLinks. Вот как это будет выглядеть:

curl https://fleet.api.here.com/2/calculateroute.json?app_id=XXXX&app_code=XXXX&mode=fastest;car;traffic:disabled&waypoint0=52.512623,13.321814&waypoint1=52.587389,13.279046&avoidLinks=linkId1,linkId2....

Но поскольку это вызов get, я не могу выйти за пределы 20000 ссылок, потому что в противном случае я получаю код состояния 414, то есть запрос URI слишком длинный. Итак, этот маршрут закрыт!

2. Использование оверлеев и навигации: Затем я посмотрел на эту ссылку и попытался использовать собственные маршруты. Я использовал эту документацию для создания оверлейной карты с использованием оверлейных программ api:

curl https://cre.api.here.com/2/overlays/upload.json

Но это опять-таки GET API, и он не допускает более ~ 1000 ссылок, так как я снова получаю http-код 414, т.е. запрос URI слишком длинный.

Это наложение можно использовать

 curl http://cre.api.here.com/2/calculateroute.json
  ?waypoint0=50.10951,8.68951
  &waypoint1=50.10703,8.68222
  &mode=fastest;car;traffic:disabled
  &overlays=overlaydemo1
  &storage=readonly
  &app_id=XXXX
  &app_code=XXXX

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

Не могли бы вы помочь мне как-то решить эту проблему?

1 Ответ

1 голос
/ 18 июня 2019

Получить API для загрузки оверлея используется только для небольших запросов.Для более крупных вы должны использовать пост API.Вы можете прочитать больше об этом здесь: https://developer.here.com/documentation/custom-routing-extension/topics/resource-overlay.html.

Для небольших примеров оверлеи могут быть отправлены в запросе GET, но большие оверлеи должны быть отправлены через запрос POST, либо как application /x-www-form-urlencoded или как составная часть с одной частью с именем overlay_spec.

...