Здесь API: Получение неверной информации о маршруте транзита с помощью Android SDK - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь получить базовый транзитный маршрут, используя Android SDK, но мне не хватает нужных мне данных.

По сути, я хочу получить те же данные, что и планировщик Here We Go. Где вы можете увидеть шаги, время их отправления и прибытия, какой тип транзита и на какой платформе он отправляется или прибывает.

Так что, когда я пытаюсь использовать RoutePlan в Android SDK, это дает мне неверный tta, это примерно на час больше, чем должно быть без каких-либо дополнительных шагов, насколько я могу видеть. Он также не показывает платформы и время отправления / прибытия шагов. То же самое относится и к отправке запроса маршрута в API маршрута в Почтальоне

Мой вопрос: как я могу получить те же данные, что и планировщик Here We Go, и приложение, используя Android SDK?

Обновление: на моей странице проекта Here также указано «Предполагаемый общественный транспорт» для большинства моих запросов, это так и должно быть или это должно быть что-то еще?

Обновление 2: я пытался использовать карты «1018» * 1 , почтальон [код ниже] и Android SDK [код ниже] для одного и того же маршрута и получил очень разные результаты.

Запрос почтальона: https://route.api.here.com/routing/7.2/calculateroute.json?app_id=app_id&app_code=app_code&waypoint0=52.3146653,5.0248838&waypoint1=52.6381,4.740599999999972&departure=now&mode=fastest;publicTransport&combineChange=true

С результатом:

