我正在使用谷歌地图安卓版的图块叠加功能来显示由第三方服务提供的自定义地图图块。
我的问题是,当用户缩放地图并切换到下一个缩放级别时,已经可见的图块正在消失,然后触发getTile()
我的TileProvider
实现方法。这会导致我的地图视图出现令人不快的闪烁,以及用户只能看到默认地图的时刻。
标准的 Google 地图行为会缩放和"过度缩放"当前可见的磁贴,直到加载新的磁贴。有什么方法可以用瓷砖叠加创建相同的效果吗?我知道"过度缩放"的瓷砖可能会模糊,但这在我的情况下没关系。
缩放级别更改时删除自定义磁贴是默认的 Android 谷歌地图行为。要"抑制"它(当用于缩放±1级别的图块仍在下载时显示以前的地图),您可以:
1)使用当前地图视图的屏幕截图创建GroundOverlay
。谷歌地图的屏幕截图,您可以在DiscDev的答案中这样做,并在下载磁贴时将其删除;
2)创建自定义视图,该视图扩展MapView
类,就像这个答案一样,并在覆盖的dispatchDraw()
方法中显示您想要的任何内容;
3)您可以在MapView
上设置ImageView
,并在更改缩放和加载新磁贴时显示屏幕截图。如有必要,您可以将点击事件从ImageView
转换为MapView
等等。
我更喜欢第 2 页 - 创建基于MapView
的自定义视图,覆盖dispatchDraw()
并在加载新地图时在其中显示临时地图。