我正在使用osmdroid和从OSM下载的地图,最高可达16级。我想知道是否有办法让osmdroid使用该缩放级别的瓷砖,但将其绘制得更大。
问题在于,该级别上的瓷砖对我来说具有足够的细节,但是绘制得太小了。我已经看到一些其他应用程序使用相同的瓷砖级别,但以某种方式设法将它们绘制得更大。
谢谢。
问题在于,该级别上的瓷砖对我来说具有足够的细节,但是绘制得太小了。我已经看到一些其他应用程序使用相同的瓷砖级别,但以某种方式设法将它们绘制得更大。
谢谢。
final float scale = getBaseContext().getResources().getDisplayMetrics().density;
final int newScale = (int) (256 * scale);
String[] OSMSource = new String[2];
OSMSource[0] = "http://a.tile.openstreetmap.org/";
OSMSource[1] = "http://b.tile.openstreetmap.org/";
XYTileSource MapSource = new XYTileSource(
"OSM",
null,
1,
18,
newScale,
".png",
OSMSource
);
map.setTileSource(MapSource);
根据屏幕密度调整比例是一个相对不错的解决方案。在我的测试中,一些图片变得稍微模糊,但如果你减少缩放来应对这种情况,就会得到非常好的结果。
顺便说一句,这不是我的解决方案,我在Github上的OSMDROID问题中找到了它。感谢stefangab95。
mMapview.setTilesScaledToDpi(true)
这个语句可以解决问题。
我正在使用离线瓦片,并通过以下操作以2倍分辨率显示它们。重要的是保持512像素大小,即使瓦片只有256像素。
myMapView.setTileSource (new XYTileSource ("Mapnik", ResourceProxy.string.offline_mode, 13, 17, 512, ".png", "http://127.0.0.1"));
http://developers.cloudmade.com/projects/tiles/documents
我会在低密度和中密度设备上使用普通的瓷砖,而在高密度和超高密度设备上使用高分辨率的瓷砖。
你可以使用不同的瓷砖来源,比如微软必应。那里也有更大的街道名称。
一个在OSMdroid当前工作模型内的解决方法是使用图像处理软件,如ImageMagick或Photoshop,在更高的缩放级别下创建一组新的位图瓦片。
您需要做的是将每个当前瓦片(256x256像素)调整大小,将大小和宽度加倍,然后将图像分成4个新瓦片。根据新缩放级别的命名约定保存每个瓦片。瓦片地图命名约定可以在此处描述,以及从原始名称获取4个新名称的简单方法