SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Downloaden Sie, um offline zu lesen
OpenStreetMap
   en Android
¿La alternativa a Google Maps?
2
¿Porque usar
OpenStreetMap
   en Android?




          3
¿Porque usar
                 OpenStreetMap
                    en Android?




Datos Abiertos




                           3
¿Porque usar
                 OpenStreetMap
                    en Android?




Datos Abiertos
Mapas Offline




                           3
¿Porque usar
                    OpenStreetMap
                       en Android?




Datos Abiertos
 Mapas Offline
Servicio Gratuito




                              3
¿Porque usar
                       OpenStreetMap
                          en Android?




  Datos Abiertos
  Mapas Offline
 Servicio Gratuito

Librerías OpenSource




                                 3
¿Porque usar
                       OpenStreetMap
                          en Android?




  Datos Abiertos
  Mapas Offline
 Servicio Gratuito

Librerías OpenSource




                                 3
¿Porque usar
                       OpenStreetMap
                          en Android?




  Datos Abiertos
  Mapas Offline
 Servicio Gratuito

Librerías OpenSource




                                 3
¿Porque usar
                       OpenStreetMap
                          en Android?




  Datos Abiertos
  Mapas Offline
 Servicio Gratuito

Librerías OpenSource




                                 3
¿Porque usar
                       OpenStreetMap
                          en Android?




  Datos Abiertos
  Mapas Offline
 Servicio Gratuito

Librerías OpenSource




                                 3
¿Porque usar
                       OpenStreetMap
                          en Android?




  Datos Abiertos
 OpenStreetMap NO
  Mapas Offline
 es una alternativa a
 Servicio Gratuito
      Google Maps
Librerías OpenSource




                                 3
Resumen de
mi experiencia




          4
Resumen de
             mi experiencia




Al empezar




                       4
Resumen de
                           mi experiencia




Al empezar   Al terminar




                                     4
Mi viaje por
              OpenStreetMap




OSMDROID
 Mi primera
  elección




                         5
Mi viaje por
              OSMDROIDBonusPack     OpenStreetMap
                Bubbles y límites




OSMDROID
 Mi primera
  elección




                                               5
Mi viaje por
              OSMDROIDBonusPack              OpenStreetMap
                Bubbles y límites




                                     Mobile Atlas
OSMDROID
                                        Creator
 Mi primera
                                    Tiles Baneados
  elección




                                                        5
Mi viaje por
              OSMDROIDBonusPack              OpenStreetMap
                Bubbles y límites




                                     Mobile Atlas
OSMDROID
                                        Creator
 Mi primera
                                    Tiles Baneados
  elección




                                                OSMDROID
                                                Rendimiento
                                                  y bugs




                                                        5
Mi viaje por
              OSMDROIDBonusPack                 OpenStreetMap
                Bubbles y límites




                                        Mobile Atlas
OSMDROID
                                           Creator
 Mi primera
                                       Tiles Baneados
  elección




                       MapsForge
                      La alternativa



                                                   OSMDROID
                                                   Rendimiento
                                                     y bugs




                                                           5
Mi viaje por
                   OSMDROIDBonusPack                 OpenStreetMap
                     Bubbles y límites




                                             Mobile Atlas
 OSMDROID
                                                Creator
  Mi primera
                                            Tiles Baneados
   elección




                            MapsForge
                           La alternativa



                                                        OSMDROID
 Juan Palomo
                                                        Rendimiento
Themes y Límites
                                                          y bugs




                                                                5
Mi viaje por
                   OSMDROIDBonusPack                 OpenStreetMap
                     Bubbles y límites




                                             Mobile Atlas
 OSMDROID
                                                Creator
  Mi primera
                                            Tiles Baneados
   elección




                            MapsForge
                           La alternativa



                                                        OSMDROID
 Juan Palomo
                                                        Rendimiento
Themes y Límites
                                                          y bugs

                              MapsForge
                              Sin Bubbles


                                                                5
OSMDROID vs
                                                                                             MapsForge




            Mapas       Mapas                                         Límites                       Overlays
                                    Themes   Bubbles   Rendimiento              Rutas   Overlays
            Offline   Vectoriales                                    de mapa                       Avanzados


OSMDROID      Si         No          No       Si*        Malo         No*        Si*       Si         No

MapsForge     Si          Si         Si*       No        Bueno        No*       No*        Si         Si




                                                                                                       6
OSMDROID vs
                                                                                               MapsForge




                   Con OsmdroidBonusPack
                (incompatible con el parche)




            Mapas       Mapas                                           Límites                       Overlays
                                    Themes     Bubbles   Rendimiento              Rutas   Overlays
            Offline   Vectoriales                                      de mapa                       Avanzados


OSMDROID      Si         No          No         Si*        Malo         No*        Si*       Si         No

