我创建了一个使用Google Map Android API v2(即osmdroid不是一个选项)的离线地图,使用Openstreetmap图块作为GroundOverlays,但有一个小问题:在缩放级别大于14时,某些图块有1-3个它们之间的像素空间。其他瓷砖排列完美。它们之间似乎是随机的,它们之间没有空格。
我使用JTileDownloader下载了tile,然后我获取了所需的tile(使用我下载并放置在设备文件系统中的here)描述的技术,然后我得到了tile的LatLngBounds,然后我将它们放下在一个循环中:
groundOverlay = mMap.addGroundOverlay(new GroundOverlayOptions()
.image(BitmapDescriptorFactory.fromBitmap(mBitmapImage))
.positionFromBounds(tileBoundsArray[i])
.transparency((float)0));
我已经确认了瓷砖的纬线和长线应该排成一行。我还验证了所有位图都是相同的大小。我也使用UrlTileProvider尝试了这个特殊的tileset,它运行正常,所以它没有错。我这几天一直在努力奋斗,并希望得到任何建议。在其他任何地方都没有解决这个问题。谢谢!
答案 0 :(得分:2)
我终于找到了答案。我必须在瓷砖的纬度上以米为单位指定地图图块的宽度(我使用了图块的中心)。 Google地图使用墨卡托投影,这意味着地图的宽度取决于纬度。使用GoundOverlay.setDimensions(width)指定宽度。 This页面提供了有关如何计算宽度的说明。