{
"response": {
    "metaInfo": {
        "timestamp": "2019-06-18T07:59:29Z",
        "mapVersion": "8.30.97.151",
        "moduleVersion": "7.2.201923-3839",
        "interfaceVersion": "2.6.58",
        "availableMapVersion": [
            "8.30.97.151"
        ]
    },
    "route": [
        {
            "waypoint": [
                {
                    "linkId": "-54239714",
                    "mappedPosition": {
                        "latitude": 52.3146951,
                        "longitude": 5.0248396
                    },
                    "originalPosition": {
                        "latitude": 52.3146653,
                        "longitude": 5.0248837
                    },
                    "type": "stopOver",
                    "spot": 1,
                    "sideOfStreet": "left",
                    "mappedRoadName": "Pampuslaan",
                    "label": "Pampuslaan",
                    "shapeIndex": 0,
                    "source": "user"
                },
                {
                    "linkId": "-1208098680",
                    "mappedPosition": {
                        "latitude": 52.6384828,
                        "longitude": 4.740455
                    },
                    "originalPosition": {
                        "latitude": 52.6381,
                        "longitude": 4.7406
                    },
                    "type": "stopOver",
                    "spot": 0.247191,
                    "sideOfStreet": "left",
                    "mappedRoadName": "Kruseman van Eltenweg",
                    "label": "Kruseman van Eltenweg",
                    "shapeIndex": 288,
                    "source": "user"
                }
            ],
            "mode": {
                "type": "fastest",
                "transportModes": [
                    "publicTransport"
                ],
                "trafficMode": "disabled",
                "feature": []
            },
            "leg": [
                {
                    "start": {
                        "linkId": "-54239714",
                        "mappedPosition": {
                            "latitude": 52.3146951,
                            "longitude": 5.0248396
                        },
                        "originalPosition": {
                            "latitude": 52.3146653,
                            "longitude": 5.0248837
                        },
                        "type": "stopOver",
                        "spot": 1,
                        "sideOfStreet": "left",
                        "mappedRoadName": "Pampuslaan",
                        "label": "Pampuslaan",
                        "shapeIndex": 0,
                        "source": "user"
                    },
                    "end": {
                        "linkId": "-1208098680",
                        "mappedPosition": {
                            "latitude": 52.6384828,
                            "longitude": 4.740455
                        },
                        "originalPosition": {
                            "latitude": 52.6381,
                            "longitude": 4.7406
                        },
                        "type": "stopOver",
                        "spot": 0.247191,
                        "sideOfStreet": "left",
                        "mappedRoadName": "Kruseman van Eltenweg",
                        "label": "Kruseman van Eltenweg",
                        "shapeIndex": 288,
                        "source": "user"
                    },
                    "length": 57000,
                    "travelTime": 7637,
                    "maneuver": [
                        {
                            "position": {
                                "latitude": 52.3146951,
                                "longitude": 5.0248396
                            },
                            "instruction": "Head <span class=\"heading\">south</span> on <span class=\"street\">Pampuslaan</span>. <span class=\"distance-description\">Go for <span class=\"length\">99 m</span>.</span>",
                            "travelTime": 109,
                            "length": 99,
                            "id": "M1",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.3138046,
                                "longitude": 5.024904
                            },
                            "instruction": "Turn <span class=\"direction\">left</span> onto <span class=\"next-street\">Gemeenschapspolderweg</span>. <span class=\"distance-description\">Go for <span class=\"length\">887 m</span>.</span>",
                            "travelTime": 912,
                            "length": 887,
                            "id": "M2",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.3131716,
                                "longitude": 5.0369418
                            },
                            "instruction": "Turn <span class=\"direction\">left</span> onto <span class=\"next-street\">Jan Campertplein</span>. <span class=\"distance-description\">Go for <span class=\"length\">98 m</span>.</span>",
                            "travelTime": 110,
                            "length": 98,
                            "id": "M3",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.3137081,
                                "longitude": 5.0380576
                            },
                            "instruction": "Turn <span class=\"direction\">right</span> onto <span class=\"next-street\">E. du Perronstraat</span>. <span class=\"distance-description\">Go for <span class=\"length\">338 m</span>.</span>",
                            "travelTime": 349,
                            "length": 338,
                            "id": "M4",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.3127103,
                                "longitude": 5.0419629
                            },
                            "instruction": "Turn <span class=\"direction\">right</span> onto <span class=\"next-street\">Stationsplein</span>. <span class=\"distance-description\">Go for <span class=\"length\">21 m</span>.</span>",
                            "travelTime": 32,
                            "length": 21,
                            "id": "M5",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.3125601,
                                "longitude": 5.0421453
                            },
                            "instruction": "Turn <span class=\"direction\">left</span>. <span class=\"distance-description\">Go for <span class=\"length\">133 m</span>.</span>",
                            "travelTime": 133,
                            "length": 133,
                            "id": "M6",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.312485,
                                "longitude": 5.0435722
                            },
                            "instruction": "Go to the station <span class=\"station\">Weesp</span> and take the <span class=\"transit\">train</span> <span class=\"line\">Sprinter</span> toward <span class=\"destination\">Amsterdam Centraal</span>. <span class=\"distance-description\">Follow for <span class=\"stops\">4 stations</span>.</span>",
                            "travelTime": 1915,
                            "length": 13021,
                            "id": "M7",
                            "stopName": "Weesp",
                            "_type": "PublicTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.3787248,
                                "longitude": 4.9008143
                            },
                            "instruction": "Get off at <span class=\"station\">Amsterdam Centraal</span> and change to the <span class=\"transit\">train</span> <span class=\"line\">Intercity</span> toward <span class=\"destination\">Alkmaar</span>. <span class=\"distance-description\">Follow for <span class=\"stops\">4 stations</span>.</span>",
                            "travelTime": 3095,
                            "length": 41444,
                            "id": "M8",
                            "stopName": "Amsterdam Centraal",
                            "_type": "PublicTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.6377726,
                                "longitude": 4.7408044
                            },
                            "instruction": "Get off at <span class=\"station\">Alkmaar</span>.",
                            "travelTime": 0,
                            "length": 0,
                            "id": "M9",
                            "stopName": "Alkmaar",
                            "_type": "PublicTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.6377726,
                                "longitude": 4.7408044
                            },
                            "instruction": "Head <span class=\"heading\">southeast</span>. <span class=\"distance-description\">Go for <span class=\"length\">367 m</span>.</span>",
                            "travelTime": 378,
                            "length": 367,
                            "id": "M10",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.637794,
                                "longitude": 4.7458577
                            },
                            "instruction": "Turn <span class=\"direction\">left</span> onto <span class=\"next-street\">Helderseweg</span>. <span class=\"distance-description\">Go for <span class=\"length\">208 m</span>.</span>",
                            "travelTime": 217,
                            "length": 208,
                            "id": "M11",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.6396501,
                                "longitude": 4.7454929
                            },
                            "instruction": "Turn <span class=\"direction\">left</span> onto <span class=\"next-street\">Kruseman van Eltenweg</span>. <span class=\"distance-description\">Go for <span class=\"length\">384 m</span>.</span>",
                            "travelTime": 387,
                            "length": 384,
                            "id": "M12",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": 52.6384828,
                                "longitude": 4.740455
                            },
                            "instruction": "Arrive at <span class=\"street\">Kruseman van Eltenweg</span>. Your destination is on the left.",
                            "travelTime": 0,
                            "length": 0,
                            "id": "M13",
                            "_type": "PrivateTransportManeuverType"
                        }
                    ]
                }
            ],
            "publicTransportLine": [
                {
                    "lineName": "Sprinter",
                    "companyName": "",
                    "destination": "Amsterdam Centraal",
                    "type": "trainRegional",
                    "id": "L1"
                },
                {
                    "lineName": "Intercity",
                    "companyName": "",
                    "destination": "Alkmaar",
                    "type": "trainRegional",
                    "id": "L2"
                }
            ],
            "summary": {
                "distance": 57000,
                "baseTime": 7637,
                "flags": [
                    "noThroughRoad",
                    "builtUpArea",
                    "privateRoad"
                ],
                "text": "The trip takes <span class=\"length\">57.0 km</span> and <span class=\"time\">2:07 h</span>.",
                "travelTime": 7637,
                "departure": "2019-06-18T09:59:29+02:00",
                "_type": "PublicTransportRouteSummaryType"
            }
        }
    ],
    "language": "en-us"
}

} * * тысяча двадцать-один