MapsForge     Si          Si         Si*         No        Bueno        No*       No*        Si         Si




                                                                                                         6
OSMDROID vs
                                                                                                MapsForge




                   Con OsmdroidBonusPack              Parche de código de
                (incompatible con el parche)               terceros




            Mapas       Mapas                                            Límites                       Overlays
                                    Themes     Bubbles   Rendimiento               Rutas   Overlays
            Offline   Vectoriales                                       de mapa                       Avanzados


OSMDROID      Si         No          No         Si*         Malo            No*     Si*       Si         No

MapsForge     Si          Si         Si*         No         Bueno           No*    No*        Si         Si




                                                                                                          6
OSMDROID vs
                                                                                                  MapsForge




                   Con OsmdroidBonusPack              Parche de código de             Con OsmdroidBonusPack
                (incompatible con el parche)               terceros                (incompatible con el parche)




            Mapas       Mapas                                            Límites                         Overlays
                                    Themes     Bubbles   Rendimiento                Rutas    Overlays
            Offline   Vectoriales                                       de mapa                         Avanzados


OSMDROID      Si         No          No         Si*         Malo            No*      Si*        Si          No

MapsForge     Si          Si         Si*         No         Bueno           No*      No*        Si           Si



                                                             Podemos implementarlos gracias a
                                                                  los overlays avanzados




                                                                                                              6
OSMDROID vs
                                                                                                  MapsForge




                   Con OsmdroidBonusPack              Parche de código de             Con OsmdroidBonusPack
                (incompatible con el parche)               terceros                (incompatible con el parche)




            Mapas       Mapas                                            Límites                         Overlays
                                    Themes     Bubbles   Rendimiento                Rutas    Overlays
            Offline   Vectoriales                                       de mapa                         Avanzados


OSMDROID      Si         No          No         Si*         Malo            No*      Si*        Si          No

MapsForge     Si          Si         Si*         No         Bueno           No*      No*        Si           Si



                                                             Podemos implementarlos gracias a
                                                                  los overlays avanzados




                                                                                                              6
OSMDROID vs
                                                                                                  MapsForge




                   Con OsmdroidBonusPack              Parche de código de             Con OsmdroidBonusPack
                (incompatible con el parche)               terceros                (incompatible con el parche)




            Mapas       Mapas                                            Límites                         Overlays
                                    Themes     Bubbles   Rendimiento                Rutas    Overlays
            Offline   Vectoriales                                       de mapa                         Avanzados


OSMDROID      Si         No          No         Si*         Malo            No*      Si*        Si          No

MapsForge     Si          Si         Si*         No         Bueno           No*      No*        Si           Si



                                                             Podemos implementarlos gracias a
                                                                  los overlays avanzados




                                                                                                              6
OSMDROID vs
                                                                                                  MapsForge




                   Con OsmdroidBonusPack              Parche de código de             Con OsmdroidBonusPack
                (incompatible con el parche)               terceros                (incompatible con el parche)




            Mapas       Mapas                                            Límites                         Overlays
                                    Themes     Bubbles   Rendimiento                Rutas    Overlays
            Offline   Vectoriales                                       de mapa                         Avanzados


OSMDROID      Si         No          No         Si*         Malo            No*      Si*        Si          No

MapsForge     Si          Si         Si*         No         Bueno           No*      No*        Si           Si



                                                             Podemos implementarlos gracias a
                                                                  los overlays avanzados




                                                                                                              6
OSMDROID vs
                                                                                                  MapsForge




                   Con OsmdroidBonusPack              Parche de código de             Con OsmdroidBonusPack
                (incompatible con el parche)               terceros                (incompatible con el parche)




            Mapas       Mapas                                            Límites                         Overlays
                                    Themes     Bubbles   Rendimiento                Rutas    Overlays
            Offline   Vectoriales                                       de mapa                         Avanzados


OSMDROID      Si         No          No         Si*         Malo            No*      Si*        Si          No

MapsForge     Si          Si         Si*         No         Bueno           No*      No*        Si           Si



                                                             Podemos implementarlos gracias a
                                                                  los overlays avanzados




                                                                                                              6
Un poco de
    código




      7
Un poco de
                                                 código




Insertando nuestro mapa
<org.osmdroid.views.MapView
     android:id="@+id/openmapview"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"/>




                                                   7
Un poco de
                                                                         código




Insertando nuestro mapa
<org.osmdroid.views.MapView
     android:id="@+id/openmapview"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"/>

Manifest - Permisos necesarios
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />




                                                                               7
Un poco de
                                                                         código




Insertando nuestro mapa
<org.osmdroid.views.MapView
     android:id="@+id/openmapview"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"/>

Manifest - Permisos necesarios
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

