公司新專案要內建一個地圖,或者說舊地圖要改版,搞一個新的地圖,在UI和互動上要對齊微信,功能上貼合業務需求。
其實這些都挺簡單的,主要麻煩的地方在於下面的動圖互動。
不過先說悔不當初的點,我是按照騰訊地圖教學內建在專案中,在瀏覽器中預覽都是正常,但是在真機偵錯時,發現並不能這麼做,打算再改下,寫一個html在專案中,再通過webview
引入到專案當中。
好了,希望讀者引以為戒。
接下來說說這個互動的開發吧。
第一版的做法是利用uni-app
的獲取裝置的寬高,地圖寬度佔滿屏,內容與列表各佔50%的高度,當觸發展開列表時,調整高度佔比並通過transition
屬性新增過渡效果。
但是這樣子做的結果就是, 當高度佔比自動調整時,其本身就有過度式的其調整高度的值,動畫看起來就是卡頓卡頓的。
說白了就是一個字,難看啊。
ps:以下程式碼只是一個核心的理念,並非真實可執行的程式碼,可以理解為就是個虛擬碼;
<template> <view> <view :style="{height: mapHeight + 'px'}"> </view> <view :style="{height: windowHeight - mapHeight + 'px'}"></view> </view> </teamplate> export default { data(){ return { windowWidth: uni.getSystemInfoSync().windowWidth, windowHeight: uni.getSystemInfoSync().windowHeight, searchStatus: false, } }, computed{ mapHeight(){ return searchStatus ? this.windowHeight * 0.7 : this.windowHeight * 0.5; } } } <style scoped> .map-box, .result-list{ transition: height .3s; } </style>
其實第二版看完思路之後,就會覺得第一版真的是我失了智才會想那樣去做。
第二版的思路和第一版整體一致,都是調整高度,但是不同是時,是你進我退式的整體移動。
一、列表容器高度佔比70%,內容高度佔總高度50%。 70%是展開後的高度。
二、展開列表時,地圖向上移動10%,列表向上移動20%;
相比起上一版調整高度導致最終動畫卡頓來說,這一版是調整top值。
地圖高度始終是50%,展開列表後隱藏了20%。
列表高度始終是70%,展開後,向上移動20%就額外遮住了一部分的地圖,此時地圖中心店不變。不需要重新獲取地圖中心點。
<template> <view> <view :style="{height: windowHeight*0.5+'px', top: searchStatus ? '-10%' : 0 }"> </view> <view :style="{height: windowHeight*0.7+'px', top: searchStatus ? '50%' : '30%'}"> <view :style="{height: searchStatus ? windowHeight*0.5+'px' :windowHeight*0.7+'px'}"></view> </view> </view> </teamplate> export default { data(){ return { windowWidth: uni.getSystemInfoSync().windowWidth, windowHeight: uni.getSystemInfoSync().windowHeight, searchStatus: false, } } } <style scoped> .map-box, .result-list{ transition: height .3s; } </style>
公司專案程式碼,不好貼專案地址, 這一部分完整的程式碼還是挺多的, 如果實在沒有實現思路的朋友可以評論區留言,或者加聯絡方式友好交流,無廣告,不收費。
原文地址:https://juejin.cn/post/7054700579590766628
推薦:《》
以上就是移動uni-app專案怎麼實現傳送位置的地圖互動的詳細內容,更多請關注TW511.COM其它相關文章!