Spanish [B4A]Escala mapa OSMDroid

maso1975

Member
Licensed User
Longtime User
Hola compañeros,

por mucho que busco y me rompo la cabeza pensando no se si lo que voy a plantear es un problema de la libreria o es algo que no termino de entender:

Estoy cargado un mapa offline com osmdroid 3.0.8 (version3.60) en un Galaxy Core 2 y con el zoom maximo del mapa, la imagen del mapa se ve a una escala de 113m (esto segun ScaleBarOverlay), y si hago lo mismo con un Galaxy S6, la imagen se muestra a una escala de 300m por lo que se ve mucho mas pequeña.
¿Alguien sabe como solucionar esto?

He utilizado la osmdroid 4.1 y pasa lo mismo.

Saludos.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
[QUOTE="maso1975[/QUOTE]

Hola, creo que lamentablemente lo que pides no se puede solucionar, a menos que pidas a quien ha echo la libreria que lo haga, que no seria tan descabellado, ya que en sus funciones está el poner el mínimo de Zoom (SetMinZoom)

Está claro que cuanto mayor es la resolución del dispositivo movil, sube mas la distancia mínima para ver el mapa, no se si está basado en puntos por pulgada o lo que hace es mirar si es dispositivo móvil o tablet por su tamaño en pulgadas (apostaria por esta) . Siento no poder ayudarte.


Saludos
 

maso1975

Member
Licensed User
Longtime User
Hola bgsoft,

gracias por responder, si que me has ayudado, por lo menos me has aclarado que es limitacion de la libreria.

He encontrado aqui: https://github.com/osmdroid/osmdroid/issues/81, una solucion que plantea kurtzmarc:

To fix #49, we would also have to add something like this to MapView:

public void setTileSource(final ITileSource aTileSource) {
mTileProvider.setTileSource(aTileSource);
float density = getResources().getDisplayMetrics().density;
TileSystem.setTileSize((int) (aTileSource.getTileSizePixels() * density));
this.checkZoomButtons();
this.setZoomLevel(mZoomLevel); // revalidate zoom level
postInvalidate();
}

y aqui: http://stackoverflow.com/questions/7240568/osmdroid-display-tiles-bigger, otro que plantea esta solucion:

final float scale = getBaseContext().getResources().getDisplayMetrics().density;
final int newScale =(int)(256* scale);
String[]OSMSource=newString[2];
OSMSource[0]="http://a.tile.openstreetmap.org/";
OSMSource[1]="http://b.tile.openstreetmap.org/";
XYTileSourceMapSource=newXYTileSource("OSM",null,1,18,newScale,".png",OSMSource);
map.setTileSource(MapSource);

Claro esta que esta en JAVA.

Se podria llevar este codigo a B4A, o utilizar el JAVA incrustado en el codigo de B4A para utilizar alguna de estas soluciones?
 
Top