Izas Txiki
- Posts del Foro: 1
28 ene. 2014 15:51:18 vía Web
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:
Muchas gracias de antemano.
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.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}
Muchas gracias de antemano.
Contenido editorial recomendado
Con su consentimiento, aquí se cargan contenidos externos.
Al hacer clic en el botón anterior, acepta que se le muestren contenidos externos. En el proceso pueden transmitirse datos personales a terceros proveedores. Encontrará más información al respecto en nuestro Política de privacidad.