En tiempo de ejecución
myOpenMapView = (MapView)findViewById(R.id.openmapview);
myOpenMapView.setBuiltInZoomControls(true);
myMapController = myOpenMapView.getController();
myMapController.setZoom(4);




                                                                               7
Un poco de
                                                                         código




Insertando nuestro mapa
<org.osmdroid.views.MapView
     android:id="@+id/openmapview"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"/>

Manifest - Permisos necesarios
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

En tiempo de ejecución
myOpenMapView = (MapView)findViewById(R.id.openmapview);
myOpenMapView.setBuiltInZoomControls(true);
myMapController = myOpenMapView.getController();
myMapController.setZoom(4);

Multitouch (desactivado por defecto)
myOpenMapView.setMultiTouchControls(true);

                                                                               7
Un poco de
                                                                                             código




ItemizedIconOverlay o ItemizedOverlayWithFocus
ArrayList<OverlayItem> myPoisArray = new ArrayList<OverlayItem>();
misPoisArray.add(new OverlayItem("Sevilla", "Capital", new GeoPoint(37.388436, -5.987257)));

ItemizedOverlayWithFocus<OverlayItem> myOverlay =
           new ItemizedOverlayWithFocus<OverlayItem>(this, myPoisArray, myOnItemGestureListener);

myOpenMapView.getOverlays().add(myOverlay);

OnItemGestureListener<OverlayItem> myOnItemGestureListener = new OnItemGestureListener<OverlayItem>() {
    @Override
    public boolean onItemLongPress(int index, OverlayItem item) {
        return false;
    }

     @Override
     public boolean onItemSingleTapUp(int index, OverlayItem item) {
         Toast.makeText(
             TestOSMActivity.this,
             item.mDescription + "n" + item.mTitle + "n" + item.mGeoPoint.getLatitudeE6() + " : "
                 + item.mGeoPoint.getLongitudeE6(), Toast.LENGTH_LONG).show();
         return true;
     }

};

                                                                                                    8
Un poco de
                                                                                             código




ItemizedIconOverlay o ItemizedOverlayWithFocus
ArrayList<OverlayItem> myPoisArray = new ArrayList<OverlayItem>();
misPoisArray.add(new OverlayItem("Sevilla", "Capital", new GeoPoint(37.388436, -5.987257)));

ItemizedOverlayWithFocus<OverlayItem> myOverlay =
           new ItemizedOverlayWithFocus<OverlayItem>(this, myPoisArray, myOnItemGestureListener);

myOpenMapView.getOverlays().add(myOverlay);

OnItemGestureListener<OverlayItem> myOnItemGestureListener = new OnItemGestureListener<OverlayItem>() {
    @Override
    public boolean onItemLongPress(int index, OverlayItem item) {
        return false;
    }

     @Override
     public boolean onItemSingleTapUp(int index, OverlayItem item) {
         Toast.makeText(
             TestOSMActivity.this,
             item.mDescription + "n" + item.mTitle + "n" + item.mGeoPoint.getLatitudeE6() + " : "
                 + item.mGeoPoint.getLongitudeE6(), Toast.LENGTH_LONG).show();
         return true;
                        anotherItemizedIconOverlay.setFocusItemsOnTap(true);
     }

};

                                                                                                    8
Un poco de
                                                                                          código




Cambiando iconos (sobreescribimos ItemizedIconOverlay)
@Override
public void draw(Canvas canvas, MapView mapview, boolean arg2) {
  super.draw(canvas, mapview, arg2);

    if (this.size() > 0) {
      for (int i = 0; i < this.size(); i++) {
        GeoPoint in = getItem(i).getPoint();

            Point out = new Point();
            mapview.getProjection().toPixels(in, out);

            Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.myIcon);
            canvas.drawBitmap(bm, out.x - bm.getWidth() / 2, out.y - bm.getHeight() / 2, null);
        }
    }
}




                                                                                              9
Mapas Offline




Basta con colocarlos en esta carpeta
/sdcard/osmdroid

¿Cómo los obtenemos?




                                               10
Mapas Offline




Basta con colocarlos en esta carpeta
/sdcard/osmdroid

¿Cómo los obtenemos?




                                               10
Mapas Offline




Basta con colocarlos en esta carpeta
/sdcard/osmdroid

¿Cómo los obtenemos?




                                               10
Mapas Offline




Basta con colocarlos en esta carpeta
/sdcard/osmdroid

¿Cómo los obtenemos?




                                       Mobile Atlas
                                         Creator




                                                              10
Mapas Offline




Basta con colocarlos en esta carpeta
/sdcard/osmdroid

¿Cómo los obtenemos?



                                 osmdroid-packager
                                   Mobile Atlas
          http://androcode.es/2012/09/tiles-bloqueados-en-openstreetmap/
                                      Creator




                                                                            10
Mapas Offline




