项目中使用到了百度地图,把一些方法进行了封装,在此记录一下,方便自己和其他人以后使用

1. 代码环境

因为项目需求,前端页面中引用vue.js进行开发,不过这部分和百度地图关系不大,可以忽略不记

2. 前期准备

1)准备一个百度地图开发者账号

2)百度地图API:http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference_3_0.html

3)mapV:https://mapv.baidu.com/

3. 开始开发

1)页面基础

引入百度地图、引入mapV、引入自己封装的百度地图方法

2)创建一个基本地图

注:在页面加载完成之后再去调用地图方法,代码如下

 this.$nextTick(function () {//创建地图createMap(_this, 'allmap')
})

createMap方法用于创建一个基础的地图,可以设置绑定的容器、鼠标滚动是否控制地图视图区域改变、地图中心点城市、地图视图区域大小、地图自定义样式

/*
* 创建Map实例,便于全局修改地图样式及属性
* 参数:th:this,domId:元素ID,isCanScroll:鼠标滚动是否控制地图视野,cityName:中心点城市名称,默认石家庄,zoom:地图缩放级别,不填写默认13级
* */
function _createMap(th,domId,isCanScroll,cityName,zoom) {}

页面效果:

地图样式参考百度地图demo

2. 在地图上批量添加自定义文字

            // 批量显示文字信息createLables: function () {var _this = this//成功获得公司列表后,将公司名称批量展示在地图上axios.post('/HeatingRunMap/GetHeatCompanyList').then(function (res) {var data = res.data.Datadata.forEach(function (val,idx) {val.ComName = '公司名称-' + idx})_createTextByMapv(_this,data,'ComMapX','ComMapY','ComName')})}
/*
* mapv方法 批量创建文字标记点
* 参数:th:this, textArr: 文字数组, xStr:x坐标轴下标,yStr:y坐标轴下标, nameStr:名称下标
* */
function _createTextByMapv(th,textArr,xStr,yStr,nameStr) {}

效果图:

3. 批量添加自定义icon的marker

// fun-批量添加自定义icon的markercreateMarkers: function(){var _this = this
//公司id数组_this.curCheckedHeatCompany = ["0", "130100001", "130100002", "130100003", "130100004", "130100005", "130100006", "130100007"]axios.post(url, data).then(function (res) {var markArr = res.data//批量添加普通的标记点_createNormalPointsByMapV(_this,_this.map,'https://mapv.baidu.com/examples/images/flag.png',markArr,'ObjectId','ObjectName')})},

公共方法

/*
* mapV批量添加标志点,通用
* 参数:th:this, map:this.map, iconUrl: 自定义icon图片地址,markArr:坐标点数组,idStr:id下标,nameStr:名称下标,clickHandler:点击回调函数,非必填,mousemoveHandler:鼠标滑过回调事件,非必填
* */
function _createNormalPointsByMapV(th,map,iconUrl,markArr,idStr,nameStr,clickHandler,mousemoveHandler) {}

效果图:

4. 给标记添加点击/鼠标滑过回调事件

添加点击回调事件很简单,在步骤3中,公共方法_createNormalPointsByMapV中写上回调函数即可,点击传回两个参数,一个事标记点本身item,一个是鼠标信息e

_createNormalPointsByMapV(_this,_this.map,'/Content/static/images/heatStation4.png',markArr,'ObjectId','ObjectName',function (item,e) {console.log('点击回调',item,e)
})

5. 批量添加折线

// fun-批量添加折线createLines: function(){var _this = this_this.curCheckedHeatCompany = ["0"]axios.post(url, data).then(function (res) {var data = []  //承载折线数据//将后台传递的数据格式化res.data.Data.forEach(function (val,idx) {var lineArr = []val.Points.forEach(function (p) {var pp = p.split(',')lineArr.push([pp[0], pp[1]])})data.push({geometry: {type: 'LineString',coordinates:lineArr}})})//调用添加折线的公共方法_createNormalLineInMapByMapv(_this, _this.map, data, '#FF0000', 3)})},
_createNormalLineInMapByMapv方法
/*
* 批量增加普通折线
* 参数 th:this,map:this.map,data:折线数据,strokeStyle:折线填充颜色,lineWidth:折线宽度,clickHandler:点击回调事件
* data例子:
* [
*   {
*       geometry:{
*       coordinates:["139.000000","121.000000"]
*       }
*   },
*   {
*       geometry:{
*       coordinates:["139.000000","121.000000"]
*       }
*   }
* ]
* */
function _createNormalLineInMapByMapv(th,map,data,strokeStyle,lineWidth,clickHandler) {}

效果图:

6. 批量添加多边形

后台接口错误,暂时没有多边形的数据,接口正常之后,补写这部分的代码

7. 添加信息窗口

点击标记点创建/打开信息窗口

需要注意的是,页面中要引入百度地图自定义信息窗口的插件InfoBox_min.js

