android - osman - Problemas de enrutamiento OSMDroid al seguir un tutorial
osman map (1)
Utilizo el siguiente código para colocar una superposición de ruta en un mapa de droides OSM, utilizando el código obtenido del siguiente tutorial ( http://code.google.com/p/osmbonuspack/wiki/Tutorial_1 ) pero ligeramente modificado en un método personalizado, en lugar de ser utilizado en el método OnCrerate.
Ahora esto hace ruta y produce una superposición verde en el mapa. Sin embargo, hay un problema exhibido por For Loop en adelante. Esto se debe a que road.mNodes siempre es de tamaño cero, lo que indica que no hay instrucciones descendiendo.
Incidentalmente también inspeccioné RoadNodes y RoadItems y ambos también tenían el tamaño cero. Esto significa que las burbujas (ExtendedOVerlayItems) nunca se muestran en la ruta.
Cualquier consejo sería muy apreciado.
//======================================================================================================
/**
* Add a route overlay between two geopoints with Bubble overlays on the route points.
*
* @param startPoint Route start.
* @param endPoint Route end.
*//
//======================================================================================================
public void addRouteOverlay(GeoPoint startPoint, GeoPoint endPoint)
{
//1 Routing via road manager
RoadManager roadManager = new OSRMRoadManager();
roadManager.addRequestOption("routeType=bicycle");
//Then, retreive the road between your start and end point:
ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>();
waypoints.add(startPoint);
waypoints.add(endPoint); //end point
Road road = roadManager.getRoad(waypoints);
// then, build an overlay with the route shape:
PathOverlay roadOverlay = RoadManager.buildRoadOverlay(road, map.getContext());
roadOverlay.setColor(Color.GREEN);
//Add Route Overlays into map
map.getOverlays().add(roadOverlay);
map.invalidate();//refesh map
Drawable marker = ctx.getResources().getDrawable(R.drawable.map_marker_blue);
final ArrayList<ExtendedOverlayItem> roadItems =
new ArrayList<ExtendedOverlayItem>();
ItemizedOverlayWithBubble<ExtendedOverlayItem> roadNodes =
new ItemizedOverlayWithBubble<ExtendedOverlayItem>(ctx, roadItems, map);
for (int i=0; i<road.mNodes.size(); i++)
{
RoadNode node = road.mNodes.get(i);
ExtendedOverlayItem nodeMarker = new ExtendedOverlayItem("Step "+i, "", node.mLocation, ctx);
nodeMarker.setMarkerHotspot(OverlayItem.HotspotPlace.CENTER);
nodeMarker.setMarker(marker);
roadNodes.addItem(nodeMarker);
nodeMarker.setDescription(node.mInstructions);
nodeMarker.setSubDescription(road.getLengthDurationText(node.mLength, node.mDuration));
Drawable icon = ctx.getResources().getDrawable(R.drawable.ic_continue);
nodeMarker.setImage(icon);
}//end for
map.getOverlays().add(roadNodes);
}//===================================================================================================
Tuve este problema hoy y logré resolverlo. El problema radica en una versión anterior del paquete de bonificación. Actualicé a la versión osmbonuspack_v4.1.jar de osmbonuspack_v3.8.jar y resolvió el problema. También utilicé la opción MapQuestRoadManager () en comparación con OSRMRoadManager (). Sin embargo, vale la pena tener en cuenta que al hacer esto, algunos de los métodos de tipo super cambiaron en el paquete de bonificación, como el método onOpen () en ExtendedOverlayItem requerido su parámetro para ser lanzado después de llamar.
final RoadManager manager= new MapQuestRoadManager();
manager.addRequestOption("routeType=fastest");