結(jié)合地圖覆蓋物展示和打點展示百度地圖的使用

使用前的基礎(chǔ)步驟

流程示意圖:

百度基礎(chǔ)流程圖.png

(1)獲取Ak

獲取ak示意圖.png

一個百度賬號可以創(chuàng)建多個ak,創(chuàng)建ak時得在應(yīng)用類型中進行設(shè)置,此處我們已PC端進行展示選擇了瀏覽器端。
(2)引入百度地圖API
如同示意圖,以標(biāo)簽形式引入,路徑ak設(shè)置為申請的AK
(3)創(chuàng)建一個百度地圖及初始化

  var map = new BMap.Map("container");|
  // 創(chuàng)建地圖實例件已, ‘container’為承載地圖的dom的ID
  var point = new BMap.Point(116.404, 39.915);
  // 創(chuàng)建點坐標(biāo) (當(dāng)前是北京的坐標(biāo))
  map.centerAndZoom(point, 15);
  // 初始化地圖,設(shè)置中心點坐標(biāo)和地圖級別 

當(dāng)創(chuàng)建map實例后獲取的是一個百度地圖核心對像元暴,該對象定義了百度地圖的基本屬性(如層級篷扩,拖拽,縮放茉盏,以及地圖樣式等)以及可以監(jiān)聽百度地圖的一系列事件鉴未。
以上完成后將得到一下頁面


maptest.png

百度地圖的Dom展示和打點

設(shè)置Dom的展示

通過打印百度地圖的大對象我們可以獲取里面的眾多類


baidumapclass.png

在參與的項目中我們需要完成以下效果


展示效果.png

所以我們使用了百度地圖的Overlay(覆蓋物類)中的Label(文本標(biāo)注類),該類可以識別輸入的dom元素鸠姨,方便我們自定義地圖展示的覆蓋物的樣式铜秆。
var map = new BMapGL.Map('allmap');
    var point = new BMapGL.Point(116.404, 39.915);
    map.centerAndZoom(point, 15);
    var label = new BMapGL.Label();  // 使用label
    label.setPosition(point)    //設(shè)置label展示的經(jīng)緯度區(qū)域
    label.setContent(            //設(shè)置label的展示內(nèi)容
      '<p>自定義label<p/>'
    );
   label.setStyle({             //設(shè)置label的展示樣式
      color:'red'
    });
    map.addOverlay(label);

得到效果


展示效果2.png

使用方法與上述的核心對象一樣都是獲取一個實例讶迁,覆蓋物類中的文本標(biāo)注類的其他方法在使用文檔中的描述為:


Label的其他方法.png

以上我們只是簡單的展示了Label中的兩種方法的使用连茧,其他方法的使用應(yīng)也和這個兩種方法類似。

監(jiān)聽地圖的打點事件

上述敘述到在百度地圖的核心對象上可以監(jiān)聽一系列地圖的事件,開發(fā)文檔上我們可以監(jiān)聽到的地圖事件有這些:


地圖核心對象可監(jiān)聽事件.png

使用方式和給Dom對象添加事件監(jiān)聽一致啸驯,下列我們使用百度地圖監(jiān)聽點擊事件來獲取點擊區(qū)域的的經(jīng)緯度

var map = new BMapGL.Map('container');
map.centerAndZoom(new BMapGL.Point(116.404, 39.928), 15);
map.addEventListener('click', function (e) {
    console.log(e);
});

得到以下信息


點擊地圖后回調(diào)所獲取的信息.png

通過獲取的經(jīng)緯度客扎,我們可以通過該經(jīng)緯度添加一個覆蓋物,達到地圖打點的效果罚斗。
通過以上兩個案例徙鱼,我們熟悉了怎么對照百度地圖開發(fā)文檔來開發(fā)我們需求的效果。

結(jié)合項目實現(xiàn)封裝和復(fù)用

我們獲取百度的眾多對象是以獲取構(gòu)造函數(shù)實例的形式展示出來针姿,以此為思路袱吆,在項目中使用百度地圖時,我們考慮到需要便捷的使用和修改地圖的狀態(tài)且各項功能不耦合距淫,以構(gòu)造函數(shù)的方式來封裝是一個不錯的選擇绞绒。