// fun-创建/打开自定义的信息窗口createWindowInfo: function(item,e){var _this = this//    先判断是否已经存在信息窗口,如果存在,直接打开信息窗口if (_checkAndOpenOInfoWindow(_this, id, e)) {return false}// 不存在,创建一个信息窗口var info = '这里写窗口要展示的信息'_createNormalOInfoWindow(_this, 120, 180, info, id, e.point)},
_checkAndOpenOInfoWindow方法监测页面中是否已经存在对应的信息窗口
/*
* 检查信息窗口是否存在
* 参数: th: this, item: 绑定事件的layer, e: 鼠标信息
* 如果存在信息窗口,打开信息窗口,取消掉后续活动
* 如果不存在信息窗口,继续执行后续活动
* */
function _checkAndOpenOInfoWindow(th,id,e) {}
_createNormalOInfoWindow方法:在页面中创建一个新的信息窗口
* 创建一个普通的信息窗口
* TODO 样式需要根据UI调整,point需要做出偏移量
* 参数:th:this,width: 信息窗口的宽度(单位px),height: 信息窗口的高度(单位px),info:信息窗口要展示的信息,point:信息窗口要打开的点
* */
function _createNormalOInfoWindow(th,width,height,info,id,point) {}

效果图:

百度地图mapv方法封装相关推荐

  1. 前端vue js 高德地图实现雷达扫描加载,借鉴百度地图等方法,采用Canvas解决雷达背景透明度问题,解决Canvas动态指针扫描造成浏览器卡顿问题

    前端vue js 高德地图实现雷达扫描加载,借鉴百度地图等方法,采用Canvas解决雷达背景透明度问题,解决Canvas动态指针扫描造成浏览器卡顿问题 经过3天的尝试,借鉴了好几个博客的思路,开发了一 ...

  2. Vue项目中使用百度地图+mapv

    1.安装依赖 npm install vue-baidu-map --save npm install mapv --save 2.main.js import BaiduMap from " ...

  3. 百度地图测距 java_【java】改写js百度地图测距方法

    百度地图测距js代码: var EARTHRADIUS = 6370996.81; /** * 将度转化为弧度 * @param {degree} Number 度 * @returns {Numbe ...

  4. 百度地图MapV实现海量数据画线、点聚合等功能

    前言 MapVGL,是一款基于WebGL的地理信息可视化库,可以用来展示大量基于3D的地理信息点线面数据.设计初衷主要是为了解决大数据量的三维地理数据展示问题及一些炫酷的三维效果. 官网地址:MapV ...

  5. 百度地图+mapv聚合实例

    简略效果图 具体实例 加载百度地图.mapv的资源 <script src="http://api.map.baidu.com/api?v=2.0&ak=fI9FbBjVQKr ...

  6. iOS第三方地图-百度地图定位的封装

    // // BaiduMapTools.h // baidumapTest // // Created by apple on 15/8/26. // Copyright (c) 2015年 tqh. ...

  7. echarts移除百度地图logo方法

    移除百度地图LOGO和版权信息 在jsp头上加上如下代码即可: <style type="text/css">.anchorBL{display:none} </ ...

  8. 《TP5.0学习笔记---百度地图封装》

    我们常常需要根据地址来获取经纬度,根据经纬度来调取百度地图等. 一. 根据地址获取经纬度类的封装 1, 获取第三方接口 2, 编写map类 3, 测试 1, 获取第三方接口 (1)进入http://l ...

  9. Vue项目使用百度地图——经纬度地图组件的封装及使用

    1 前言 要在vue项目使用百度地图api,首先应做以下配置 (1)index.html index.html添加script <script src="http://api.map. ...

最新文章

  1. 9月份个人:windows系统的DNS服务器配置
  2. Oracle-Oracle SQL Report (awrsqrpt.sql/awrsqrpi.sql)生成指定SQL的统计报表
  3. 【算法】八大经典排序算法详解
  4. [LeetCode 123] - 买入与卖出股票的最佳时机III(Best Time to Buy and Sell Stock III)
  5. python学习之文件读写
  6. Auto Layout 和 Constraints
  7. Spring Cloud 微服务下的权限解决方案
  8. Go语言爱好者周刊:第 131 期 — 这道题你做对了吗?
  9. 2022年PMP考试安排
  10. 汉化后的eclipse改成英文版
  11. RTSP协议与G711 AAC
  12. 消除红眼效应及matlab实现
  13. 机器学习百页书:机器学习中常用到的一些数学符号
  14. STM32之TIM1高级定时器
  15. 如何增强云端医疗健康数据的隐私保护
  16. Java项目酒店管理系统(java+SSM+Maven+LayUI+mysql)
  17. 支付系统设计四:轮询扣款设计04-整体设计
  18. 聊聊Redis的数据热点问题
  19. 创建 spring MVC项目的基本步骤
  20. 浅谈vivado HLS从C/C++到硬件描述语言转换

热门文章

  1. 机器学习的最小平方法
  2. Ubuntu 18.04 安装后的主题美化与软件安装
  3. JZ24 反转链表 Python
  4. .mat数据转化为png图片
  5. 浏览器控制台错误:Strict MIME type checking is enforced for module scripts per HTML spec.
  6. 11款电脑必装的神级软件,个个功能性拉满
  7. BlueHat 2022 corrupted_key
  8. 232,485,422等串口线与usb等的转换
  9. java 用代码清除图片_Java清除图片中的恶意信息(利用jmagick)
  10. 计算机显示器上有条纹,电脑屏幕出现条纹有哪些原因