具体需求:显示自制室内一比一地图,并且通过zigbee模块串口接受另外一个zigbee移动端的位置信息,然后显示在地图中,位置信息500ms更新一次。
已完成:地图不添加缩放和拖动效果的情况下,实现位置更新显示,(通过在showBit方法中画实心圆和编号实现)。
现在提问:1.在实现地图图片缩放和拖动效果后,zigbee模块位置信息显示还没有找到好方法,因为原本的实现方法是计算死位置信息转换为像素坐标后的坐标值,如果缩放或者拖动后,该位置信息坐标就乱了。请问有计算方法吗?
2.另外自己想了一个方法,在每次更新View的方法中,(此处为showBit()方法),新建一个Canvas,以该地图图片为背景,(即Canvas canvas = new Canvas(bitmap)),这样显示的位置信息的圆圈会跟随图片缩放或拖动,但是一个弊病是图片被污染,即canvas在画的时候画在了图片上,所以每次画的圆圈都保留在了图片上,请问有没有解决方法呢?
地图缩放和移动的逻辑是这样的:1,清除上次绘制的图形。2:计算手指移动和缩放的距离及比例,对最初始的计算死的坐标进行按照手机的平移和缩放,重新计算新的位置,重新绘制。
不能每次用上次的bitmap作为canvas,这样不停的创建canvas,并且数据没有清除,资源没有释放,最后手机只会越来越卡。