【发布时间】:2016-08-03 10:12:08
【问题描述】:
我环顾四周,找不到答案,我希望这是一件很简单的事情来实现this 问题似乎相似但没有回复!所以问题是这样的;我在 android 设备上有我的离线地图图块:
/sdcard/application-name/uuid/tiles
我已经像这样设置了 OSM 缓存:
File applicationDir = new File(Environment.getExternalStorageDirectory(), File.separator + "application-name" + File.separator + "uuid" + File.separator);
OpenStreetMapTileProviderConstants.setCachePath(applicationDir.getAbsolutePath());
然后我设置 TileSource:
ITileSource tileSource = new XYTileSource ("tiles", 0, 18, 256, ".png", new String[]{});
和 TileProvider:
tileProvider = new MapTileProviderBasic(getActivity());
tileProvider.setTileSource(tileSource);
当我运行我的应用程序时,我会得到一连串的这些:
Error downloading MapTile: /15/16000/9960
java.lang.IllegalArgumentException: n <= 0: 0
at java.util.Random.nextInt(Random.java:175)
at org.osmdroid.tileprovider.tilesource.OnlineTileSourceBase.getBaseUrl(OnlineTileSourceBase.java:33)
at org.osmdroid.tileprovider.tilesource.XYTileSource.getTileURLString(XYTileSource.java:19)
at org.osmdroid.tileprovider.modules.MapTileDownloader$TileLoader.loadTile(MapTileDownloader.java:171)
at org.osmdroid.tileprovider.modules.MapTileModuleProviderBase$TileLoader.run(MapTileModuleProviderBase.java:291)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
大概是因为没有找到本地图块,而 MapTileProviderBasic 最终落入 MapTileDownloader 并且因为没有在线图块而失败。
任何建议都非常感谢! 谢谢。
【问题讨论】:
-
你有没有试过自己写路径看看会发生什么?
-
我认为路径不是问题,当我对其进行硬编码时,它仍然失败。我认为问题出在 Source 或 Provider 上。
-
如果我看到任何东西,我会在几个小时后回复你,我必须与我的代码进行比较,因为我觉得我的代码与你的没有太大区别。
-
谢谢@M.Haché,你看过你的代码了吗?
-
尝试在您的 tilesource 上设置示例 URL。而不是
ITileSource tileSource = new XYTileSource ("tiles", 0, 18, 256, ".png", new String[]{});尝试ITileSource tileSource = new XYTileSource ("tiles", 0, 18, 256, ".png", new String[]{"http://i.dont.care.org/"});