91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue使用百度地圖鼠標移入移除報錯如何解決

發布時間:2023-04-07 14:02:41 來源:億速云 閱讀:142 作者:iii 欄目:web開發

今天小編給大家分享一下vue使用百度地圖鼠標移入移除報錯如何解決的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

首先,我們來看一下問題的具體表現。

在 Vue 組件中,使用百度地圖插件(BaiduMapApi_Load),并通過 JavaScript 實現了在地圖上繪制多個覆蓋物(Overlay)。當鼠標移入覆蓋物時,注入的鼠標事件中出現了報錯。錯誤信息顯示為“Cannot read property 'pixel' of undefined”。

經過對代碼進行排查,發現報錯的代碼是:

var point = e.overlay.pixel,

也就是說,在該語句中,e.overlay.pixel 出現了無法識別的情況。

接著查看了相關文檔及源代碼,發現此處 e.overlay.pixel 在百度地圖官方文檔并沒有作出詳細說明,只能從代碼實現上來推測。

經過多次嘗試,發現只有在 Overlay 繼承了 BMap.Overlay 類,才可以通過 e.overlay._div 來獲取當前 Overlay 的 DOM 元素。但是使用 e.overlay._div 仍然無法取到當前 Overlay 的位置信息,也就是 e.overlay.pixel 值為 undefined。

在這種情況下,我們就需要自行解決這個問題。經過進一步的排查,我們最終發現,問題出在地圖與 Overlay 的交互事件上。

我們所用的百度地圖插件(BaiduMapApi_Load)與地圖官方 API 所實現的消息傳遞方式不一樣。在我們的插件中,通過 Vue Bus 事件輸出地圖中 Overlay 的相關信息。但是,這樣會影響到 e.overlay 與 BMap 的橋接關系,從而導致了前面的問題。

為了解決這個問題,我們需要對消息傳遞進行改進。具體做法如下:

  1. 在 Overlay 加載時,調用 Vue 組件的 $emit 方法,將 Overlay 信息以事件形式發送出去;

  2. 在地圖組件中監聽事件,并將 Overlay 儲存在 Vue 實例中的一個數組中;

  3. 在鼠標移入事件中,再次使用 Vue Bus 將 Overlay 的 ID 發送出去;

  4. 在需要使用 Overlay 位置信息的語句中,從數組中獲取相應的 Overlay,并通過 BMap.Overlay 原型的 getProjection 方法獲取相應的經緯度;

  5. 最后,使用 BMap.Map 類的 pointToPixel 方法可以將得到的經緯度轉換為地圖上的坐標,再存入 e.overlay.pixel 中即可。

以上就是“vue使用百度地圖鼠標移入移除報錯如何解決”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

颍上县| 右玉县| 德钦县| 博湖县| 香河县| 阿拉善盟| 怀来县| 海兴县| 屯门区| 习水县| 巢湖市| 本溪市| 百色市| 吴桥县| 普兰店市| 石渠县| 兴和县| 会同县| 屯留县| 富阳市| 文登市| 老河口市| 定结县| 交口县| 集贤县| 静乐县| 盘山县| 赤城县| 平利县| 岳池县| 九江县| 宣城市| 洪洞县| 马龙县| 惠安县| 景谷| 华阴市| 栖霞市| 莲花县| 秦皇岛市| 扶风县|