Регистрация времени отправления и продолжительности маршрута в Android привела к: I / Время отправления: 10:00 I / Продолжительность: 02: 51

Использование следующих фрагментов кода: Планирование:

       RoutePlan routePlan = new RoutePlan();

    RouteOptions routeOptions = new RouteOptions();
    routeOptions.setTransportMode(RouteOptions.TransportMode.PUBLIC_TRANSPORT);
    routeOptions.setRouteType(RouteOptions.Type.FASTEST);
    routeOptions.setRouteCount(3);
    routeOptions.setLocale(Locale.getDefault());
    if (toggleSwitch.getCheckedTogglePosition() == 0) {
        routeOptions.setTime(selected_time, RouteOptions.TimeType.DEPARTURE);
    }
    else {
        // Arrival time
    }
    routePlan.setRouteOptions(routeOptions);

    // Select Waypoints for your routes
    routePlan.addWaypoint(new RouteWaypoint(start_address_coordinate));
    routePlan.addWaypoint(new RouteWaypoint(end_address_coordinate));
    router.calculateRoute(routePlan, new RouterListener());

Результат слушателя:

  private final class RouterListener implements CoreRouter.Listener {

    // Method defined in Listener
    public void onProgress(int percentage) {
        // Display a message indicating calculation progress
    }

    // Method defined in Listener
    public void onCalculateRouteFinished(List<RouteResult> routeResult, RoutingError error) {
        // If the route was calculated successfully
        if (error == RoutingError.NONE) {
            progressBar.setVisibility(View.GONE);
            planButton.setEnabled(true);

            Long start_time = routeResult.get(0).getRoute().getManeuvers().get(0).getStartTime().getTime();
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.getDefault());
            String start_date = sdf.format(new Date(start_time));

            Date duration = new Date(routeResult.get(0).getRoute().getTtaIncludingTraffic(Route.WHOLE_ROUTE).getDuration() * 1000);

            Log.i("Departure time", start_date);
            Log.i("Duration", sdf.format(duration));
        }
        else {
            // Display a message indicating route calculation failure
            Log.e("Route Calculation ERROR", error.toString());
        }
    }
}
...