java - Android Mapview 缩放级别 - 自定义平铺服务器

标签 java android osmdroid mobile-application

我创建了一个使用 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/

相关文章:

java - 从自定义键盘获取键盘输入

android - 两个手指或 pinc 缩放到 osmdroid 中的 map View

java - soap 请求 java 中缺少 header

java - 构建查询时出错,显示 "previous operations still waiting for clauses"

Android:使用图像自定义离线 map

android - 如何在 MapView 上绘制一个多边形,填充它,并在其上放置一个 onTouch 事件

android - osmdroid - 离线 map ,滚动缩放 map 后不显示 map

java - 我应该在我的类图中包含属于 java API 一部分的类吗?

java - 如何在Java中制作数组数组

android - 下载的可执行文件无法在主机上执行