相似百度地圖的 放大縮小功能 的 座標重定位問題

需求: 算法

好比在百度地圖中針對某一座標點  滾軸滾動進行  縮放。以前針對的那個點的 還保持在鼠標對應位置。 svg


svg中新座標算法 orm

transform的 translate 和 scale 屬性的設置 it

translate 是座標平移換算,scale是座標倍數換算 io

咱們只針對 x方向 座標 計算(y方向同理) 百度地圖

鼠標在svg當前座標 e.offsetX (svg要是position:absolute哦)設爲變量X form

當前平移 設爲 t1 , 當前 縮放比例 爲 s1 變量

則倍數 縮放後 比例爲 s2 百度

求縮放後如何 設置 平移座標 t2 以補全 縮放帶來的偏移 保證 鼠標指向的仍然是以前的位置 transform

鼠標執行的某個位置 的實際鼠標爲 (x-t)/s

得  (x-t1)/s1=(x-t2)/s2  (x爲鼠標位置 ,先後未發生變化)

t2=x-(x-t1)*(s2/s1)   (s2/s1 爲本次縮放的倍數)

把平移座標設爲t2 就能保證先後一致了

相關文章
相關標籤/搜索