这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战javascript
在地图可视化项目的开发中,为了进度领导是不会给你多余的时间完成一个功能。这时,就须要咱们在社区中寻找框架,来实现这个功能。在许多符合条件的框架中,发现Echarts
最符合产品的要求。html
配置方式很是简单,以下:java
option = {
// 加载 bmap 组件
bmap: {
// 百度地图中心经纬度
center: [120.13066322374, 30.240018034923],
// 百度地图缩放
zoom: 14,
// 是否开启拖拽缩放,能够只设置 'scale' 或者 'move'
roam: true,
// 百度地图的自定义样式,见 http://developer.baidu.com/map/jsdevelop-11.htm
mapStyle: {}
},
series: [{
type: 'scatter',
// 使用百度地图坐标系
coordinateSystem: 'bmap',
// 数据格式跟在 geo 坐标系上同样,每一项都是 [经度,纬度,数值大小,其它维度...]
data: [ [120, 30, 1] ]
}]
}
// 获取百度地图实例,使用百度地图自带的控件
var bmap = chart.getModel().getComponent('bmap').getBMap();
bmap.addControl(new BMap.MapTypeControl());
复制代码
bmap.min.js
扩展插件是基于2D
类型的地图开发的,如须要使用type=webgl
类型的地图就须要修改部分源码。<script>
标签引入地图api
地址、echarts
地址、扩展插件地址,这里的ak是你在地图服务中心注册的。不了解的能够点 这里。<!-- 百度 -->
<script src="https://api.map.baidu.com/api?v=3.0&ak=?"></script>
<!-- echarts -->
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
<!-- 扩展地图插件 -->
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/extension/bmap.min.js"></script>
复制代码
echarts
...
<div id="bmap" class="bmap"></div>
...
var myChart = echarts.init(document.getElementById('bmap'))
option = {
title: {
text: '',
left: 'center',
textStyle: {
color: '#fff'
}
},
tooltip: {
trigger: 'item',
formatter: function (res) {
return res.name + ':' + res.value[2]
}
},
bmap: {
center: [104.114129, 37.550339],
zoom: 6,
roam: true
},
series: [
{
name: '测试',
type: 'effectScatter',
coordinateSystem: 'bmap',
data: [
{ name: '上海', value: [121.480509, 31.23592, 10] },
{ name: '南京', value: [118.804147, 32.070037, 10] }
],
symbolSize: function (val) {
return val[2]
},
rippleEffect: {
brushType: 'stroke'
},
itemStyle: {
normal: {
color: '#ff0000',
shadowBlur: 10,
shadowColor: '#333'
}
}
}
]
}
myChart.setOption(option)
复制代码
bmap
参数配置百度地图,在series
中天机coordinateSystem: 'bmap'
让原来的坐标类型修改成百度地图的墨卡托类型。bug
。浏览器外边框margin
默认不是0
,我修改html
外边距为0
后,Echarts
绘制的点坐标错位。查找了半天,发现我给元素节点设置高为100%
就会错位,当我固定元素节点高后坐标就对了。因此提醒你使用时最后设置固定高度。// 点击每一个站点能够进行相关操做
myChart.on('click', function (e) {
console.log(e) // 每一个标识点的信息
})
复制代码
Echarts
的监听事件,就能实现咱们想要的功能。var bmap = myChart.getModel().getComponent('bmap').getBMap()
var pt = new BMap.Point(116.417, 39.909)
var markerTem = new BMap.Marker(pt) // 建立标注
bmap.addOverlay(markerTem) // 将标注添加到地图中
复制代码
Echarts
获取到地图实例,后面就和直接使用百度地图没区别了。