У меня есть следующий код:OSM карты, пользовательский источник плитки не используется
public class MainActivity extends Activity {
MapView map;
XYTileSource customTileSource;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = (MapView) findViewById(R.id.mapView);
map.setMultiTouchControls(true);
map.setMapListener(new MyMapListener());
ITileSource tileSource = TileSourceFactory.MAPNIK;
String tileUrl[] = {"https://bla_bla_bla__don't wanna show this here"};
customTileSource = new MyXYTileSource("Point", null, 8, 18, 256, ".png", tileUrl);
map.setTileSource(customTileSource);
GeoPoint startPoint = new GeoPoint(47.021461, 28.86383);
IMapController mapController = map.getController();
mapController.setCenter(startPoint);
mapController.setZoom(10);
MapEventsOverlay eventsOverlay = new MapEventsOverlay(this, new MyMapEventsListener());
map.getOverlays().add(eventsOverlay);
}
private class MyMapListener implements MapListener {
@Override
public boolean onScroll(ScrollEvent event) {
return false;
}
@Override
public boolean onZoom(ZoomEvent event) {
Log.d("atf", "Zoom level is: " + event.getZoomLevel());
return true;
}
}
private class MyMapEventsListener implements MapEventsReceiver {
@Override
public boolean singleTapConfirmedHelper(GeoPoint p) {
Log.d("atf", "Taped on long="+p.getLongitude()+" lat="+p.getLatitude());
return true;
}
@Override
public boolean longPressHelper(GeoPoint p) {
return false;
}
}
private class MyXYTileSource extends XYTileSource {
public MyXYTileSource(String aName, ResourceProxy.string aResourceId, int aZoomMinLevel, int aZoomMaxLevel, int aTileSizePixels, String aImageFilenameEnding, String[] aBaseUrl) {
super(aName, aResourceId, aZoomMinLevel, aZoomMaxLevel, aTileSizePixels, aImageFilenameEnding, aBaseUrl);
}
@Override
public String getTileURLString(MapTile aTile) {
String tileUrl = super.getTileURLString(aTile);
Log.d("atf", "Tile url String: "+tileUrl);
return tileUrl;
}
}
}
Целью этого является использование пользовательских плитки для отображения карты. Это действительно работает нормально. За исключением случая, когда этот код работает на «Samsung Galaxy Ace 3». Возможно, есть другие устройства с одинаковой проблемой.
Для уровней масштабирования ниже 17, он не загружает пользовательские плитки. Он начинает загружать их, когда увеличение увеличивается выше 17.
Может кто-нибудь объяснить мне почему?
К сожалению, я забыл указать: Когда новые плитки не загружены, старые загружаются (из исходного источника плитки по умолчанию). Таким образом, карта не совсем пуста.
Вы можете уточнить? Zoom> 17 загрузок или масштабирование <17 загрузок. Нечетко – spy
Zoom> = 17 загрузок – nolanic
Вы пытались увеличить количество источников плитки max до чего-то большего? попробуйте 19 или 20, чтобы увидеть, есть ли разница – spy