原文:https://www.zybuluo.com/Tyhj/note/942875
最近公司項目需要用到這樣一個功能饶氏,就是有個地圖,點擊進(jìn)入到下一級地圖有勾,地圖是可以放大縮小的疹启。地圖放大縮小后點擊區(qū)域就有點難判斷,其實單單手勢的放大縮小圖片做到完美也是很難的蔼卡。
我首先在GitHub上面找到一個完全符合自己要求的:InDoorSurfaceView
項目地址:https://github.com/karonl/InDoorSurfaceView
但是其實有一些小問題喊崖,比如圖片加載前的空白,圖片會平移出可視界面雇逞,還有內(nèi)存泄漏問題荤懂,反正就是用不了,程序會崩塘砸,使用起來也很麻煩节仿。
然后自己仔細(xì)想想,這個東西并不難呀掉蔬,我們先獲取圖片的大小廊宪,圖片放大后我們只要知道放大的倍數(shù),和圖片X軸和Y軸偏移的距離女轿,點擊的時候箭启,我們獲取點擊點相對于圖片的坐標(biāo),我們把點擊的點的坐標(biāo)也同樣偏移一下蛉迹,再縮小相同的倍數(shù)傅寡,得到的就是相當(dāng)于點擊原圖的坐標(biāo),這樣我們只需要在知道我們所標(biāo)記的區(qū)域相當(dāng)于圖片的相對位置婿禽,其實也就是用百分比來表示赏僧,然后就可以了。
怎么獲取相關(guān)信息并且做出一個很好的可縮放控件呢扭倾,剛好我之前使用過一個非常好的可縮放的ImageView控件:PinchImageView淀零,我本來打算根據(jù)這個控件來改寫,一看源碼膛壹,我們要的數(shù)據(jù)它大多數(shù)已經(jīng)實現(xiàn)了驾中,具體就按照之前方法來寫,完成后效果也不錯
項目地址:https://github.com/tyhjh/ZomMapView
點擊查看效果:http://oy5r220jg.bkt.clouddn.com/g_1108094420