class OnlineTileSourceBase 中的“aBaseUrl”参数的用途?

Purpose of the `aBaseUrl` parameter in the class OnlineTileSourceBase?

我不明白 class OnlineTileSourceBaseaBaseUrl 参数的用途。我询问的原因是我正在尝试显示离线磁贴,但到目前为止无法正常工作。我看到了我创建的叠加层,但没有地图数据(只有那个灰色网格),我想知道是否需要将 aBaseUrl 设置为适当的值。

设备上的数据在sdcard/osmdroid/tiles/Mapnik/中。 Mapnik 包含文件夹 0、1、... 14,这些文件夹本身包含包含 .jpg 文件的文件夹。

在线,此代码有效(删除调用 setUseDataConnection(false) 并将图块源设置为 MAPNIK)。基于@nightfixed here.

的代码
    public class MapActivity extends AppCompatActivity {

        final private int MIN_ZOOM_LEVEL = 0;
        final private int MAX_ZOOM_LEVEL = 14;
        final private int TILE_SIZE = 256;
        final private String IMAGE_EXTENSION = ".jpg";

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);

            CustomTileSource  tileSource = new CustomTileSource ("Default",   
                    MIN_ZOOM_LEVEL,     
                    MAX_ZOOM_LEVEL,   
                    TILE_SIZE,                      
                    IMAGE_EXTENSION,  
                    CustomTileSource.TILE_URL);  

            final MapView mapView = (MapView) findViewById(R.id.mapview);
            mapView.setTileSource(tileSource);
            // mapView.setTileSource(TileSourceFactory.MAPNIK);
            mapView.setUseDataConnection(false); // keeps the mapView from loading online tiles using network connection.

        }

    }


   public class CustomTileSource extends OnlineTileSourceBase {

    public static String[] TILE_URL = {"my_url"};

    public CustomTileSource (String aName,
                             int aZoomMinLevel,
                             int aZoomMaxLevel,
                             int aTileSizePixels,
                             String aImageFilenameEnding,
                             String[] urlArray) {
        super(
                aName,
                aZoomMinLevel,
                aZoomMaxLevel,
                aTileSizePixels,
                aImageFilenameEnding,
                urlArray);

    }

    // returns the url for each tile, depending on zoom level
    // this is where I changed the return statement to take the first url from the string array of urls
    @Override
    public String getTileURLString(MapTile aTile) {
        return TILE_URL[0] + aTile.getX() + "+" + aTile.getY() + "+" + aTile.getZoomLevel();
    }
}

我建议你密切关注这个post:Download maps for osmdroid

无需CustomTileSource,只需使用mapView.setTileSource(TileSourceFactory.MAPNIK);

如果您的图块在 "Mapnik" 目录 (sdcard/osmdroid/tiles/Mapnik) 中,则 TileSource aName 应设置为 "Mapnik",而不是 "Default"。

离线时,aBaseUrl 无关紧要。

aBaseUrl 基本上是在线地图服务器的主要 url。例如

http://tiles.mymapserver.com/mapdata(注,完全虚构)

aBaseUrl 之后,osmdroid 通过各种算法计算要加载的图块,然后在下载时将 /Z/X/Y.jpg 之类的内容附加到 aBaseUrl 字符串的末尾。