Android谷歌地图平铺叠加层缩放更新

3
我在Android Google Map中有一个瓦片覆盖层。一切都运作正常。但是当我放大地图时,所有的瓦片都会消失,然后下载新的瓦片,只有在1-2秒后(新的瓦片下载完成后)地图才显示它们。因此,地图在一段时间内不会显示瓦片。是否有一种方法只在下载新瓦片时更新瓦片? 我使用基本的UrlTileProvider和Aeris Overlay maps。

enter image description here


你解决了吗?我也遇到了同样的问题。 - has19
1个回答

1

无论如何,您可以使用例如Picasso库(或单独的ThreadAsyncTask)将每个瓦片作为图像下载到本地内部或外部存储器,并“手动”确定“所有新瓦片已下载”事件(例如,在每个public void onSuccess()(对于Picasso)或protected void onPostExecute()(对于AsyncTask)上增加已下载的瓦片计数器,或在public void run()结束时等待等于所有瓦片数量),然后像Alex Vasilkov此答案中那样使用{{link3:TileProvider}}来下载瓦片的本地存储。请保留HTML标签。

更新

为了在下载缩放级别为zoom+1的瓦片时显示先前的地图,可以创建一个GroundOverlay,其中包含当前地图视图的截图。可以像DiscDevthis问题的答案中那样制作Google地图的截图。

更新#2

有几种方法可以解决您的问题:1)您可以创建一个自定义视图,该视图扩展MapView类,就像this答案中一样,并在重写的dispatchDraw()方法中显示您想要的任何内容;或者 2)您可以在MapView上方设置一个ImageView,并在缩放更改和加载新瓦片时将其显示为屏幕截图。如果必要,您可以将来自ImageView的点击事件转换为MapView等。

我更喜欢第1种方法 - 创建基于MapView的自定义视图,重写dispatchDraw()并在新地图加载时在其中显示临时地图。

我已经将瓦片下载到本地,但问题仍然存在。基本上的情况是,每当我缩放到下一级别时,谷歌地图会突然从屏幕上删除当前的瓦片并显示空白屏幕。之后需要大约一秒钟的时间来加载下一个瓦片并显示它们,这对用户体验来说非常烦人。 - has19
尝试使用已下载的瓦片创建GroundOverlay。 - Andrii Omelchenko
我的瓷砖已经从本地存储加载,我已经下载了它们。 - has19
如果您尝试在谷歌地图应用程序中放大,该应用程序会持续缩放当前瓷砖图像,直到加载下一个缩放瓦片。 - has19
很抱歉,对于我的问题似乎没有解决方案 :( ((https://stackoverflow.com/questions/28200990/android-maps-v2-tiles-disappear-when-zooming) - has19

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接