0.0.1 • Published 2 years ago

enn-map-v3 v0.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

enn-map-v3

npm 地址

gitlab 地址

  • 依赖:百度地图webgl版v1.0

主要功能介绍

  1. 传入 datas 坐标,可渲染点
  2. 地图渲染完会触发 init 事件,暴露 map 和 BMapGL 两个对象,可在直接操作地图
  3. 地图移动或者 zoom 改变会触发 changeView,监听事件可获取相关地图数据,再从后台重新获取 datas,更新地图点(浏览器变化不会触发 changeView 事件)
  4. 传入 viewDatas 坐标,同样渲染点(与 datas 一起,谁改变,就渲染谁,不会同时渲染),viewDatas 的改变会触发地图视图移动,即会把所有 viewDatas 渲染到视图中
  5. 传入 paths 可渲染移动路径

使用步骤

// main.js中引入,并注册
import EnnMap from "enn-map-v3";
Vue.use(EnnMap, {
  ak: "ak",
});
<enn-map
  style="width:100vw;height:90vh;"
  :datas="datas"
  :viewDatas="viewDatas"
  :paths="paths"
  :imgs="iconImgs"
  @changeView="getNewData"
/>

props

参数类型必填默认值说明
datasarray[]数据,具体看下面 ☆
viewDatasarray[]数据,格式同 datas
pathsarray[]路径数据,具体看下面 □
imgsarray-自定义图标,具体看下面 △
allPathTimenumber10路径运动总时长
infoWidthstringmax-content弹框宽度
maxInfoWidthstring300px弹框最大宽度
infoImgWidthstring300px弹框图片宽度
infoImgHeightstring150px弹框图片高度
infoAnchornumber-26弹框 y 轴偏移
viewTimernumber800地图视图改变防抖毫秒数
akstring-百度地图 ak
centernumber[]杭州经纬度地图 center
zoomnumber15地图 zoom
mapOptionsobject-百度地图初始化参数 minZoom/maxZoom/mapType
zoomControlobject/booleannull百度自带的缩放控件
locationControlobject/booleannull百度自带定位放控件
customZoomControlobject/booleantrue自定义缩放控件
customTypeControlobject/booleantrue自定义地图类型控件

datas ☆ 介绍

参数类型必填默认值说明
idstring/number-唯一标识,用于点清理等工作,必传
lngstring-点经度
latstring-点纬度
imgimage-展示图片
infos二维数组/string-展示的文字
iconindex-根据传入的 imgs,设置每个点的图标,不传则使用百度默认
noClickboolean-不触发点击 marker 事件

例如:

[
  {
    id: "4968-a081",
    lat: "31.792512",
    lng: "116.829919",
    img: "http://192.168.0.222:10010/static/media/default.jpg",
    infos: [
      ["名称", "#次高压4#"],
      ["压力", "六安次高压"],
      ["标号", "站至合肥新奥啊啊啊啊啊啊啊门站"],
      ["标号222", "站至合肥新奥啊啊啊啊啊啊啊门站"],
    ],
    icon: 0,
  },
  {
    id: 2,
    lat: 20,
    lng: 116,
    infos: "将会被渲染成richInfo",
  },
];

paths □ 介绍

参数类型必填默认值说明
idstring/number-id
pointsnumber[]-路径经纬度{lng,lat}
infostring-移动点渲染的文字
imgstring-移动点渲染的图片
strokeColorstringrgb(0,0,200)rgb 路径颜色
strokeWeightstring5路径宽度

imgs △ 介绍

参数类型必填默认值说明
iconimage-图标
sizenumber[]-图标宽高,注意比列设定

emits

名称说明
init地图初始化后暴露,{ BMapGL, map }
changeView地图 zoom 或 center 改变后触发,返回地图数据{bounds:{ne:xxx,sw:xxx},zoom:xxx}
markerClick地图上点被点击后触发{ marker, data, e }
renderMarker地图上点渲染完后触发
  • changeView: 因为 viewDatas 改变导致视图发生改变,不应该触发 changeView,这个时候如果想获取地图视图,建议使用 map.getBounds()和 map.getZoom()手动获取相关数据

百度地图 zoom 大致范围

zoom级别
16 往上更细节
14-15看清居民区、商业区、医院的颜色块
12-13市区、城市、地铁线
11-12市级,周围市
9-10省级,1-2 个省
7-8省级,4-5 个省
6-7省级,小半个中国
4-6基本上整个中国,全球

todos

  • 点聚合渲染: 使用普通方式渲染
  • loading:暂时去掉,打包问题
  • 路径
  • 路径完善
  • z-index 问题
  • 地区搜索框
  • infos 安全考虑

备注

  1. map, BMapGL: EnnMap 组件中地图挂载完后,会将暴露这两个对象,可参照百度地图直接操作这两个对象
  2. 使用了 BMapGLLib 的 RichMarker,对代码进行了修改,添加了类 enn-rich-marker,方便修改样式
  3. viewDatas 的用法:在父组件提供 input 搜索框,请求后台得到数据后提交给地图组件,地图组件会依据请求到的数据确定地图中心;地图组件会同时监听 datas,而它们的基本逻辑是(地图 center、zoom 改变会需要得到新的 datas),(viewDatas 改变会得到地图新的 center、zoom)
  4. 目前发现自定义图标可能会有像素偏差,icon size 比列一定要设置与 icon 原图一致
  5. x jkw个人账号创建的百度ak,仅供开发测试使用,其referer白名单为*(线上正式ak请设置合理的Referer白名单)