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