我创建了一个使用 OSMDroid Mapview 的 Android 移动应用程序。它从低于 18 的缩放级别加载得非常好。但是它只会重新缩放,从不为我提供 19 及以下的图 block 。
我有自己的图 block 服务器,使用 Mapnik、Renderd、Mod_tile 等。我也将我的应用程序设置为使用我自己的平铺服务器。使用 .../osm_tiles/{zoom}/{x}/{y} 我知道它会下降到 20 级,正如我所设置的。它根本无法将其提供给我的移动设备。
我注意到,一段时间后,我手机上缓存的图 block 往往会与一些加载默认 MAPNIK 的图 block “混合”。这导致我的 map 在某些地方看起来很奇怪。
编辑:感谢所有给我提示和建议的人。删除并重新下载图 block 后,不再混合了!当我查看代码时,我没有看到任何名称混合,但我很确定在某些时候我一定犯了将它们命名为相同的错误。
但是,它仍然没有低于 18 级。以下是我在代码中设置的内容:
ITileSource tileSource;
tileSource = new XYTileSource("custom", ResourceProxy.string.mapnik, 16, 20, 256, ".png", custom);
TileSourceFactory.addTileSource(tileSource);
检查后,图 block 确实会减少到 20 个,当我从网络浏览器访问它时,mod_tile 会提供它们。查看 Android 监视器(使用 Android Studios Preview 4),我看到它在较高级别下载和获取图 block ,但一旦下降到 19,所有这些都会停止获取。
最佳答案
这里发生了一些不同的事情。
1) 在缩放级别大于可用图像时,osmdroid 将缩放上次查看的图 block (拉伸(stretch)它以使其更大)。这给人一种放大的错觉,并且通常会在加载新图 block 时立即替换。该功能主要在缩放级别之间的动画过程中使用。在这种情况下,您根本无法获得 19 级以上的图 block 。为您的应用程序配置 osmdroid 时,您是否告诉它 map 源(ITileSource)支持更高的缩放级别?此外,您可能需要打开调试并观察日志以查看是否尝试下载 > 18 个图 block 。
2) 您是否确认图 block 服务器确实在缩放 >18 时生成图 block ? osmdroid 应该上升到 22 左右。测试很困难,因为很少有 map 源提供该级别的图像。
3) 混合了瓷砖。使用自定义图 block 源时,请始终确保您告诉 osmdroid 的图 block 源“名称”具有一定的唯一性。如果您对 bing 使用“MAPNIK”,对 mapquest 使用“MAPNIK”,那么在查看任一来源时,您最终会发现两个来源的图 block 不匹配。解决这个问题的唯一方法是清除tile catch,通常是/sdcard/osmdroid/tiles/
关于java - Android Mapview 缩放级别 - 自定义平铺服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34780943/