订购位置类型 ArrayList 以在 Mapbox 中跟踪路线
Ordering Position type ArrayList to trace route in Mapbox
今天我遇到了一个问题,这个问题肯定不常见,但我已经在其中工作了一整天,但没有任何结果。
我想要的:我想在多个点之间画一条折线,考虑到路线必须是其中距离最短的那条路线,而不是用户选择目的地的方式。
上下文:我有一个 LatLng ArrayList,它在用户点击地图时填充,点击的 LatLng 会自动存储到 ArrayList 中。然后,我将其转换为 Position arraylist 以便使用 setCoordinates() 方法。
另外,我有一个 'origin' 点,它将成为用户的当前位置。我建立了一个普通的做测试。
问题:当用户点击目的地时,ArrayList按照他点击的方式填充,没有考虑最近的目的地是什么,这就是我想要实现的,追踪路线只考虑考虑到点之间的距离必须最短。
这是我的示例代码(请注意,如果 "al" ArrayList 可以根据距离进行排序,那么路由可能会成功):
for (int i=0; i<= direcciones.size() - 1; i++) {
LatLng tri = direcciones.get(i);
Position p = Position.fromCoordinates(tri.getLongitude(), tri.getLatitude());
al.add(i, p);
}
MapboxDirections client = new MapboxDirections.Builder()
.setAccessToken(Mapbox.getAccessToken())
.setOrigin(Position.fromCoordinates(-56.1645, -34.9011))
.setCoordinates(al)
.setProfile(DirectionsCriteria.PROFILE_DRIVING)
.build();
提前致谢!
听起来您想使用我刚刚添加到此 pull request. It solves the issue of the traveling salesman 中的优化行程。它与指示非常相似 API 但要求有点不同:
MapboxOptimizedTrips.Builder builder = new MapboxOptimizedTrips.Builder()
.setAccessToken(Mapbox.getAccessToken())
.setProfile(DirectionsCriteria.PROFILE_DRIVING)
.setSource(DirectionsCriteria.SOURCE_FIRST)
.setOverview(DirectionsCriteria.OVERVIEW_FULL);
MapboxOptimizedTrips client = builder.setCoordinates(coords).build();
client.enqueueCall(new Callback<OptimizedTripsResponse>() {
@Override
public void onResponse(Call<OptimizedTripsResponse> call, Response<OptimizedTripsResponse> response) {
drawLine(response.body().getTrips().get(0).getGeometry());
}
@Override
public void onFailure(Call<OptimizedTripsResponse> call, Throwable throwable) {
Timber.e("Calling optimize trips failed: ", throwable);
}
});
}
今天我遇到了一个问题,这个问题肯定不常见,但我已经在其中工作了一整天,但没有任何结果。
我想要的:我想在多个点之间画一条折线,考虑到路线必须是其中距离最短的那条路线,而不是用户选择目的地的方式。
上下文:我有一个 LatLng ArrayList,它在用户点击地图时填充,点击的 LatLng 会自动存储到 ArrayList 中。然后,我将其转换为 Position arraylist 以便使用 setCoordinates() 方法。 另外,我有一个 'origin' 点,它将成为用户的当前位置。我建立了一个普通的做测试。
问题:当用户点击目的地时,ArrayList按照他点击的方式填充,没有考虑最近的目的地是什么,这就是我想要实现的,追踪路线只考虑考虑到点之间的距离必须最短。
这是我的示例代码(请注意,如果 "al" ArrayList 可以根据距离进行排序,那么路由可能会成功):
for (int i=0; i<= direcciones.size() - 1; i++) {
LatLng tri = direcciones.get(i);
Position p = Position.fromCoordinates(tri.getLongitude(), tri.getLatitude());
al.add(i, p);
}
MapboxDirections client = new MapboxDirections.Builder()
.setAccessToken(Mapbox.getAccessToken())
.setOrigin(Position.fromCoordinates(-56.1645, -34.9011))
.setCoordinates(al)
.setProfile(DirectionsCriteria.PROFILE_DRIVING)
.build();
提前致谢!
听起来您想使用我刚刚添加到此 pull request. It solves the issue of the traveling salesman 中的优化行程。它与指示非常相似 API 但要求有点不同:
MapboxOptimizedTrips.Builder builder = new MapboxOptimizedTrips.Builder()
.setAccessToken(Mapbox.getAccessToken())
.setProfile(DirectionsCriteria.PROFILE_DRIVING)
.setSource(DirectionsCriteria.SOURCE_FIRST)
.setOverview(DirectionsCriteria.OVERVIEW_FULL);
MapboxOptimizedTrips client = builder.setCoordinates(coords).build();
client.enqueueCall(new Callback<OptimizedTripsResponse>() {
@Override
public void onResponse(Call<OptimizedTripsResponse> call, Response<OptimizedTripsResponse> response) {
drawLine(response.body().getTrips().get(0).getGeometry());
}
@Override
public void onFailure(Call<OptimizedTripsResponse> call, Throwable throwable) {
Timber.e("Calling optimize trips failed: ", throwable);
}
});
}