const CreateMap = function (initStr: any) {
  this.isDot = false; //是否已經(jīng)打點
  this.map = {};//定義全局的map對象
  this.initMap(); //初始化創(chuàng)建地圖
}
//初始化地圖
CreateMap.prototype.initMap = function () {
  let that = this;
  // 百度地圖API功能
  this.map = new BMapGL.Map('allmap', {
    minZoom: 11,
    maxZoom: 20,
  }); // 創(chuàng)建Map實例
  this.map.centerAndZoom(new BMapGL.Point(116.404, 39.915), 11); // 初始化地圖,設(shè)置中心點坐標(biāo)和地圖級別
 //綁定打點事件
CreateMap.prototype.bindEvent = function () {
   let that = this;
  that.map.addEventListener('click', function (event) {
      //點擊后操作
})
}

之后我們可以在其他頁面來創(chuàng)建一個地圖

let map = new CreateMap();

并且在頁面數(shù)據(jù)請求回來后,給地圖綁定事件監(jiān)聽

map.bindEvent()

遭遇的地圖坑及解決方法

(1)需求情景:當(dāng)鼠標(biāo)移入移出label時榕暇,展示出當(dāng)前l(fā)abel代表的區(qū)域的范圍蓬衡。


效果1.gif

復(fù)現(xiàn)情景:在鼠標(biāo)移出移入label時,此時同時縮放地圖層級拐揭,會導(dǎo)致監(jiān)聽鼠標(biāo)移入移出事件發(fā)生錯誤撤蟆,頁面長期處于移出或者事件.
解決方法及思路:監(jiān)聽地圖的層級變化奕塑,當(dāng)?shù)貓D層級發(fā)生改變時堂污,禁用鼠標(biāo)的移入移出事件回調(diào)。
(2)需求情景:刪除地圖上的指定覆蓋物龄砰。
遇到坑之前的實現(xiàn)思路:每添加一個覆蓋物會生成一個對象盟猖,獲取所有的覆蓋物通過該覆蓋物的對象名稱,進行過濾换棚。
結(jié)果:百度地圖的覆蓋物對象名稱經(jīng)常會改變(官方改變)式镐,導(dǎo)致清除失敗。
解決方法及思路:將該對添加到一個數(shù)組存儲固蚤,統(tǒng)一清除娘汞。

是的是的,我們的初期分享到這就結(jié)束了夕玩。后期將長期更新百度地圖的使用及遭遇的坑你弦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市燎孟,隨后出現(xiàn)的幾起案子禽作,更是在濱河造成了極大的恐慌,老刑警劉巖揩页,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旷偿,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機萍程,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門幢妄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尘喝,你說我怎么就攤上這事磁浇。” “怎么了朽褪?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵置吓,是天一觀的道長。 經(jīng)常有香客問我缔赠,道長衍锚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任嗤堰,我火速辦了婚禮戴质,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘踢匣。我一直安慰自己告匠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布离唬。 她就那樣靜靜地躺著后专,像睡著了一般。 火紅的嫁衣襯著肌膚如雪输莺。 梳的紋絲不亂的頭發(fā)上戚哎,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音嫂用,去河邊找鬼型凳。 笑死,一個胖子當(dāng)著我的面吹牛嘱函,可吹牛的內(nèi)容都是我干的甘畅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼往弓,長吁一口氣:“原來是場噩夢啊……” “哼疏唾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起亮航,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤荸实,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缴淋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體准给,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡泄朴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了露氮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祖灰。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖畔规,靈堂內(nèi)的尸體忽然破棺而出局扶,到底是詐尸還是另有隱情,我是刑警寧澤叁扫,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布三妈,位于F島的核電站,受9級特大地震影響莫绣,放射性物質(zhì)發(fā)生泄漏畴蒲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一对室、第九天 我趴在偏房一處隱蔽的房頂上張望模燥。 院中可真熱鬧,春花似錦掩宜、人聲如沸蔫骂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辽旋。三九已至,卻和暖如春慧瘤,著一層夾襖步出監(jiān)牢的瞬間戴已,已是汗流浹背固该。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工锅减, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伐坏。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓怔匣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桦沉。 傳聞我的和親對象是個殘疾皇子每瞒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容