Echarts 百度地图API+散点图

申请百度AK

高德地图也差不多: https://lbs.amap.com/api/webservice/summary/

http://lbsyun.baidu.com/apiconsole/key?application=key

在控制台创建应用,根据自己的需求填写即可。
在这里插入图片描述
提交之后你就可以在"应用管理–>我的应用"里看到创建的应用,列表会有一个AK(API就需要这个AK)
在这里插入图片描述

用echarts + 百度地图绘制散点图
1、准备工作

以下所需的文件可评论区找我拿。

①引入echarts.min.js

②引入jquery-3.3.1.min.js(不使用异步数据的可以忽略这一步)

③引入bmap.js文件(百度地图扩展)

bmap.js 是一个基于echart3的百度地图扩展文件,将其引入后可以在echarts.series.map.coordinateSystem 中直接使用参数’bmap’ 。

可以直接在官网下载或者以下我找到的一个百度网盘的下载(可用)

下载地址为:http://pan.baidu.com/s/1hrPEdGK

④引入百度API

AK:是你刚刚第一步申请的AK,我后续就用AK或者***代替

getscript:这里本身是api,但是会出一个警告(不影响效果),强迫症的可以改成getscript,就不会出现那个警告(A parser-blocing…)了

<script type="text/javascript" src="https://api.map.baidu.com/getscript?v=3.0&ak=AK"></script>

后续的显示其实还是会出现一个<冲突>,可忽略不影响。

⑤创建一个放地图的div

<div id="map-wrap" style="height: 800px;"></div>

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ECharts map 单车调度情况</title>
    <script src="../static/js/echarts.min.js"></script>
    <script src="../static/js/jquery-3.3.1.min.js"></script>
    <script src="../static/js/bmap.js"></script>
    <script type="text/javascript" src="https://api.map.baidu.com/getscript?v=3.0&ak=**********"></script>
</head>
<body>
	<div id="map-wrap" style="height: 800px;"></div>
2、绘制地图

设置配置项option,添加bmap的相关设置即可加载百度地图。

ECharts 将百度地图部分配置集成在了 bmap 中,包括:

参数说明格式
center中心点的百度坐标坐标数组, 如:[116.307698, 40.056975]
zoom初始缩放比number
roam是否允许用户缩放操作boolean
mapStyle地图自定义样式object, 如:{ styleJson: […] }

代码

<script>
var bmapChart = echarts.init(document.getElementById('map-wrap'));
var option = {
    bmap: {
        center: [116.307698, 40.056975], // 中心位置坐标
        zoom: 5, // 地图缩放比例
        roam: true // 开启用户缩放
    },
};
bmapChart.setOption(option);
</script>
3、绘制散点图

①导入数据。

PS:坐标点一定一定不要有双引号什么的,不然出不来点的

随后需要对数据进行处理,将坐标信息和对应value量的值合在一起。

