结合地图覆盖物展示和打点展示百度地图的使用

使用前的基础步骤

流程示意图:

百度基础流程图.png

(1)获取Ak

获取ak示意图.png

一个百度账号可以创建多个ak,创建ak时得在应用类型中进行设置,此处我们已PC端进行展示选择了浏览器端。
(2)引入百度地图API
如同示意图,以标签形式引入,路径ak设置为申请的AK
(3)创建一个百度地图及初始化

  var map = new BMap.Map("container");|
  // 创建地图实例, ‘container’为承载地图的dom的ID
  var point = new BMap.Point(116.404, 39.915);
  // 创建点坐标 (当前是北京的坐标)
  map.centerAndZoom(point, 15);
  // 初始化地图,设置中心点坐标和地图级别 

当创建map实例后获取的是一个百度地图核心对像,该对象定义了百度地图的基本属性(如层级,拖拽,缩放,以及地图样式等)以及可以监听百度地图的一系列事件。
以上完成后将得到一下页面


maptest.png

百度地图的Dom展示和打点

设置Dom的展示

通过打印百度地图的大对象我们可以获取里面的众多类


baidumapclass.png

在参与的项目中我们需要完成以下效果


展示效果.png

所以我们使用了百度地图的Overlay(覆盖物类)中的Label(文本标注类),该类可以识别输入的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)    //设置label展示的经纬度区域
    label.setContent(            //设置label的展示内容
      '<p>自定义label<p/>'
    );
   label.setStyle({             //设置label的展示样式
      color:'red'
    });
    map.addOverlay(label);

得到效果


展示效果2.png

使用方法与上述的核心对象一样都是获取一个实例,覆盖物类中的文本标注类的其他方法在使用文档中的描述为:


Label的其他方法.png

以上我们只是简单的展示了Label中的两种方法的使用,其他方法的使用应也和这个两种方法类似。

监听地图的打点事件

上述叙述到在百度地图的核心对象上可以监听一系列地图的事件,开发文档上我们可以监听到的地图事件有这些:


地图核心对象可监听事件.png

使用方式和给Dom对象添加事件监听一致,下列我们使用百度地图监听点击事件来获取点击区域的的经纬度

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

得到以下信息


点击地图后回调所获取的信息.png

通过获取的经纬度,我们可以通过该经纬度添加一个覆盖物,达到地图打点的效果。
通过以上两个案例,我们熟悉了怎么对照百度地图开发文档来开发我们需求的效果。

结合项目实现封装和复用

我们获取百度的众多对象是以获取构造函数实例的形式展示出来,以此为思路,在项目中使用百度地图时,我们考虑到需要便捷的使用和修改地图的状态且各项功能不耦合,以构造函数的方式来封装是一个不错的选择。

const CreateMap = function (initStr: any) {
  this.isDot = false; //是否已经打点
  this.map = {};//定义全局的map对象
  this.initMap(); //初始化创建地图
}
//初始化地图
CreateMap.prototype.initMap = function () {
  let that = this;
  // 百度地图API功能
  this.map = new BMapGL.Map('allmap', {
    minZoom: 11,
    maxZoom: 20,
  }); // 创建Map实例
  this.map.centerAndZoom(new BMapGL.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别
 //绑定打点事件
CreateMap.prototype.bindEvent = function () {
   let that = this;
  that.map.addEventListener('click', function (event) {
      //点击后操作
})
}

之后我们可以在其他页面来创建一个地图

let map = new CreateMap();

并且在页面数据请求回来后,给地图绑定事件监听

map.bindEvent()

遭遇的地图坑及解决方法

(1)需求情景:当鼠标移入移出label时,展示出当前label代表的区域的范围。


效果1.gif

复现情景:在鼠标移出移入label时,此时同时缩放地图层级,会导致监听鼠标移入移出事件发生错误,页面长期处于移出或者事件.
解决方法及思路:监听地图的层级变化,当地图层级发生改变时,禁用鼠标的移入移出事件回调。
(2)需求情景:删除地图上的指定覆盖物。
遇到坑之前的实现思路:每添加一个覆盖物会生成一个对象,获取所有的覆盖物通过该覆盖物的对象名称,进行过滤。
结果:百度地图的覆盖物对象名称经常会改变(官方改变),导致清除失败。
解决方法及思路:将该对添加到一个数组存储,统一清除。

是的是的,我们的初期分享到这就结束了。后期将长期更新百度地图的使用及遭遇的坑。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 229,885评论 6 541
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,312评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 177,993评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,667评论 1 317
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,410评论 6 411
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,778评论 1 328
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,775评论 3 446
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,955评论 0 289
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,521评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,266评论 3 358
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,468评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,998评论 5 363
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,696评论 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,095评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,385评论 1 294
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,193评论 3 398
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,431评论 2 378

推荐阅读更多精彩内容