class OnlineTileSourceBase 中的“aBaseUrl”参数的用途?
Purpose of the `aBaseUrl` parameter in the class OnlineTileSourceBase?
我不明白 class OnlineTileSourceBase
中 aBaseUrl
参数的用途。我询问的原因是我正在尝试显示离线磁贴,但到目前为止无法正常工作。我看到了我创建的叠加层,但没有地图数据(只有那个灰色网格),我想知道是否需要将 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
字符串的末尾。
我不明白 class OnlineTileSourceBase
中 aBaseUrl
参数的用途。我询问的原因是我正在尝试显示离线磁贴,但到目前为止无法正常工作。我看到了我创建的叠加层,但没有地图数据(只有那个灰色网格),我想知道是否需要将 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
字符串的末尾。