我创建了一个使用OSMDroid Mapview的Android移动应用程序。它从18以下的缩放级别加载完全正常。但它只重新调整,从不为我提供19及以下的瓷砖。
我有自己的平铺服务器使用Mapnik,Renderd,Mod_tile等等。我已将我的应用程序设置为使用自己的磁贴服务器。使用... / osm_tiles / {zoom} / {x} / {y}我知道它已降至20级,正如我所设定的那样。它根本无法提供给我的移动设备。
我注意到,过了一段时间,我手机上缓存的瓷砖往往会混合使用#34;有些加载了默认的MAPNIK。这导致我的地图在某些地方看起来很奇怪。
编辑:感谢所有给我提示和建议的人。删除并重新下载磁贴后,它不再混合!当我查看我的代码时,我没有看到任何名称的混合,但我非常确定在某些时候我必须犯错误地命名它们。然而,它仍然没有低于18级。这是我在代码中设置的内容:
libtest
检查时瓷砖确实下降到20,当我从网络浏览器访问时,mod_tile为它们提供服务。浏览Android监视器(使用Android工作室预览4)我看到它下载并在更高级别获取磁贴,但一旦降至19,所有停止提取。
答案 0 :(得分:1)
这里发生了一些不同的事情。
1)在缩放级别>与可用的图像相比,osmdroid将缩放最后查看的图块(拉伸它以使其更大)。这给出了放大的错觉,并且通常在加载新的图块时立即替换。这是一个主要在动画期间用于缩放级别的功能。在这种情况下,你只是没有得到19级以上的瓷砖。为您的应用程序配置osmdroid时,您是否告诉它地图源(ITileSource)支持更高的缩放级别?此外,您可能需要打开调试并观察日志以查看是否尝试下载> 18个瓷砖。
2)您是否确认过瓷砖服务器确实在缩放> 18时生成了瓷砖? osmdroid应该上升到22左右。很难测试,因为很少有地图来源提供该级别的图像。
3)混合瓷砖。使用自定义磁贴源时,请始终确保告诉osmdroid的磁贴源“名称”有点独特。如果您使用“MAPNIK”进行bing,使用“MAPNIK”进行mapquest,则在查看任何一个时,您最终会得到两个来源的图块不匹配。修复它的唯一方法是清除tile catch,通常是/ sdcard / osmdroid / tiles /
答案 1 :(得分:0)
首先,通过删除和重新下载瓷砖解决了混合瓷砖的问题,它不再混合!当我查看我的代码时,我没有看到任何名称混合,但我很确定在某些时候我一定错误地将它们命名为相同。感谢Spy指出它。
所以只需插入你的Android手机,找到名为“osmdroid”的文件夹,并相应地删除瓷砖。
接下来,似乎我忘了添加行
mv.setTileSource(TileSourceFactory.getTileSource("private"));
创建源并添加源后,我还需要在mapview上专门设置它。之前它没有超过18级并下载磁贴,因为它使用的是默认的OSM磁贴源! :)