var mydata = [
                {
                    "name":"[121.172, 31.35]",
                    "value":2
                },
                {
                    "name":"[121.315, 31.313]",
                    "value":23
                },
                {
                    "name":"[121.345, 31.25]",
                    "value":39
                },
                {
                    "name":"[121.36, 31.218000000000004]",
                    "value":117
                },
                ........
             ];
             //首先先定义需要显示对应信息的位置坐标,按照[纬度,精度]的格式
             var geoCoordMap = {
                "[121.172, 31.35]":[121.172, 31.35],
                "[121.315, 31.313]":[121.315, 31.313],
                "[121.345, 31.25]":[121.345, 31.25],
                "[121.36, 31.218000000000004]":[121.36, 31.218000000000004],
                "[121.376, 31.314]":[121.376, 31.314],
                "[121.377, 31.322]":[121.377, 31.322],
                "[121.396, 31.229]":[121.396, 31.229],
                "[121.406, 31.282]":[121.406, 31.282],
                "[121.398, 31.291]":[121.398, 31.291],
                "[121.407, 31.283]":[121.407, 31.283],
                "[121.412, 31.271]":[121.412, 31.271],
                "[121.421, 31.258000000000006]":[121.421, 31.258000000000006],
                "[121.428, 31.184]":[121.428, 31.184],
                "[121.436, 31.331]":[121.436, 31.331],
                "[121.428, 31.379]":[121.428, 31.379],
                "[121.451, 31.274]":[121.451, 31.274],
                "[121.447, 31.332]":[121.447, 31.332],
                "[121.438, 31.34]":[121.438, 31.34],
                "[121.445, 31.288]":[121.445, 31.288],
                "[121.483, 31.32]":[121.483, 31.32],
                "[121.501, 31.286]":[121.501, 31.286],
                "[121.492, 31.308000000000003]":[121.492, 31.308000000000003],
                "[121.471, 31.31]":[121.471, 31.31],
                "[121.493, 31.311]":[121.493, 31.311],
                "[121.524, 31.193]":[121.524, 31.193],
                "[121.511, 31.197]":[121.511, 31.197],
                "[121.516, 31.178]":[121.516, 31.178],
                "[121.507, 31.201]":[121.507, 31.201],
                "[121.52, 31.32]":[121.52, 31.32],
                "[121.531, 31.323]":[121.531, 31.323],
                "[121.588, 31.338]":[121.588, 31.338]
            };
            var convertData = function (data) {
                var res = [];
                for (var i = 0; i < data.length; i++) {
                    //首先根据data中的name作为键值读入地理坐标
                    var geoCoord = geoCoordMap[data[i].name];    
                    //var rjj1 = data[i].value;
                    if (geoCoord) {
                        res.push({
                            name: data[i].name,
                            //随后将地理坐标与对应信息值衔接起来
                            value: geoCoord.concat(data[i].value) 
                            //成为了 [name 经度 纬度 value]的形式
                        });
                    }
                }
                return res;
             };

然后就是具体值的一个配置问题,详见后面的完整代码处。

4、自定义百度地图样式

参考:

http://lbsyun.baidu.com/index.php?title=jspopular/guide/custom

http://lbsyun.baidu.com/index.php?title=open/custom


相关代码配置项含义会有备注,就不一一说明了、

完整代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ECharts map 单车调度情况</title>
    <script src="../static/js/echarts.min.js"></script>
    <script src="../static/js/jquery-3.3.1.min.js"></script>
    <script src="../static/js/bmap.js"></script>
    <script type="text/javascript" src="https://api.map.baidu.com/getscript?v=3.0&ak=*******************"></script>
