使用多个航点显示两点之间的路线Android Here Map Lite Edition

时间:2019-11-17 09:47:16

标签: java android kotlin here-api here-maps-rest

我们正在将此处的Android项目转换为将Android Starter SDK 映射为 Lite Edition 。我想在路线上显示多个航路点。

对于Starter SDK,我们使用 RoutePlan 绘制多个航路点。但是在精简版中,我找不到RoutePlan。有关更多信息,请找到下面的Android Starter SDK 代码段:

    val routePlan = RoutePlan()
    val routeOptions = RouteOptions()
    routeOptions.transportMode = RouteOptions.TransportMode.CAR
    routeOptions.routeType = RouteOptions.Type.FASTEST

    routePlan.routeOptions = routeOptions

   for (routeLatLang in tripRouteData) { 
                try {
                    routePlan.addWaypoint(GeoCoordinate(lat.toDouble(), longg.toDouble()))
                } catch (e: Exception) {
                    e.printStackTrace()
                }
    }

    val error = routeManager.calculateRoute(routePlan, routeManagerListener)
    if (error != RouteManager.Error.NONE) {
        Toast.makeText(activity,
                "Route calculation failed with: " + error.toString(), Toast.LENGTH_SHORT)
                .show()
    }

还可以找到以下 Lite Edition SDK的代码段:

    val waypoint1 = Waypoint(latitude1,longitude1)
    val waypoint2 = Waypoint(latitude2,longitude2)
    val waypoints = java.util.ArrayList(Arrays.asList(Waypoint(startGeoCoordinates),
            waypoint1, waypoint2, Waypoint(destinationGeoCoordinates)))

因此,我们如何在Here Map Lite Edition 上绘制多个航路点,这也是在路线上绘制最大航路点的限制。

2 个答案:

答案 0 :(得分:2)

这是一个不同的SDK。看看feature list,您会发现支持方向。因此,您必须查看documentation才能知道它是如何工作的。

最终,您必须执行以下操作:

routingEngine.calculateRoute(
        waypoints,
        new CarOptions(),
        new CalculateRouteCallback() {
            @Override
            public void onRouteCalculated(@Nullable RoutingError routingError, @Nullable List<Route> routes) {
                if (routingError == null) {
                    Route route = routes.get(0);
                    showRouteDetails(route);
                    showRouteOnMap(route);
                } else {
                    showDialog("Error while calculating a route:", routingError.toString());
                }
            }
        });

答案 1 :(得分:1)

新的SDK 4.x(Lite)与经典的Starter SDK相比,具有一些不同的概念和功能,因此替代品并不是全部。

对于路由,情况非常相似,您可以在此处查看github示例以了解具体情况:

https://github.com/heremaps/here-sdk-examples/blob/master/examples/android/Routing/app/src/main/java/com/here/routing/RoutingExample.java

简而言之:

RouteEngine仍然存在,但是在calculateRoute方法中,您传递了一系列航点(第一个是起点,最后一个是终点,其间的所有点都是中途停留点或直通航点)。

请参阅:https://developer.here.com/documentation/android-sdk/api_reference/com/here/sdk/routing/RoutingEngine.html#calculateRoute-java.util.List-com.here.sdk.routing.CarOptions-com.here.sdk.routing.CalculateRouteCallback-