背景
最近在開發(fā)地圖業(yè)務用到百度地圖登刺。需要在上面畫覆蓋物塘砸,我用到了百度的Label標簽+自定義樣式形成如下的兩個覆蓋物矾瘾。
image.png
問題
畫一個覆蓋物沒有問題放妈,會按照經緯度嚴格去定位顯示正常:如寶安區(qū)顯示在寶安區(qū)的位置
寶安區(qū)
如羅湖區(qū)顯示在羅湖區(qū)的位置:
image.png
但是呢,如果兩個一起顯示就會發(fā)現(xiàn)其中的覆蓋物的位置會發(fā)生漂移了蹭劈,如下寶安區(qū)從1位置漂移到了2位置:
image.png
或者如下羅湖區(qū)從1位置漂移到了2位置:
image.png
這個問題困擾了我?guī)滋臁?/p>
解決:
百度了一遍工窍,沒發(fā)現(xiàn)解決方案罢维,也想過可能是短時間連續(xù)調用兩次接口造成的,調整各種設置的api也不行吓肋。
后來仔細捋了一遍紫新,想到既然是位置信息不對,應該直接去觀察生成的覆蓋物的樣式和正常的例子的覆蓋物有啥不一樣德玫。
發(fā)現(xiàn)官方的例子的覆蓋物是這樣子的:
官方的例子
而我的覆蓋物的樣式是這樣子的:
我的例子
果然對比一看就猜到了問題:定位position, 官方是absolute 我的是relative。于是我調整為absolute,解決問題。
Label它默認的樣式是一個長紅色邊框,白色背景的長方形。為什么我的是relative? 原因是我是想通過重置label的樣式達到顯示圓形的效果坐桩,因為我的圓形實際上是兩個同心圓組成的成福,外面的圓形淺透明包裹著里面的深色的圓形,所以我給外面的圓形加relative,里面加absolute像啼。不過調整后埋合,兩個都是absolute萄传,沒問題。
總結
這些錯誤都是不小心造成的振诬,以后出現(xiàn)類似問題直接對比例子和自己寫的最終渲染的樣式有啥不一樣衍菱,從結果去假設,去反推原因辫呻!