Limitando el Scroll y Zoom
Modificación en MapView.java

DESCARGA DIRECTA
https://docs.google.com/open?id=0B32Wy3J0YZ9SWnc0YmFhSm82REE

INSTRUCCIONES
http://androcode.es/2012/06/osmdroid-%E2%80%93-mapas-offline-con-openstreetmap-osm-parte-ii/

BoundingBoxE6 bbox = new BoundingBoxE6(limit north, limit east, limit south, limit west);
mapView.setScrollableAreaLimit(bbox);

public class ZoomLimitMapView extends MapView {
    @Override
    public int getMaxZoomLevel() {
        return 15;
    }

    @Override
    public int getMinZoomLevel() {
        return 4;
    }
}


                                                                                               10
OSMDROID
                                              Funcionalidad
                                                      extra




•   Geocoding and Reverse Geocoding,
•   Directions (routes)
•   Points of Interests (directory services): Wikipedia,
    Flickr, Picasa...
•   Overlays with nice and flexible "cartoon-bubbles"


        NOTA: Incompatibilidad con el
        parche de límites de scroll.


Más info http://androcode.es/2012/10/osmbonuspack-
anadiendo-funcionalidad-a-osmdroid-osm-parte-iii




                                                       11
MapsForge:
La alternativa




        12
MapsForge:
                                             La alternativa




Insertando nuestro mapa
<org.mapsforge.android.maps.MapView
     android:id="@+id/openmapview"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"/>




                                                     12
MapsForge:
                                                                   La alternativa




Insertando nuestro mapa
<org.mapsforge.android.maps.MapView
     android:id="@+id/openmapview"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"/>

Manifest - Permisos necesarios
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />




                                                                           12
MapsForge:
                                                                   La alternativa




Insertando nuestro mapa
<org.mapsforge.android.maps.MapView
     android:id="@+id/openmapview"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"/>

Manifest - Permisos necesarios
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

En tiempo de ejecución
mapView.setClickable(true);
mapView.setBuiltInZoomControls(true);
mapView.setCenter(new GeoPoint(41.38, 2.15));
mapView.getController().setZoom(13);




                                                                           12
MapsForge:
                                                                                              La alternativa




Personalizando los markers
Drawable defaultMarker = getResources().getDrawable(R.drawable.marker);

ArrayItemizedOverlay itemizedOverlay = new ArrayItemizedOverlay(defaultMarker);

GeoPoint geoPoint = new GeoPoint(41.38, 2.15);
OverlayItem item = new OverlayItem(geoPoint, "Mi punto", "Un punto de prueba");

itemizedOverlay .addItem(item);
mapView.getOverlays().add(itemizedOverlay);

También podemos si lo deseamos añadir un marker propio a cada OverlayItem pasándoselo como parámetro en el
constructor. Para este caso será obligatorio configurar los drawables:

ItemizedOverlay.boundCenter(drawable);
ItemizedOverlay.boundCenterBottom(drawable);



                                                                                                         13
MapsForge:
                                                                                       La alternativa




Capturando eventos

public class MyCustomOverlay extends ArrayItemizedOverlay {
  private Context mContext;

    public MyCustomOverlay(Context context, Drawable marker) {
       super(marker);
       this.mContext = context;
    }

    @Override
    protected boolean onTap(int index) {
      OverlayItem item = createItem(index);
      Toast.makeText(mContext, "Tap: " + item.getTitle(), Toast.LENGTH_LONG).show();
    }

    @Override
    protected boolean onLongPress(int index) {
      OverlayItem item = createItem(index);
      Toast.makeText(mContext, "LongPress: " + item.getTitle(), Toast.LENGTH_LONG).show();
    }
}



                                                                                               14
MapsForge:
                                                                                               La alternativa




Mapas Offline
 •   Usando Osmosis
      o Instalación: http://androcode.es/2012/12/mapsforge-openstreetmap-en-android-33/
      o Nota: Debido a conflictos con terceras aplicaciones la ejecución de Osmosis en mi equipo se
         hizo imposible. Lo solucioné instalando en un entorno virtual linux limpio.
 •   Descarga de mapas
      o   osmosis --ra left=--6.0497 bottom=36.9059 right=--6.0998 top=36.9326 --write-xml
          lebrija.osm
      o   Nota: La descarga de datos desde OpenStreetMap está limitada 0.25 grados o 50000 nodos, por lo
          tanto en la mayoría de los casos este sistema se nos quedará corto.
      o   geofabrik http://download.geofabrik.de/openstreetmap/
 •   Recortando
      o   osmosis --read-xml spain.osm --bb left=-6.0497 bottom=36.9059           right=-6.0998
          top=36.9326 --write-xml lebrija.osm
 •   Convertir formato (de .osm a .map)
      o   Plugin para convertir formato mapsforge-map-writer-0.3.0-jar-with-dependencies.jar
      o   osmosis --read-xml lebrija.osm --mapfile-writer file=lebrija.map
          bbox=minLat,minLon,maxLat,maxLon
 •   Seleccionando los mapas
      o   mapView.setMapFile(new File(filepath));




                                                                                                           15
