【发布时间】:2012-02-14 08:08:55
【问题描述】:
我正在使用 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 源或提供程序,而在于画布绘制方法。有关如何解决此问题的任何想法?
在 zoomLevel 19 我可以很好地看到我的路径:
但这是下一个缩放级别的相同路径:
【问题讨论】:
-
你可能会感兴趣,我有一个类似的问题,我无法真正解决这里描述的问题:stackoverflow.com/questions/8115394/…
-
模拟器或真实硬件或两者兼而有之。如果 4.0.3 尝试关闭硬件加速。
-
这是关闭了硬件加速。如果我尝试打开它,我会收到大量 UnsupportedOperation 异常。
-
我发现这实际上是 OSMdroid 项目中记录的问题 - Issue 221
标签: android canvas paint osmdroid stroke