我的一位同事目前正在努力实施转发指导,为我们正在开发的公司开发的应用程序。我的任务是尝试帮助他,但我们都没有能够做任何进展。
他正在使用Mapbox创建地图。我之前从未使用过mapbox,所以我没多大帮助。
他已经实施了代码,应该让我们转向指示,但它似乎没有做任何事情。
很抱歉,如果我提出旧问题或者没有明确说明我的情况,但这是我能解释的最好的问题。我们做了很多搜索,但我们发现似乎没有任何帮助。
以下是他尝试使用的代码,它应该实现转向指示。
private void getRoute(Waypoint origin, Waypoint destination) throws ServicesException {
MapboxDirections client = new MapboxDirections.Builder()
.setOrigin(origin)
.setDestination(destination)
.setProfile(DirectionsCriteria.PROFILE_DRIVING)
.setSteps(true)
// .setOverview(DirectionsCriteria.OVERVIEW_FULL)
.setInstructions(DirectionsCriteria.INSTRUCTIONS_TEXT)
.setAccessToken("pk.eyJ1IjoibnRyY3N2ZyIsImEiOiJCUmc4OHhjIn0.shHWdNg3Q32QUHJ1nOCs3A")
.build();
client.enqueue(new retrofit.Callback<DirectionsResponse>() {
@Override
public void onResponse(Response<DirectionsResponse> response, Retrofit retrofit) {
// You can get the generic HTTP info about the response
Log.d(TAG, "Response code: " + response.code());
if (response.body() == null) {
Log.e(TAG, "No routes found, make sure you set the right user and access token.");
return;
} else if (response.body().getRoutes().size() < 1) {
Log.e(TAG, "No routes found");
return;
}
}
@Override
public void onFailure(Throwable t) {
Log.e(TAG, "Error: " + t.getMessage());
Toast.makeText(MainActivity.this, "Error: " + t.getMessage(), Toast.LENGTH_SHORT).show();
}
public void onResponse(Response<DirectionsResponse> call, Response<DirectionsResponse> response) {
// You can get the generic HTTP info about the response
Log.d(TAG, "Response code: " + response.code());
if (response.body() == null) {
Log.e(TAG, "No routes found, make sure you set the right user and access token.");
return;
} else if (response.body().getRoutes().size() < 1) {
Log.e(TAG, "No routes found");
return;
}
drawRoute(currentRoute);
}
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());
}
Polyline polyline = mMapboxMap.addPolyline(new PolylineOptions()
.add(points)
.color(Color.RED)
.width(5));
directionsOn = true;
}
非常感谢任何帮助。
提前致谢。
答案 0 :(得分:0)
我强烈建议您从Mapbox Java中的路线v4更改为v5。完成切换后,您可以在我们网站上找到this example。确保您也以正确的顺序传递坐标,首先是longitude
,然后是latitude
。
答案 1 :(得分:0)
亲爱的朋友地图框也提供了包含示例代码段的详细文档。 我已按照mapbox转弯导航文档为我的要求构建了一个可用的应用程序。
如果您遇到任何问题,请点击链接告诉我。
链接:https://www.mapbox.com/android-docs/navigation/overview/navigation-ui/
在这里,您可以使用NavigationView组件自定义地图框转弯功能。