¿Cómo puedo utilizar MapBox en Android

¿Cómo puedo mostrar las baldosas de MapBox en Android? Intenté usarlo con OSMDroid, y Nutiteq sin éxito. ¿Hay una biblioteca de android para MapBox?

Por ejemplo, he utilizado este código para implementar MapBox en OSMDroid: http://blog.spatialnetworks.com/post/2012/07/using-mbtiles-on-android-with-osmdroid

XYTileSource MBTILESRENDER = new XYTileSource("mbtiles", ResourceProxy.string.offline_mode, 1, 20, 256, ".png", "http://example.org/"); DefaultResourceProxyImpl mResourceProxy = new DefaultResourceProxyImpl(this.getApplicationContext()); SimpleRegisterReceiver simpleReceiver = new SimpleRegisterReceiver(this.getActivity()); File f = new File(Environment.getExternalStorageDirectory(), "mymbtilesfile.mbtiles"); IArchiveFile[] files = { MBTilesFileArchive.getDatabaseFileArchive(f) }; MapTileModuleProviderBase moduleProvider = new MapTileFileArchiveProvider(simpleReceiver, MBTILESRENDER, files); MapTileProviderArray mProvider = new MapTileProviderArray(MBTILESRENDER, null, new MapTileModuleProviderBase[] { moduleProvider }); this.mMapView = new MapView(this, 256, mResourceProxy, mProvider); 

Pero no funcionó, quiero cargar MbTiles directamente desde la web.

Editar

Se publica Official Mapbox Android SDK.

También, vea la respuesta de Mapbox.

A la gente que downvote, contesté la pregunta antes de que el sdk exista.

=============================================

Creo que Nutiteq parece bastante prometedor. Su API tiene muchas características. Además, sus proyectos de demostración son comentados en línea. Puedes ver este proyecto . Especialmente, MBTilesMapActivity podría ser algo que usted está buscando. La clase muestra cómo trabajar con mbtiles:

 // 1. Get the MapView from the Layout xml mapView = (MapView) findViewById(R.id.mapView); // 2. create and set MapView components Components components = new Components(); mapView.setComponents(components); // 3. Define map layer for basemap MBTilesMapLayer dbLayer = new MBTilesMapLayer(new EPSG3857(), 0, 19, file.hashCode(), file, this); mapView.getLayers().setBaseLayer(dbLayer); ... // 4. Start the map - mandatory mapView.startMapping(); // 5. zoom buttons using Android widgets - optional // get the zoomcontrols that was defined in main.xml ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomcontrols); 

También puede echar un vistazo a mi proyecto de juguete que se modifica desde su demo. Básicamente, mi aplicación permite al usuario introducir una url de un archivo mbtiles. A continuación, descarga el archivo y lo carga en MapView.

Si realmente tienes que seguir con OSMDroid, esto podría ser útil. No he tenido la oportunidad de probarlo.

Espero que esto ayude.

¿Hay una biblioteca de android para MapBox?

La mejor manera de usar Mapbox en Android es el Mapbox Android SDK ! Es la base de código oficial, un proyecto de código abierto que soporta azulejos vectoriales, animación de mapas y un montón más – y también está diseñado para facilitar la transición desde los mapas predeterminados del sistema.

Re:

Pero no funcionó, quiero cargar MbTiles directamente desde la web.

Dado que un archivo MBTiles es un paquete de fichas que suele ser bastante grande – y no se puede solicitar individualmente – por lo general no se carga directamente sólo para mostrar un mapa. El enfoque que toma el SDK es el almacenamiento en caché dinámico, como se muestra en este ejemplo . El ejemplo utiliza Mapbox, pero el mecanismo de caché es general y podría funcionar con cualquier servidor de mosaico.

Divulgación: Trabajo para Mapbox, y de vez en cuando trabajo en el núcleo de nuestro código nativo, incluyendo el SDK de Android.

¿Sabía que con la API de Google Maps v2 , puede utilizar su propio proveedor de mosaicos?

Vea TileProvider y UrlTileProvider .

El equipo de Mapbox ha comenzado la liberación pre-alfa de mapas de Mapbox en Android, así que me gustaría recomendarlo, solo para intentarlo. Supongo que es bueno saber que han escuchado oraciones de los desarrolladores de Android.

Mapbox para Android en Github

OSMDroid está terriblemente documentado, pero la forma en que lo diseñó hace que sea muy flexible y auto-explicativo si observa los métodos implementables. Aquí es cómo se utilizan las baldosas de Mapbox con OSMDroid desde enero de 2015.

  mvMap = (MapView) rootView.findViewById(R.id.mapview); String mapCode = "mapbox.streets"; final String accessToken = "myAccessToken"; OnlineTileSourceBase customTileSource = new XYTileSource("MapBoxSatelliteLabelled", ResourceProxy.string.mapquest_aerial, 1, 19, 256, ".png", new String[]{ "http://a.tiles.mapbox.com/v4/" + mapCode + "/", "http://b.tiles.mapbox.com/v4/" + mapCode + "/", "http://c.tiles.mapbox.com/v4/" + mapCode + "/", "http://d.tiles.mapbox.com/v4/" + mapCode + "/"}){ @Override public String getTileURLString(MapTile aTile) { String str = super.getTileURLString(aTile) + "?access_token=" + accessToken; return str; } }; TileSourceFactory.addTileSource(customTileSource); mvMap.setTileSource(customTileSource); 

Sugerencia rápida: si utiliza Android Studio, utilice puntos de interrupción para obtener el valor de cualquier variable. Esto ayuda con la depuración y la comprensión de código desconocido. Así es como descubrí que getTileURLString () devuelve la URL completa del mosaico.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.