小编App*_*ose的帖子

有关使用GroundOverlay或TileOverlay在GoogleMap中显示大型叠加图像的一些问题

我有一个应用程序,用户可以在Google地图上加载图像.这是为2.3开发的,所以有一个MapActivity,一个MapView和我的自定义Overlay类来显示图像.在overlay class draw-method中,我每次都重新计算一次Matrix,因此图像的大小和位置正确.我还有一个校准模式,用户可以通过拖动参考点来调整图像.

我将为应用程序添加一些功能,我想从使用片段等一些更新开始.用MapFragment替换MapActivity会带来一些问题,因为似乎没有任何支持你可以自己实现绘图的覆盖.好像我将不得不使用GroundOverlays或TileOverlay.(如果我错了,请纠正我.)

在添加叠加后,这些似乎都不支持对叠加的任何修改,因此图像的校准将不起作用.我对该部分的计划是将普通的ImageView放在MapFragment的顶部以进行校准模式.(这将隐藏所有标记,但在校准期间无关紧要.)为此,我需要做两件事:*接收影响校准点的所有触摸事件,并转发其余部分以允许正常变焦等.*随时检测位置/旋转/缩放级别发生变化,因此我可以调整图像.问题1:我可以期待任何重大问题吗?

然后我必须决定是否优先选择GroundOverlays或TileOverlay.

GroundOverlay:这似乎需要最少的工作,因为它仍然会加载整个图像.我也认为它会自动处理屏幕方向变化等事情.问题2:GroundOverlay能否适用于大图像(最大2000*2000像素)?是否涉及复制图像?因为图像太大,我在内存中买不到一个以上的副本.

TileOverlay:在某种程度上,这似乎是一个更专业的解决方案,因为它只使用实际需要的部分,我可以在以后引入支持同时使用多个地图图像源.我可能需要提前生成切片并为每个切片保存一个单独的文件,将其保存在内存中并按需创建切片可能需要大量内存.(或许我可以创建一个单独的磁贴服务,但这看起来有点脏.)问题3:是否可以控制磁贴缓存将使用多少内存?通常的限制是否适用?我不想在应用程序中的其他地方耗尽内存,因为缓存占用了我允许使用的大部分内存.问题4:文档说"请注意,与其他叠加层不同,如果重新创建地图,则不会自动恢复平铺叠加层,必须手动重新添加".我想这会在每次屏幕旋转时发生,这意味着必须再次读取文件,导致明显的加载延迟.这有什么好办法吗?问题5:当调用getTile并且我返回null(因为tile被保存在文件中并且我不想在读取它时阻止ui线程),在再次请求它之前需要多长时间?(似乎没有办法手动加载单个图块.)问题6:如何确定一个图块图像的良好图像分辨率(性能和质量)?

android google-maps-android-api-2

1
推荐指数
1
解决办法
4108
查看次数

标签 统计

android ×1

google-maps-android-api-2 ×1