我从https://www.mapbox.com/android-sdk/examples/directions/复制的代码不会显示道路上的叠加层,即使我将条件指定为PROFILE_DRIVING,也会切断街道:
private void getRoute(Position origin, Position destination) throws ServicesException {
MapboxDirections client = new MapboxDirections.Builder()
.setOrigin(origin)
.setDestination(destination)
.setProfile(DirectionsCriteria.PROFILE_DRIVING)
.setAccessToken(CommonResource.MAPBOX_ACCESS_TOKEN)
.build();
client.enqueueCall(new retrofit2.Callback<DirectionsResponse>() {
@Override
public void onResponse(Call<DirectionsResponse> call, Response<DirectionsResponse> response) {
// You can get the generic HTTP info about the response
if (response.body() == null) {
return;
}
currentRoute = response.body().getRoutes().get(0);
drawRoute(currentRoute);
}
@Override
public void onFailure(Call<DirectionsResponse> call, Throwable t) {
Toast.makeText(MainActivity.this, "Error: " + t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
private void drawRoute(DirectionsRoute route) {
// Convert LineString coordinates into LatLng[]
LineString lineString = LineString.fromPolyline(route.getGeometry(), Constants.OSRM_PRECISION_V5);
List<Position> coordinates = lineString.getCoordinates();
LatLng[] points = new LatLng[coordinates.size()];
for (int i = 0; i < coordinates.size(); i++) {
points[i] = new LatLng(
coordinates.get(i).getLatitude(),
coordinates.get(i).getLongitude());
}
// Draw Points on MapView
map.addPolyline(new PolylineOptions()
.add(points)
.color(Color.parseColor("#009688"))
.width(5));
}
答案 0 :(得分:1)
正确答案:感谢您提供积分,在看到整条路线之前,我没有意识到发生了什么。您需要将setOverview设置为full。这在构建路线请求时完成,例如:
MapboxDirections client = new MapboxDirections.Builder()
.setOrigin(origin)
.setDestination(destination)
.setProfile(DirectionsCriteria.PROFILE_CYCLING)
.setOverview(DirectionsCriteria.OVERVIEW_FULL) // This line needs to be added.
.setAccessToken(<access token>)
.build();
以前的问题排查:
您使用的是哪个版本的Mapobx Android服务?你可以用整个类编辑你的问题,或者在GIthub上链接到它。我没有看到任何关于该代码的问题。对于最终的疑难解答,我建议更改 OSRM_PRECISION_V5
并检查点数组的大小以查看出错的地方。
我会在提供其他信息后编辑此答案。
编辑:如果您使用的是Mapbox方向V5,则无需更改编码常量。相反,你可以确保导入所有正确的类,解决this example in the demo app。如果您仍有问题,如下所述,请发布您提供的任何其他代码,目前您问题中的代码段与我们网站上的代码段完全相同。