Есть ли способ показать информацию о движении только на конкретном маршруте? - PullRequest
0 голосов
/ 26 апреля 2019

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

Существует ли API-интерфейс карты HERE для этого решения?

Существует одно решение, заданное картой HERE, но оно будет отображать информацию о трафике на всей видимой карте:

https://developer.here.com/documentation/android-premium/dev_guide/topics/traffic.html

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Вы можете отключить отображение всего трафика и включить только on route отображение трафика следующим образом:

map.mapTrafficLayer?.setEnabled(MapTrafficLayer.RenderLayer.FLOW, false)                  
map.mapTrafficLayer?.setEnabled(MapTrafficLayer.RenderLayer.ONROUTE, true)
map?.isTrafficInfoVisible = true

mapRoute.isTrafficEnabled = true
0 голосов
/ 26 апреля 2019

Кажется, в Here Android SDK API нет решения "из коробки", но в любом случае вы можете использовать обходной путь и получить оценку трафика через Routing REST API. Например, для Автомобильный маршрут от A до B запрос типа:

https://route.api.here.com/routing/7.2/calculateroute.json?waypoint0=52.5160%2C13.3779&waypoint1=52.5206%2C13.3862&mode=fastest%3Bcar%3Btraffic%3Aenabled&app_id=devportal-demo-20180625&app_code=9v2BkviRwi9Ot26kp2IysQ&departure=now

вы получили ответ с тегами "length" и "travelTime" для каждой ноги, например:

...
"length": 953,
"travelTime": 316,
...

и вы можете рассчитать скорость = длина.значение / путешествия.время. Также вы можете использовать сводку ответов "distance" и "trafficTime" для всего маршрута:

...
"summary": {
      "distance": 953,
      "trafficTime": 316,
...

Подход для цветовой части маршрута, описанной в ответе на на этот вопрос:

Вы можете извлечь геометрию маршрута, чтобы получить список GeoCoordinates составляющий полилинию:

geoCoordinates = mapRoute.getRoute().getRouteGeometry()

Затем вы можете нарисовать части маршрута в различных цветах, построив новые полилинии из этих координат:

GeoPolyline geoPolyline = new GeoPolyline();
for (GeoCoordinates point : geoCoordinates) {
    if (<your condition>){
        geoPolyline.add(point);
    }
}
MapPolyline mapPolyline = new MapPolyline(geoPolyline);
mapPolyline.setLineColor(<color>);
map.addMapObject(mapPolyline)

от Teriblus и этот комментарий:

... Это очень хорошо работает, если просто нарисовать другой маршрут между точки, которые мне нужны, и я могу контролировать, какой объект маршрута я отображаю на карта с кнопкой и для навигации я использую тот же маршрут. ...

...