Taller mapsforge
-
Upload
santiagohiguera -
Category
Documents
-
view
2.150 -
download
12
Transcript of Taller mapsforge
![Page 1: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/1.jpg)
Taller Mapsforge - Osmosis
Mapas vectoriales off-line en Android con Mapsfor ge y Osmosis
Autor: Santiago Higuera de Frutos(Mayo 2012)
![Page 2: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/2.jpg)
(c) Santiago Higuera de Frutos
Este documento se distribuye bajo licencia Creative Commons Reconocimiento, Compartir, Igual 3.0
Los términos de la licencia se pueden consultar en:
http://creativecommons.org/licenses/by-sa/3.0/
(Mayo 2012)
Ta ll er Mapsforg e - Osmosis
![Page 3: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/3.jpg)
Los materiales y el código fuente de los ejemplos de este taller se pueden descargar en:
http://mercatorlab.com/downloads/tallerMapsforge.zip
Ta ll er Mapsforg e - Osmosis
![Page 4: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/4.jpg)
1.- Mapsforge
Mapsforge es una librería para visualización de mapas OpenStreetMap en dispositivos Android.
http://code.google.com/p/mapsforge/
Entre las características más destacadas:
Ofrece un View llamado MapView
Permite visualizar mapas OpenStreetMap 'on line' y 'off line'
Permite renderizar con estilos personalizados
Licencia LGPL3 (http://www.gnu.org/copyleft/lesser.html)
4
![Page 5: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/5.jpg)
2.- Mapsforge features
5
Features:
Compact file format for fast on-device rendering of OpenStreetMap data
Easy to use MapView, similar to of the Google APIs Add-On
Powerful and flexible overlay API
Customizable map styles via XML configuration files
Small library ~ 300 KB
Demo application for Android 1.6+ available
Tool for creating custom map files
100% free and open source (LGPL3 license)
![Page 6: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/6.jpg)
3.- Documentación Mapsforge
6
Portal Mapsforge
http://mapsforge.googlecode.com/svn/tags/0.3.0/javadoc/index.html
Iniciación
http://code.google.com/p/mapsforge/wiki/GettingStartedMapView
Javadoc
http://mapsforge.googlecode.com/svn/tags/0.3.0/javadoc/index.html
Ejemplos y APIs
http://code.google.com/p/mapsforge/w/list
![Page 7: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/7.jpg)
2.- Descargar Mapsforge
7
Librería
Es la librería que tendremos que añadir a nuestros proyectos Android. ¡Sólo tiene 300K!
mapsforge-map-0.3.0-jar-with-dependencies.jar
![Page 8: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/8.jpg)
3.- Creación de un proyecto Mapsforge (I)
8
1.- En Eclipse, creamos un nuevo proyecto Android
2.- Añadimos la librería mapsforge-map.jar al proyecto:Project->Properties->JavaBuildPath->Libraries->AddExternalJARs->mapsforge-
>map-0.3.0-jar-with-dependencies.jar
3.- ¡Activamos el 'chekbox' de la librería en la pantalla
'order and export' del mismo JavaBuildPath!
![Page 9: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/9.jpg)
4.- Creación de un proyecto MapsForge (II)
9
4.- La actividad principal del proyecto hacemos que derive de MapActivity:public class HelloWorldMapsForgeActivity extends MapActivity {
…..........
}
5.- La aplicación necesita permito de escritura en el dispositivo externo (la sdcard). Añadimos al fichero AndroidManifest.xml:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
6.- Si utilizamos mapas on line necesitamos permiso de acceso a Internet:
<uses-permission android:name="android.permission.INTERNET" />
![Page 10: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/10.jpg)
5.- Ejemplo 1: Mapa básico online
El primer ejemplo consiste en la visualización de un mapa de OpenStreetMap on line. Lo hemos llamado mf_ejemplo1, y el código de la actividad principal es:
10
public class Mf_ejemplo1Activity extends MapActivity {
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MapView mapView = new MapView(this, new MapnikTileDownloader()); mapView.setClickable(true); mapView.setBuiltInZoomControls(true); setContentView(mapView); }}
![Page 11: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/11.jpg)
6.- Mapas off line
La visualización de mapas off line requiere que los mapas estén en un formato especial (.map).
Dicho formato se obtiene a partir de los mapas de OpenStreetMap en fromato .osm mediante la herramienta Osmosis.
Los mapas .map siguen siendo vectoriales, y se renderizan en el dispositivo mediante la librería Mapsforge.
Se pueden definir ficheros de estilo de renderizado personalizados.
11
![Page 12: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/12.jpg)
7.- Osmosis
Osmosis is a command line Java application for processing OSM data desarrollada por Brett Henderson.
http://wiki.openstreetmap.org/wiki/Osmosis
The tool consists of a series of pluggable components that can be chained together to perform a larger operation.
Componets for reading OSM Database
Components for reading from database and from file
components for writing to database and to file
components for deriving and applying change sets to data sources
components for sorting data, etc.:
12
![Page 13: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/13.jpg)
8.- Instalación de Osmosis
Descargar osmosis desde :
http://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.tgz
Descomprimir en un directorio
Darle path al subdirectorio bin de la instalación
Probar tecleando 'osmosis' . Nos deberá aparecer una pantalla de instrucciones de uso del programa.
13
![Page 14: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/14.jpg)
9.- Descarga mapas del API de OSM
El API de OSM permite descargar datos de varias formas. En todos los casos la descarga está limitada a 0.25 grados o 50000 nodos.
Desde el portal de OpenStreetMap, pestaña 'exportar'Con wget desde la consola linux:
14
Con osmosis:
wget -Ofacultad.osm 'http://openstreetmap.org/api/o.6/map? bbox=-3.7,40.4,-3.6,40.5'
osmosis --ra left=-3.6 bottom=40.5 right=-3.5 top=40.6 --write-xml facultad2.osm
![Page 15: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/15.jpg)
10.- Osmosis: Recortar un mapa .osm
15
Podemos descargar archivos OSM mas extensos, sin la limitación de los 50000 nodos, desde portales que suministran archivos planet, por ejemplo geofabrik:
http://download.geofabrik.de/osm/
Si tenemos un archivo planet extenso, y queremos recortar la zona comprendida en un rectángulo, podemos hacerlo con osmosis:
osmosis --read-xml facultad.osm --bb left=-3.5 bottom=40.5 right=-3.48 top=40.52 --write-xml mini.osm
![Page 16: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/16.jpg)
11.- Osmosis: Instalar el plugin Mapsforge
16
Para visualizar mapas off line con Mapsforge debemos convertir los ficheros .osm a formato .map. Para ello se utiliza osmosis, al que hay que añadirle un plugin específico. Los pasos son:
1.- Descargar el plugin:
mapsforge-map-writer-0.3.0-jar-with-dependencies.jar
2.- Copiar el fichero jar en el directorio 'lib/default' de la instalación de osmosis.
3.- Crear el fichero:
osmosis/config/osmosis-plugins.conf
4.- Añadirle al fichero anterior la siguiente línea:
org.mapsforge.map.writer.osmosis.MapFileWriterPluginLoader
![Page 17: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/17.jpg)
12.- Osmosis: crear un fichero .map
17
Para crear un fichero .map a partir de un fichero .osm, desde la consola linux ejecutamos osmosis:
osmosis --read-xml facultad.osm --mapfile-writer file=facultad.map --bbox 40.5,-3.5,40.6,-3.45 --map-start-position=40.52,-3.53 --map-start-zoom=16
![Page 18: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/18.jpg)
12.- Copiar el fichero .map al dispositivo
18
Podemos copiar ficheros en el dispositivo desde la vista DDMS de Eclipse (teniendo el movil conectado al PC)
Tambien podemos abrir un shell con el dispositivo mediante la herramienta 'adb' y ejecutar comandos 'cp' de linux.:
adb shell
En este caso solamente debe de haber un dispositivo conectado. (Si además tenemos abierto el emulador, hay que cerrarlo)
![Page 19: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/19.jpg)
13.- Ejemplo 2: Mapa básico off line
19
Tenemos que crear un directorio llamado 'maps' en la 'sdcard' del dispositivo y añadirle el fichero ramblas.map. El ejemplo se llama 'mf_ejemplo2':
public class Mf_ejemplo2Activity extends MapActivity { @Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MapView mapView = new MapView(this); mapView.setClickable(true); mapView.setBuiltInZoomControls(true);
String filepath= Environment.getExternalStorageDirectory(). getPath()+"/maps/ramblas.map"; mapView.setMapFile(new File(filepath)); setContentView(mapView); }}
![Page 20: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/20.jpg)
14.- Ejemplo 3: Mapa off line copiando mapa
20
Creamos el directorio 'res/raw' en la aplicación y añadimos el fichero ramblas.map. El programa copiará el mapa al directorio '/sdcard/maps' del dispositivo la primera vez que se ejecute. El ejemplo se llama 'mf_ejemplo3' (El código se adjunta con el material del taller)
![Page 21: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/21.jpg)
15.- El fichero de estilo: renderTheme
21
Los mapas se renderizan de acuerdo a un fichero de estilo que podemos descargar desde el repositorio de mapsforge:
renderThemeLa documentación la podemos encontrar en:
http://code.google.com/p/mapsforge/wiki/RenderThemeAPI
![Page 22: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/22.jpg)
16.- Ejemplo 4: Estilos y marcadores
22
(Ver el código del ejemplo llamado mf_ejemplo4 en la documentación del taller)
![Page 23: Taller mapsforge](https://reader035.fdocuments.ec/reader035/viewer/2022081720/559d62e61a28abc6158b45d8/html5/thumbnails/23.jpg)
23