关于百度地图打点的自定义图标,以及不同条件打不同的点
比如像这种在地图上按照条件的不同显示不同的点,同时将一些重要数据显示在点上面,图片我用的是gif图片这样会有个动画效果,上面的数字是采取的是百度地图的添加文字标签,在鼠标移动上去的时候会有个窗口显示其详细信息,相当于一个弹窗,在滚轮放大到11级别时,会显示这个市的具体信息,比如这个这里就涉及到一个事件,鼠标监控地图级别,调用不同接口,同时需要清除上一个级别的marker点,然后再进行打点,鼠标移动上去的时候也会显示改点的详细信息。
下面引用一些关键代码
import pro from './pro.gif'
import warn from './warn.gif'
这个是引用点的图标
var proIcon = new BMap.Icon(pro, new BMap.Size(30, 30))
var warnIcon = new BMap.Icon(warn, new BMap.Size(30, 30))
在数组遍历的时候
var point = new BMap.Point(val.longitude, val.latitude)
maker = new BMap.Marker(point, { icon: Icon })
this.map.addOverlay(maker)
其中的Icon根据数组返回的某个参数来确定是proIcon还是warnIcon
var label = new BMap.Label(val.orgProjectWarnCount, { offset: new BMap.Size(9, 6) })
label.setStyle({
color: '#ffffff',
fontSize: '16px',
backgroundColor: '0.05',
border: '0'
})
maker.setLabel(label)
这个是给其加上文字标签,如图中的数字一
maker.addEventListener('mouseover', function() {
this.openInfoWindow(new BMap.InfoWindow(steelContent, steelOpts))
})
maker.addEventListener('mouseout', function() {
this.closeInfoWindow()
})
鼠标应接移入移出的时候,显示出改点的详细信息,其中steelContent是拼接的详细信息字符串,steelOpts是该点的经纬度
resizeMap() {
var $this = this
this.map.addEventListener('zoomend', function() {
console.log($this.map.getViewport().zoom)
$this.zoomLevel = $this.map.getViewport().zoom
// 11
})
},
这个是地图的级别缩放事件,可以通过监听zoomLevel 来调用不同的接口,在级别大于某个值的时候,显示该区的详细信息,打点与弹框就与上面的操作基本一致了,嗯嗯嗯,思路就基本到这了,代码就不贴了,其实蛮简单的,对照百度地图api,基本上很快就能弄出来,闲着无事就当做个笔记啦