我正在做一个应用程序,我需要检测用户是否在 MapView 上选择陆地或海上的经度/纬度对。我可以通过向 Google 地图服务发送请求来回答这个问题,但我希望它也可以离线工作。所以我想出了两种可以发挥作用的方法,而且由于我在位图与内存区域上相当绿色,我想我会得到你的意见。
主要思想是我正在存储我想要覆盖的地图区域的一个小的黑白位图(比如 200x200 像素)。当用户选择经度/纬度对时,该对将转换为一组 x,y 像素,我检查像素坐标是指向黑色像素(陆地)还是白色像素(海/水)。到目前为止,这是我提出的两种方法。
选项 A
当用户即将选择长/纬度对时延迟加载位图并用于getPixel()
检查它是在陆地还是海上。保持对图像的弱引用,让它在 GC 出现时被垃圾收集。
选项 B
将位图的每个像素坐标对保存在 SQLite 数据库中,并在用户每次要选择长/纬度对时进行查找。
我猜A在速度方面是最好的(首先忽略从磁盘读取位图的开销),但是在电池方面将位图保存在内存中是否成本高昂?
如果您对如何执行此操作有任何其他建议,那么我很乐意在这里:)