Más
                                                                                      información




Tutoriales MapsForge

http://androcode.es/2012/12/mapsforge-openstreetmap-en-android-13/
http://androcode.es/2012/12/mapsforge-openstreetmap-en-android-23/
http://androcode.es/2012/12/mapsforge-openstreetmap-en-android-33/


Tutoriales OSMDROID
http://androcode.es/2012/06/osmdroid-introduccion-a-openstreetmap-en-android-osm-parte-i/
http://androcode.es/2012/06/osmdroid-%E2%80%93-mapas-offline-con-openstreetmap-osm-parte-ii/
http://androcode.es/2012/09/tiles-bloqueados-en-openstreetmap/
http://androcode.es/2012/10/osmbonuspack-anadiendo-funcionalidad-a-osmdroid-osm-parte-iii/


Site oficiales
https://code.google.com/p/osmdroid/
http://code.google.com/p/osmbonuspack/
http://code.google.com/p/mapsforge/




                                                                                               16
17
¡GRACIAS!




FIN

Weitere ähnliche Inhalte

Kürzlich hochgeladen

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Kürzlich hochgeladen (10)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Empfohlen

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 

Empfohlen (20)

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 

OpenStreetMap en Android

  • 1. OpenStreetMap en Android ¿La alternativa a Google Maps?
  • 2. 2
  • 4. ¿Porque usar OpenStreetMap en Android? Datos Abiertos 3
  • 5. ¿Porque usar OpenStreetMap en Android? Datos Abiertos Mapas Offline 3
  • 6. ¿Porque usar OpenStreetMap en Android? Datos Abiertos Mapas Offline Servicio Gratuito 3
  • 7. ¿Porque usar OpenStreetMap en Android? Datos Abiertos Mapas Offline Servicio Gratuito Librerías OpenSource 3
  • 8. ¿Porque usar OpenStreetMap en Android? Datos Abiertos Mapas Offline Servicio Gratuito Librerías OpenSource 3
  • 9. ¿Porque usar OpenStreetMap en Android? Datos Abiertos Mapas Offline Servicio Gratuito Librerías OpenSource 3
  • 10. ¿Porque usar OpenStreetMap en Android? Datos Abiertos Mapas Offline Servicio Gratuito Librerías OpenSource 3
  • 11. ¿Porque usar OpenStreetMap en Android? Datos Abiertos Mapas Offline Servicio Gratuito Librerías OpenSource 3
  • 12. ¿Porque usar OpenStreetMap en Android? Datos Abiertos OpenStreetMap NO Mapas Offline es una alternativa a Servicio Gratuito Google Maps Librerías OpenSource 3
  • 14. Resumen de mi experiencia Al empezar 4
  • 15. Resumen de mi experiencia Al empezar Al terminar 4
  • 16. Mi viaje por OpenStreetMap OSMDROID Mi primera elección 5
  • 17. Mi viaje por OSMDROIDBonusPack OpenStreetMap Bubbles y límites OSMDROID Mi primera elección 5
  • 18. Mi viaje por OSMDROIDBonusPack OpenStreetMap Bubbles y límites Mobile Atlas OSMDROID Creator Mi primera Tiles Baneados elección 5
  • 19. Mi viaje por OSMDROIDBonusPack OpenStreetMap Bubbles y límites Mobile Atlas OSMDROID Creator Mi primera Tiles Baneados elección OSMDROID Rendimiento y bugs 5
  • 20. Mi viaje por OSMDROIDBonusPack OpenStreetMap Bubbles y límites Mobile Atlas OSMDROID Creator Mi primera Tiles Baneados elección MapsForge La alternativa OSMDROID Rendimiento y bugs 5
  • 21. Mi viaje por OSMDROIDBonusPack OpenStreetMap Bubbles y límites Mobile Atlas OSMDROID Creator Mi primera Tiles Baneados elección MapsForge La alternativa OSMDROID Juan Palomo Rendimiento Themes y Límites y bugs 5
  • 22. Mi viaje por OSMDROIDBonusPack OpenStreetMap Bubbles y límites Mobile Atlas OSMDROID Creator Mi primera Tiles Baneados elección MapsForge La alternativa OSMDROID Juan Palomo Rendimiento Themes y Límites y bugs MapsForge Sin Bubbles 5
  • 23. OSMDROID vs MapsForge Mapas Mapas Límites Overlays Themes Bubbles Rendimiento Rutas Overlays Offline Vectoriales de mapa Avanzados OSMDROID Si No No Si* Malo No* Si* Si No MapsForge Si Si Si* No Bueno No* No* Si Si 6
  • 24. OSMDROID vs MapsForge Con OsmdroidBonusPack (incompatible con el parche) Mapas Mapas Límites Overlays Themes Bubbles Rendimiento Rutas Overlays Offline Vectoriales de mapa Avanzados OSMDROID Si No No Si* Malo No* Si* Si No MapsForge Si Si Si* No Bueno No* No* Si Si 6
  • 25. OSMDROID vs MapsForge Con OsmdroidBonusPack Parche de código de (incompatible con el parche) terceros Mapas Mapas Límites Overlays Themes Bubbles Rendimiento Rutas Overlays Offline Vectoriales de mapa Avanzados OSMDROID Si No No Si* Malo No* Si* Si No MapsForge Si Si Si* No Bueno No* No* Si Si 6
  • 26. OSMDROID vs MapsForge Con OsmdroidBonusPack Parche de código de Con OsmdroidBonusPack (incompatible con el parche) terceros (incompatible con el parche) Mapas Mapas Límites Overlays Themes Bubbles Rendimiento Rutas Overlays Offline Vectoriales de mapa Avanzados OSMDROID Si No No Si* Malo No* Si* Si No MapsForge Si Si Si* No Bueno No* No* Si Si Podemos implementarlos gracias a los overlays avanzados 6
  • 27. OSMDROID vs MapsForge Con OsmdroidBonusPack Parche de código de Con OsmdroidBonusPack (incompatible con el parche) terceros (incompatible con el parche) Mapas Mapas Límites Overlays Themes Bubbles Rendimiento Rutas Overlays Offline Vectoriales de mapa Avanzados OSMDROID Si No No Si* Malo No* Si* Si No MapsForge Si Si Si* No Bueno No* No* Si Si Podemos implementarlos gracias a los overlays avanzados 6
  • 28. OSMDROID vs MapsForge Con OsmdroidBonusPack Parche de código de Con OsmdroidBonusPack (incompatible con el parche) terceros (incompatible con el parche) Mapas Mapas Límites Overlays Themes Bubbles Rendimiento Rutas Overlays Offline Vectoriales de mapa Avanzados OSMDROID Si No No Si* Malo No* Si* Si No MapsForge Si Si Si* No Bueno No* No* Si Si Podemos implementarlos gracias a los overlays avanzados 6
  • 29. OSMDROID vs MapsForge Con OsmdroidBonusPack Parche de código de Con OsmdroidBonusPack (incompatible con el parche) terceros (incompatible con el parche) Mapas Mapas Límites Overlays Themes Bubbles Rendimiento Rutas Overlays Offline Vectoriales de mapa Avanzados OSMDROID Si No No Si* Malo No* Si* Si No MapsForge Si Si Si* No Bueno No* No* Si Si Podemos implementarlos gracias a los overlays avanzados 6
  • 30. OSMDROID vs MapsForge Con OsmdroidBonusPack Parche de código de Con OsmdroidBonusPack (incompatible con el parche) terceros (incompatible con el parche) Mapas Mapas Límites Overlays Themes Bubbles Rendimiento Rutas Overlays Offline Vectoriales de mapa Avanzados OSMDROID Si No No Si* Malo No* Si* Si No MapsForge Si Si Si* No Bueno No* No* Si Si Podemos implementarlos gracias a los overlays avanzados 6
  • 31. Un poco de código 7
  • 32. Un poco de código Insertando nuestro mapa <org.osmdroid.views.MapView android:id="@+id/openmapview" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 7
  • 33. Un poco de código Insertando nuestro mapa <org.osmdroid.views.MapView android:id="@+id/openmapview" android:layout_width="fill_parent" android:layout_height="fill_parent"/> Manifest - Permisos necesarios <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 7
  • 34. Un poco de código Insertando nuestro mapa <org.osmdroid.views.MapView android:id="@+id/openmapview" android:layout_width="fill_parent" android:layout_height="fill_parent"/> Manifest - Permisos necesarios <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> En tiempo de ejecución myOpenMapView = (MapView)findViewById(R.id.openmapview); myOpenMapView.setBuiltInZoomControls(true); myMapController = myOpenMapView.getController(); myMapController.setZoom(4); 7
  • 35. Un poco de código Insertando nuestro mapa <org.osmdroid.views.MapView android:id="@+id/openmapview" android:layout_width="fill_parent" android:layout_height="fill_parent"/> Manifest - Permisos necesarios <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> En tiempo de ejecución myOpenMapView = (MapView)findViewById(R.id.openmapview); myOpenMapView.setBuiltInZoomControls(true); myMapController = myOpenMapView.getController(); myMapController.setZoom(4); Multitouch (desactivado por defecto) myOpenMapView.setMultiTouchControls(true); 7
  • 36. Un poco de código ItemizedIconOverlay o ItemizedOverlayWithFocus ArrayList<OverlayItem> myPoisArray = new ArrayList<OverlayItem>(); misPoisArray.add(new OverlayItem("Sevilla", "Capital", new GeoPoint(37.388436, -5.987257))); ItemizedOverlayWithFocus<OverlayItem> myOverlay = new ItemizedOverlayWithFocus<OverlayItem>(this, myPoisArray, myOnItemGestureListener); myOpenMapView.getOverlays().add(myOverlay); OnItemGestureListener<OverlayItem> myOnItemGestureListener = new OnItemGestureListener<OverlayItem>() { @Override public boolean onItemLongPress(int index, OverlayItem item) { return false; } @Override public boolean onItemSingleTapUp(int index, OverlayItem item) { Toast.makeText( TestOSMActivity.this, item.mDescription + "n" + item.mTitle + "n" + item.mGeoPoint.getLatitudeE6() + " : " + item.mGeoPoint.getLongitudeE6(), Toast.LENGTH_LONG).show(); return true; } }; 8
  • 37. Un poco de código ItemizedIconOverlay o ItemizedOverlayWithFocus ArrayList<OverlayItem> myPoisArray = new ArrayList<OverlayItem>(); misPoisArray.add(new OverlayItem("Sevilla", "Capital", new GeoPoint(37.388436, -5.987257))); ItemizedOverlayWithFocus<OverlayItem> myOverlay = new ItemizedOverlayWithFocus<OverlayItem>(this, myPoisArray, myOnItemGestureListener); myOpenMapView.getOverlays().add(myOverlay); OnItemGestureListener<OverlayItem> myOnItemGestureListener = new OnItemGestureListener<OverlayItem>() { @Override public boolean onItemLongPress(int index, OverlayItem item) { return false; } @Override public boolean onItemSingleTapUp(int index, OverlayItem item) { Toast.makeText( TestOSMActivity.this, item.mDescription + "n" + item.mTitle + "n" + item.mGeoPoint.getLatitudeE6() + " : " + item.mGeoPoint.getLongitudeE6(), Toast.LENGTH_LONG).show(); return true; anotherItemizedIconOverlay.setFocusItemsOnTap(true); } }; 8
  • 38. Un poco de código Cambiando iconos (sobreescribimos ItemizedIconOverlay) @Override public void draw(Canvas canvas, MapView mapview, boolean arg2) { super.draw(canvas, mapview, arg2); if (this.size() > 0) { for (int i = 0; i < this.size(); i++) { GeoPoint in = getItem(i).getPoint(); Point out = new Point(); mapview.getProjection().toPixels(in, out); Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.myIcon); canvas.drawBitmap(bm, out.x - bm.getWidth() / 2, out.y - bm.getHeight() / 2, null); } } } 9
  • 39. Mapas Offline Basta con colocarlos en esta carpeta /sdcard/osmdroid ¿Cómo los obtenemos? 10
  • 40. Mapas Offline Basta con colocarlos en esta carpeta /sdcard/osmdroid ¿Cómo los obtenemos? 10
  • 41. Mapas Offline Basta con colocarlos en esta carpeta /sdcard/osmdroid ¿Cómo los obtenemos? 10
  • 42. Mapas Offline Basta con colocarlos en esta carpeta /sdcard/osmdroid ¿Cómo los obtenemos? Mobile Atlas Creator 10
  • 43. Mapas Offline Basta con colocarlos en esta carpeta /sdcard/osmdroid ¿Cómo los obtenemos? osmdroid-packager Mobile Atlas http://androcode.es/2012/09/tiles-bloqueados-en-openstreetmap/ Creator 10
  • 44. Mapas Offline Limitando el Scroll y Zoom Modificación en MapView.java DESCARGA DIRECTA https://docs.google.com/open?id=0B32Wy3J0YZ9SWnc0YmFhSm82REE INSTRUCCIONES http://androcode.es/2012/06/osmdroid-%E2%80%93-mapas-offline-con-openstreetmap-osm-parte-ii/ BoundingBoxE6 bbox = new BoundingBoxE6(limit north, limit east, limit south, limit west); mapView.setScrollableAreaLimit(bbox); public class ZoomLimitMapView extends MapView { @Override public int getMaxZoomLevel() { return 15; } @Override public int getMinZoomLevel() { return 4; } } 10
  • 45. OSMDROID Funcionalidad extra • Geocoding and Reverse Geocoding, • Directions (routes) • Points of Interests (directory services): Wikipedia, Flickr, Picasa... • Overlays with nice and flexible "cartoon-bubbles" NOTA: Incompatibilidad con el parche de límites de scroll. Más info http://androcode.es/2012/10/osmbonuspack- anadiendo-funcionalidad-a-osmdroid-osm-parte-iii 11
  • 47. MapsForge: La alternativa Insertando nuestro mapa <org.mapsforge.android.maps.MapView android:id="@+id/openmapview" android:layout_width="fill_parent" android:layout_height="fill_parent"/> 12
  • 48. MapsForge: La alternativa Insertando nuestro mapa <org.mapsforge.android.maps.MapView android:id="@+id/openmapview" android:layout_width="fill_parent" android:layout_height="fill_parent"/> Manifest - Permisos necesarios <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 12
  • 49. MapsForge: La alternativa Insertando nuestro mapa <org.mapsforge.android.maps.MapView android:id="@+id/openmapview" android:layout_width="fill_parent" android:layout_height="fill_parent"/> Manifest - Permisos necesarios <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> En tiempo de ejecución mapView.setClickable(true); mapView.setBuiltInZoomControls(true); mapView.setCenter(new GeoPoint(41.38, 2.15)); mapView.getController().setZoom(13); 12
  • 50. MapsForge: La alternativa Personalizando los markers Drawable defaultMarker = getResources().getDrawable(R.drawable.marker); ArrayItemizedOverlay itemizedOverlay = new ArrayItemizedOverlay(defaultMarker); GeoPoint geoPoint = new GeoPoint(41.38, 2.15); OverlayItem item = new OverlayItem(geoPoint, "Mi punto", "Un punto de prueba"); itemizedOverlay .addItem(item); mapView.getOverlays().add(itemizedOverlay); También podemos si lo deseamos añadir un marker propio a cada OverlayItem pasándoselo como parámetro en el constructor. Para este caso será obligatorio configurar los drawables: ItemizedOverlay.boundCenter(drawable); ItemizedOverlay.boundCenterBottom(drawable); 13
  • 51. MapsForge: La alternativa Capturando eventos public class MyCustomOverlay extends ArrayItemizedOverlay { private Context mContext; public MyCustomOverlay(Context context, Drawable marker) { super(marker); this.mContext = context; } @Override protected boolean onTap(int index) { OverlayItem item = createItem(index); Toast.makeText(mContext, "Tap: " + item.getTitle(), Toast.LENGTH_LONG).show(); } @Override protected boolean onLongPress(int index) { OverlayItem item = createItem(index); Toast.makeText(mContext, "LongPress: " + item.getTitle(), Toast.LENGTH_LONG).show(); } } 14
  • 52. MapsForge: La alternativa Mapas Offline • Usando Osmosis o Instalación: http://androcode.es/2012/12/mapsforge-openstreetmap-en-android-33/ o Nota: Debido a conflictos con terceras aplicaciones la ejecución de Osmosis en mi equipo se hizo imposible. Lo solucioné instalando en un entorno virtual linux limpio. • Descarga de mapas o osmosis --ra left=--6.0497 bottom=36.9059 right=--6.0998 top=36.9326 --write-xml lebrija.osm o Nota: La descarga de datos desde OpenStreetMap está limitada 0.25 grados o 50000 nodos, por lo tanto en la mayoría de los casos este sistema se nos quedará corto. o geofabrik http://download.geofabrik.de/openstreetmap/ • Recortando o osmosis --read-xml spain.osm --bb left=-6.0497 bottom=36.9059 right=-6.0998 top=36.9326 --write-xml lebrija.osm • Convertir formato (de .osm a .map) o Plugin para convertir formato mapsforge-map-writer-0.3.0-jar-with-dependencies.jar o osmosis --read-xml lebrija.osm --mapfile-writer file=lebrija.map bbox=minLat,minLon,maxLat,maxLon • Seleccionando los mapas o mapView.setMapFile(new File(filepath)); 15
  • 53. Más información Tutoriales MapsForge http://androcode.es/2012/12/mapsforge-openstreetmap-en-android-13/ http://androcode.es/2012/12/mapsforge-openstreetmap-en-android-23/ http://androcode.es/2012/12/mapsforge-openstreetmap-en-android-33/ Tutoriales OSMDROID http://androcode.es/2012/06/osmdroid-introduccion-a-openstreetmap-en-android-osm-parte-i/ http://androcode.es/2012/06/osmdroid-%E2%80%93-mapas-offline-con-openstreetmap-osm-parte-ii/ http://androcode.es/2012/09/tiles-bloqueados-en-openstreetmap/ http://androcode.es/2012/10/osmbonuspack-anadiendo-funcionalidad-a-osmdroid-osm-parte-iii/ Site oficiales https://code.google.com/p/osmdroid/ http://code.google.com/p/osmbonuspack/ http://code.google.com/p/mapsforge/ 16
  • 54. 17