[Android] 实现自定义室内地图和zigbee模块位置显示的解决方案

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

1个回答

地图缩放和移动的逻辑是这样的:1,清除上次绘制的图形。2:计算手指移动和缩放的距离及比例,对最初始的计算死的坐标进行按照手机的平移和缩放,重新计算新的位置,重新绘制。
不能每次用上次的bitmap作为canvas,这样不停的创建canvas,并且数据没有清除,资源没有释放,最后手机只会越来越卡。

Gui_m
哥们OnlyRead 回复武陵半仙: 缩放通过添加屏幕触摸监听,监听down下和up时的两个手指之间的距离,相除就是缩放比例,然后进行计算。ps:最近忙了,没时间看这些。
大约 2 年之前 回复
xie_sining
武陵半仙 我现在就是卡在重新计算新的位置这里,平移很容易计算,缩放我一直没找到对的计算方法。
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!