2011-06-15 17 views
5

Necesito agregar una capa base personalizada a mi vista del mapa. Según tengo entendido, los mosaicos del mapa son exactamente los mismos que los mosaicos de Google. Son archivos estáticos que se sirven en el siguiente formato: http: ///tilecache///.pngandroid mapview tile personalizado

Por ejemplo, el http: ///tilecache/6/16/26.png es la costa del golfo entre Florida alabama y mississippi.

¿Cómo creo una superposición con las teselas?

Respuesta

2

osmdroid (como se recomienda más arriba) es genial, pero bastante grande. Hace algún tiempo, decidí usar http://sourceforge.net/projects/libwlocate/ en su lugar - contiene funcionalidades para mostrar/desplazar/acercar mapas como osmdroid, pero puede optar por utilizar OSM, Google Maps o la vista satelital de Google.

Un ejemplo de cómo utilizar se puede encontrar en http://libwlocate.git.sourceforge.net/git/gitweb.cgi?p=libwlocate/libwlocate;a=blob;f=master/android/LocDemo/src/com/vwp/locdemo/LocDemo.java;h=5e2134fb7d197258f5f4f6f9021d2fa9ad9f2d9a;hb=HEAD

1

Recomendaría usar osmdroid. Puede extender OnlineTileSourecBase.

public class YourTileSource extends OnlineTileSourceBase implements IStyledTileSource<Integer> { 

public YourTileSource (String aName, string aResourceId, 
    int aZoomMinLevel, int aZoomMaxLevel, int aTileSizePixels, 
    String aImageFilenameEnding, String aBaseUrl) { 
    super(aName, aResourceId, aZoomMinLevel, aZoomMaxLevel, aTileSizePixels, 
      aImageFilenameEnding, aBaseUrl); 
} 

public void setStyle(Integer style) { 
    // TODO Auto-generated method stub 
} 

public void setStyle(String style) { 
    // TODO Auto-generated method stub 
} 

public Integer getStyle() { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public String getTileURLString(MapTile aTile) { 
    return getBaseUrl() + "/" + aTile.getX() + "/" + aTile.getY() + "/" + aTile.getZoomLevel() + ".png"; 
} 

}

A continuación, añada su fuente de azulejos a su MapView:

TileSourceFactory.addTileSource(new YourTileSource ("YourTileSource", null, 1, 20, 256, ".png", "http:///tilecache/")); 
mapView.setTileSource(TileSourceFactory.getTileSource("YourTileSource")); 

Su MAPview tiene que ser un org.osmdroid.views.MapView para que eso funcione. Las clases OSMdroid deberían reemplazar todas las clases de google maps.

comenzar por descargar el archivo osmdroid-android-3.0.8.jar, añadirlo a sus bibliotecas de carpeta en el proyecto y, a continuación, agregarlo al proyecto a través del botón derecho> Ruta Propiedades> Java Build> Bibliotecas> Añadir tarros y, a continuación, lo encuentras en las librerías carpeta. Publique más preguntas si las tiene, tengo mucha experiencia con osmdroid.

0

nuevas versiones de las OSMDroid, la aResourceId parámetro al constructor ha sido retirado y el último parámetro, aBaseUrl, es una String [ ]

public YourTileSource (String aName, 
    int aZoomMinLevel, 
    int aZoomMaxLevel, 
    int aTileSizePixels, 
    String aImageFilenameEnding, 
    String[] aBaseUrl) { 

    super(aName, 
      aZoomMinLevel, 
      aZoomMaxLevel, 
      aTileSizePixels, 
      aImageFilenameEnding, 
      aBaseUrl); 
}