Crear rutas con OSMdroid

  • Respuestas:0
Izas Txiki
  • Posts del Foro: 1

28 ene. 2014 15:51:18 vía Web

Hola muy buenas. Soy nueva en este foro. Estoy empezando a programar en Android y estoy realizando algunos tutoriales. En concreto, quiero simplemente mostrar un mapa y crear una ruta entre dos puntos. Para ello, estoy usando las librerías OSMdroid y OSMbounspack, y estoy siguiendo el tutorial que aparece en la wiki de osmbonuspack/wiki/Tutorial_1.
Mi aplicación en principio consisten en una series de pestañas, y en una de ellas quiero mostrar dicho mapa con la ruta entre dos puntos. Os pongo el código que he escrito:
1public class tab_mapa extends Fragment {
2
3 MapView myOpenMapView;
4 MapController myMapController;
5
6 public tab_mapa(){
7 //TODO Auto-generated constructor stub
8 }
9 @Override
10 public void onCreate(Bundle savedInstanceState) {
11 super.onCreate(savedInstanceState);
12 }
13 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
14 View v = LayoutInflater.from(getActivity()).inflate(R.layout.tab_mapa,null);
15
16 myOpenMapView = (MapView)v.findViewById(R.id.Openmapview);
17 myOpenMapView.setBuiltInZoomControls(true);
18 myOpenMapView.setMultiTouchControls(true);
19
20 myMapController = myOpenMapView.getController();
21 myMapController.setZoom(14);
22 myOpenMapView.setTileSource(TileSourceFactory.MAPQUESTOSM);
23 //myOpenMapView.setTileSource(TileSourceFactory.MAPNIK);
24
25 myMapController.setCenter(new GeoPoint(48.13, -1.63));
26 myOpenMapView.setMultiTouchControls(true);
27
28 //Rutas
29 new Thread(new Runnable() {
30 public void run(){
31 RoadManager roadManager = new OSRMRoadManager();
32 ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>();
33 waypoints.add(new GeoPoint(48.13, -1.63));//StartPoint
34 waypoints.add(new GeoPoint(48.4, -1.9));//EndPoint
35 Road road = roadManager.getRoad(waypoints);
36
37 PathOverlay roadOverlay = RoadManager.buildRoadOverlay(road, myOpenMapView.getContext());
38 myOpenMapView.getOverlays().add(roadOverlay);
39 myOpenMapView.invalidate();
40 }
41 }).start();
42
43 return v;
44 }
45
46 public void onActivityCreated(Bundle savedInstanceState) {
47 super.onActivityCreated(savedInstanceState);
48 }
49}
El caso es que consigo que se vea un rato pero al segundo la aplicación se detiene. He estado leyendo un poco sobre el tema de los threads y por eso he añadido un thread para ejecutar el tema de la ruta. A ver si alguien me echa una mano y me ayuda a ver los errores.

Muchas gracias de antemano.

Contestar