html百度地图中心点不正确,百度地图嵌入弹出层,无法准确正确显示marker标记到中心位置的问题...
最近同事遇到了一個問題,找我?guī)兔?#xff0c;先說下情況:
1,頁面中有一個彈出框,也就是彈出層,彈出層里面的html是實用table,
其中一個tr中使用div作為百度地圖的容器
如圖:
2,打開彈出層后,根據(jù)一組指定的經(jīng)緯度在地圖上創(chuàng)建marker標記,并且在可視窗口中心顯示該marker
問題來了,無論是實用了panTo還是centerAndZoom,還panby
都無法讓marker自動定位顯示在可視窗口的中心,很多時候marker標記都在左上角,就是無法成為中心;
,同一段腳本,打開彈出層之后,點擊一個定位按鈕就可以正確定位,
找了度娘,又問了谷歌,也有一些人遇到了類似的問題,有人說是div不能放在table里面,
試了下發(fā)現(xiàn)沒用,也有人說是跟地圖容器隱藏和顯示的問題,
這一點其實說的對的,確實跟容器有關(guān),但是解決辦法確不一定是去寫個顯示和隱藏容器的腳本
因為實用easyui的時候,打開彈出層什么的幾乎沒地方可寫觸發(fā)顯示隱藏容器的腳本
只能硬著頭皮自己想解決辦法,一通熬夜,一通嘗試,發(fā)現(xiàn)之所以沒有顯示在可視區(qū)域內(nèi),
并不是因為panto和centerAndZoom沒有起作用,而是起作用了,而是創(chuàng)建的地圖有問題,
試想,你有一個淡出層,左邊是一些輸入框,右邊是地圖窗口,創(chuàng)建地圖之后,我們理所應(yīng)當(dāng)?shù)恼J為右邊
的窗口就是地圖的全部了,事實卻不是這樣,其實是因為彈出層沒有打開的情況下,創(chuàng)建的地圖,
會按照彈出層的大小去創(chuàng)建地圖,而不是按照彈出層中地圖容器的大小去創(chuàng)建地圖
而這就是為什么無法自動將創(chuàng)建的marker顯示在地圖窗口中心的原因
總結(jié)起來 就是 創(chuàng)建的地圖的時機不對,在彈出層沒有打開的時候去創(chuàng)建地圖,創(chuàng)建的地圖并不是我們想要的地方,
就會產(chǎn)生無法正確自動將marker標記展示在可視窗口中心的原因,因為體檢創(chuàng)建的地圖的中心不可能在可視地圖窗口的中心
解決辦法就更簡單了
在彈出層打開以后重新創(chuàng)建地圖對象,或者不在document.ready中創(chuàng)建,只在打開彈出層才創(chuàng)建地圖
注意就是彈出層可能會多次打開,地圖只創(chuàng)建一次就夠了,自己加個flag去控制下
這類問題解決起來,幾乎沒什么代碼可寫,主要就是找到原因,就可以瞬間解決問題
總結(jié)
以上是生活随笔為你收集整理的html百度地图中心点不正确,百度地图嵌入弹出层,无法准确正确显示marker标记到中心位置的问题...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: a9 pro android 7,惊艳
- 下一篇: 联想怎么选择usb启动不了怎么办 联想电