</head>
<body>
	<div id="map-wrap" style="height: 800px;"></div>
		<!-- 这里以后是地图 -->
    <script>
        var bmapChart = echarts.init(document.getElementById('map-wrap'));
        // $.get('../static/30_result.json', function (data) {
             var mydata = [
                {
                    "name":"[121.172, 31.35]",
                    "value":2
                },
                {
                    "name":"[121.315, 31.313]",
                    "value":23
                },
                {
                    "name":"[121.345, 31.25]",
                    "value":39
                },
                {
                    "name":"[121.36, 31.218000000000004]",
                    "value":117
                },
                {
                    "name":"[121.376, 31.314]",
                    "value":2
                },
                {
                    "name":"[121.377, 31.322]",
                    "value":99
                },
                {
                    "name":"[121.396, 31.229]",
                    "value":24
                },
                {
                    "name":"[121.398, 31.291]",
                    "value":101
                },
                {
                    "name":"[121.406, 31.282]",
                    "value":10
                },
                {
                    "name":"[121.407, 31.283]",
                    "value":57
                },
                {
                    "name":"[121.412, 31.271]",
                    "value":92
                },
                {
                    "name":"[121.421, 31.258000000000006]",
                    "value":87
                },
                {
                    "name":"[121.428, 31.379]",
                    "value":126
                },
                {
                    "name":"[121.436, 31.331]",
                    "value":37
                },
                {
                    "name":"[121.438, 31.34]",
                    "value":97
                },
                {
                    "name":"[121.445, 31.288]",
                    "value":39
                },
                {
                    "name":"[121.447, 31.332]",
                    "value":69
                },
                {
                    "name":"[121.451, 31.274]",
                    "value":380
                },
                {
                    "name":"[121.471, 31.31]",
                    "value":344
                },
                {
                    "name":"[121.483, 31.32]",
                    "value":279
                },
                {
                    "name":"[121.492, 31.308000000000003]",
                    "value":28
                },
                {
                    "name":"[121.493, 31.311]",
                    "value":254
                },
                {
                    "name":"[121.501, 31.286]",
                    "value":154
                },
                {
                    "name":"[121.507, 31.201]",
                    "value":112
                },
                {
                    "name":"[121.511, 31.197]",
                    "value":92
                },
                {
                    "name":"[121.516, 31.178]",
                    "value":91
                },
                {
                    "name":"[121.52, 31.32]",
                    "value":84
                },
                {
                    "name":"[121.524, 31.193]",
                    "value":180
                },
                {
                    "name":"[121.531, 31.323]",
                    "value":65
                },
                {
                    "name":"[121.533, 31.253]",
                    "value":1312
                },
                {
                    "name":"[121.588, 31.338]",
                    "value":317
                }
             ];
             var mydata1 = [
                 {
                    "name":"[121.315, 31.313]",
                    "value":31
                },
                {
                    "name":"[121.345, 31.25]",
                    "value":68
                },
                {
                    "name":"[121.36, 31.218000000000004]",
                    "value":165
                },
                {
                    "name":"[121.376, 31.314]",
                    "value":5
                },
                {
                    "name":"[121.377, 31.322]",
                    "value":113
                },
                {
                    "name":"[121.396, 31.229]",
                    "value":26
                },
                {
                    "name":"[121.398, 31.291]",
                    "value":81
                },
                {
                    "name":"[121.406, 31.282]",
                    "value":6
                },
                {
                    "name":"[121.407, 31.283]",
                    "value":59
                },
                {
                    "name":"[121.412, 31.271]",
                    "value":114
                },
                {
                    "name":"[121.421, 31.258000000000006]",
                    "value":110
                },
                {
                    "name":"[121.428, 31.379]",
                    "value":154
                },
                {
                    "name":"[121.436, 31.331]",
                    "value":41
                },
                {
                    "name":"[121.438, 31.34]",
                    "value":129
                },
                {
                    "name":"[121.445, 31.288]",
                    "value":34
                },
                {
                    "name":"[121.447, 31.332]",
                    "value":91
                },
                {
                    "name":"[121.451, 31.274]",
                    "value":467
                },
                {
                    "name":"[121.471, 31.31]",
                    "value":352
                },
                {
                    "name":"[121.483, 31.32]",
                    "value":339
                },
                {
                    "name":"[121.492, 31.308000000000003]",
                    "value":43
                },
                {
                    "name":"[121.493, 31.311]",
                    "value":270
                },
                {
                    "name":"[121.501, 31.286]",
                    "value":180
                },
                {
                    "name":"[121.507, 31.201]",
                    "value":111
                },
                {
                    "name":"[121.511, 31.197]",
                    "value":98
                },
                {
                    "name":"[121.516, 31.178]",
                    "value":92
                },
                {
                    "name":"[121.52, 31.32]",
                    "value":101
                },
                {
                    "name":"[121.524, 31.193]",
                    "value":222
                },
                {
                    "name":"[121.531, 31.323]",
                    "value":92
                },
                {
                    "name":"[121.533, 31.253]",
                    "value":1374
                },
                {
                    "name":"[121.588, 31.338]",
                    "value":383
                }
             ];
             //首先先定义需要显示对应信息的位置坐标,按照[纬度,精度]的格式
             var geoCoordMap = {
                "[121.172, 31.35]":[121.172, 31.35],
                "[121.315, 31.313]":[121.315, 31.313],
                "[121.345, 31.25]":[121.345, 31.25],
                "[121.36, 31.218000000000004]":[121.36, 31.218000000000004],
                "[121.376, 31.314]":[121.376, 31.314],
                "[121.377, 31.322]":[121.377, 31.322],
                "[121.396, 31.229]":[121.396, 31.229],
                "[121.406, 31.282]":[121.406, 31.282],
                "[121.398, 31.291]":[121.398, 31.291],
                "[121.407, 31.283]":[121.407, 31.283],
                "[121.412, 31.271]":[121.412, 31.271],
                "[121.421, 31.258000000000006]":[121.421, 31.258000000000006],
                "[121.428, 31.184]":[121.428, 31.184],
                "[121.436, 31.331]":[121.436, 31.331],
                "[121.428, 31.379]":[121.428, 31.379],
                "[121.451, 31.274]":[121.451, 31.274],
                "[121.447, 31.332]":[121.447, 31.332],
                "[121.438, 31.34]":[121.438, 31.34],
                "[121.445, 31.288]":[121.445, 31.288],
                "[121.483, 31.32]":[121.483, 31.32],
                "[121.501, 31.286]":[121.501, 31.286],
                "[121.492, 31.308000000000003]":[121.492, 31.308000000000003],
                "[121.471, 31.31]":[121.471, 31.31],
                "[121.493, 31.311]":[121.493, 31.311],
                "[121.524, 31.193]":[121.524, 31.193],
                "[121.511, 31.197]":[121.511, 31.197],
                "[121.516, 31.178]":[121.516, 31.178],
                "[121.507, 31.201]":[121.507, 31.201],
                "[121.52, 31.32]":[121.52, 31.32],
                "[121.531, 31.323]":[121.531, 31.323],
                //"[121.533, 31.253]":[121.533, 31.253],
                "[121.588, 31.338]":[121.588, 31.338]
            };
            var convertData = function (data) {
                var res = [];
                for (var i = 0; i < data.length; i++) {
                    var geoCoord = geoCoordMap[data[i].name];    //首先根据data中的name作为键值读入地理坐标
                    //var rjj1 = data[i].value;
                    if (geoCoord) {
                        res.push({
                            name: data[i].name,
                            value: geoCoord.concat(data[i].value)   //随后将地理坐标与对应信息值衔接起来
                            //成为了 [name 经度 纬度 value]的形式

                        });
                    }
                }
                //console.log(res)
                return res;
             };
             var option = {
                 title:{
                     text:'上海Mobike单车分布'
                 },
                 legend: {
                     data: ['30号', '31号', '差值'],   // 要对应series的name
                     opsition: "center",     // 图例位置
                 },
                 tooltip : {
                     trigger: 'item'    //提示框
                 },
                 bmap: {
                     center: [116.307698, 40.056975], // 初始化中心位置坐标
                     zoom: 5, // 地图缩放比例
                     roam: true // 开启用户缩放
                 },
                 series: [
                     {
                         name: '30号',
                         type: 'effectScatter',    // 特效散点图,也可用普通散点图scatter
                         coordinateSystem: 'bmap', // 坐标系使用bmap,以地图作为底图
                         data: convertData(mydata),
                         symbolSize: function (val) {
                            return val[2] / 10;   // 用值的大小调整点的大小
                         },
                         encode: {
                             value: 2
                         },
                         label: {
                             formatter: '{c}',
                             position: 'right',
                             show: false
                         },
                         itemStyle: {
                             color: 'purple'    // 点的颜色
                         },
                         emphasis: {
                             label: {
                                 show: true
                             }
                        }
                     },
                     {
                         name: '31号',
                         type: 'effectScatter',
                         coordinateSystem: 'bmap', // 坐标系使用bmap
                         data: convertData(mydata1),
                         symbolSize: function (val) {
                            return val[2] / 10;
                         },
                         encode: {
                             value: 2
                         },
                         label: {
                             formatter: '{c}',
                             position: 'right',
                             show: false
                         },
                         itemStyle: {
                             color: 'red'
                         },
                         emphasis: {
                             label: {
                                 show: true
                             }
                        }
                     },
                 ]
             };
             bmapChart.setOption(option);
    </script>
</body>
</html>

最后呈现的地图API+散点图如下图所示:
在这里插入图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值