Невозможно отобразить трафик в реальном времени по выбранному маршруту на картах Here - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь отобразить информацию о трафике в режиме реального времени на картах Here по моему маршрутуОднако он не отображается на выбранном мной маршруте, но обнаруживается в других местах.Может ли кто-то пролить свет на этот вопрос?Я также приложил скриншоты моего приложения. Снимок экрана 1 Снимок экрана 2

private void createRoute(RouteOptions.TransportMode transportMode, GeoCoordinate startCoodinate, GeoCoordinate endCoodinate) {

       CoreRouter coreRouter = new CoreRouter();
       RoutePlan routePlan = new RoutePlan();
       RouteWaypoint startPoint = new RouteWaypoint(startCoodinate);
       RouteWaypoint destination = new RouteWaypoint(endCoodinate);
       routePlan.addWaypoint(startPoint);
       routePlan.addWaypoint(destination);

       RouteOptions routeOptions = new RouteOptions();
       routeOptions.setTransportMode(transportMode);
       routeOptions.setHighwaysAllowed(false);
       routeOptions.setRouteType(RouteOptions.Type.SHORTEST);
       routeOptions.setRouteCount(1);
       routePlan.setRouteOptions(routeOptions);

       trafficUpdater = TrafficUpdater.getInstance();
       trafficUpdater.enableUpdate(true);

       TrafficUpdater.GetEventsListener myGetEventsListener = new TrafficUpdater.GetEventsListener() {
           @Override
           public void onComplete(List<TrafficEvent> trafficEvent, TrafficUpdater.Error error) {

               if (error == TrafficUpdater.Error.NONE) {
                   // how to use the callback trafficEvent to affect m_mapRoute ?????

               } else {

               }
           }
       };

       TrafficUpdater.Listener myTrafficUpdaterListener = new TrafficUpdater.Listener() {
           @Override
           public void onStatusChanged(TrafficUpdater.RequestState requestState) {
               if (requestState.equals(TrafficUpdater.RequestState.DONE)) {
                   trafficUpdater.getEvents(m_mapRoute.getRoute(), myGetEventsListener);
               }
           }
       };

       CoreRouter.Listener myCoreRouterListener = new CoreRouter.Listener() {
           @Override
           public void onProgress(int i) {
               /* The calculation progress can be retrieved in this callback. */

           }

           @Override
           public void onCalculateRouteFinished(List<RouteResult> routeResults, RoutingError routingError) {
               if (routingError == RoutingError.NONE) {
                   if (routeResults.get(0).getRoute() != null) {
                       m_mapRoute = new MapRoute(routeResults.get(0).getRoute());
                       trafficUpdater.request(m_mapRoute.getRoute(), 100, myTrafficUpdaterListener);
                       m_map.addMapObject(m_mapRoute);
                       m_mapRoute.setRenderType(MapRoute.RenderType.SECONDARY);
                       GeoBoundingBox gbb = routeResults.get(0).getRoute()
                               .getBoundingBox();
                       m_map.zoomTo(gbb, Map.Animation.NONE, Map.MOVE_PRESERVE_ORIENTATION);
                   } else {
                       Toast.makeText(m_activity,
                               “Error:route results returned is not valid”,
                               Toast.LENGTH_LONG).show();
                   }
               } else {
                   Toast.makeText(m_activity,
                           “Error:route calculation returned error code: ” + routingError,
                           Toast.LENGTH_LONG).show();
               }
           }

       };

       coreRouter.calculateRoute(routePlan, myCoreRouterListener);
   }

Результаты получения информации, которую я получаю, приведены ниже:

Traffic flow message.
Event Text: Traffic flow message.
Short Text: FLOW
Severity: HIGH
Affected Streets: [Norra Vallgatan]
Affected Length: 500
From Streets: [Hamngatan]
To Streets: [Slottsgatan]
Speed Limit: 17
Flow: True
Incident: False
Visible: True
Penalty: 0
HIGH
17
Norra Vallgatan

Это результат обратного вызова от вызова TrafficUpdater.GetEventsListener

Редактировать: я включил следующие координаты:

address  =[Triangeln ],
start location =[Lat: 55.61151575555467, Long: 12.994461363051823, Alt: 0.0],
end   location =[Lat: 55.59671, Long: 13.00098, Alt: 1.073741824E9]

address  =[Gothenburg ],
start location =[Lat: 55.61163785303746, Long: 12.994434358214308, Alt: 0.0],
end   location =[Lat: 57.70068, Long: 11.96823, Alt: 1.073741824E9]

Надеюсь, кто-то может помочь!

1 Ответ

0 голосов
/ 24 октября 2018

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

map.disableTrafficAutoUpdate();
trafficUpdater.request(mapRoute.getRoute(), myTrafficUpdaterListener);
...