我正在使用 OSMdroid 来实现映射应用程序。
我已经实现了一个自定义 MapTileProvider,它使用允许缩放级别高达 22 的平铺源。
默认的 MAPNIK 提供程序仅允许缩放到 18 级。
问题是任何 PathOverlay 实例在缩放级别 19 之前都可以完美绘制,但在缩放级别 20-22 时无法正确绘制。看起来有人用橡皮擦擦掉了路径长度的 90% 以上(见下面的屏幕截图)。
我已经逐步完成了 PathOverlay 的 draw() 方法,并且 exerything似乎计算正确(对于 ZoomLevel 22,中间点显示正确,然后 XY 投影除以 22-ZoomLevel 以获得当前屏幕坐标)。
谁能提供一些关于问题是什么以及如何解决的见解?
如果我使用 Cloudmade 小图块调用 MapView,也会发生同样的事情,它允许放大到 20 级并且是“内置”osmDroid 图块提供程序类。
//mMapTileProvider = new HighResMapTileProvider(this);
mMapTileProvider = new MapTileProviderBasic(this,TileSourceFactory.CLOUDMADESMALLTILES);
mMapView = new MapView(this, 256, mResourceProxy,mMapTileProvider);
因此,问题似乎不在于 tile 源或提供程序,而在于 canvas 绘图方法。关于如何解决这个问题的任何想法?
在 zoomLevel 19 我可以很好地看到我的路径:
但这是下一个缩放级别的相同路径: