前言

汇总了几个 ECharts 地图和百度地图在可视化展示时的综合示例。

主要是在 ECharts 地图和百度地图上叠加展示一些数字、图片、其它图表和轨迹动画。

另外因为每个示例的代码配置项比较繁琐,这里只贴核心代码。

BaiduMap 叠加带数字的气泡

核心配置

定义一个函数 addMarker(函数名称随意),传入参数百度地图 Point 类的实例,及 Label 类的实例

循环遍历各省份数据,根据 geoCoordMap 中的经纬度生成百度地图 Point 类的实例 point,创建 Label 类的实例用来显示各省分的数据。

循环调用 addMarker 方法。

// 百度地图API功能

var map = new BMap.Map("map");

// 编写自定义函数,创建标注

function addMarker(point, label){

var marker = new BMap.Marker(point);

map.addOverlay(marker);

marker.setLabel(label);

}

var geoCoordMap = {

黑龙江: [127.9688, 45.368],

// 省略若干...

};

// 遍历各省数据,根据省份名称对应的经纬度生成point和label

Object.keys(geoCoordMap).forEach(function(key){

var point = new BMap.Point(geoCoordMap[key][0], geoCoordMap[key][1]);

var label = new BMap.Label(key + Math.round(Math.random() * 100), {

offset: new BMap.Size(-10, -20),

});

addMarker(point, label);

});

复制代码

BaiduMap 叠加图片

核心配置

创建 Icon 类,并传入图片地址,得到自定义的图形标注

创建 Marker 类的实例,传入参数:point 和 icon 实例,并通过百度地图 api:addOverlay 添加到地图中。

// 百度地图API功能

var map = new BMap.Map("map");

// 编写自定义函数,创建标注

function addMarker(point, label){

var marker = new BMap.Marker(point);

map.addOverlay(marker);

marker.setLabel(label);

}

var geoCoordMap = {

黑龙江: [127.9688, 45.368],

//省略若干...

};

Object.keys(geoCoordMap).forEach(function(key){

var point = new BMap.Point(geoCoordMap[key][0], geoCoordMap[key][1]);

var iconLlist = [

"http://online.sccnn.com/img2/5890/jc160506-13.png",

"http://online.sccnn.com/img2/5890/jc160506-15.png",

"http://online.sccnn.com/img2/5890/jc160506-10.png",

"http://online.sccnn.com/img2/5890/jc160506-02.png",

];

var index = parseInt(Math.random() * 4);

var myIcon = new BMap.Icon(iconLlist[index], new BMap.Size(150, 150));

var marker = new BMap.Marker(point, { icon: myIcon });

map.addOverlay(marker);

});

复制代码

BaiduMap 叠加动态轨迹

核心配置

定义轨迹随时间变化的经纬度数组

定义 drawLine 方法绘制两个经纬度间的弧线,并在最近的点添加标注点。

循环遍历经纬度数组,间隔一定时间调用 drawLine 方法

// 百度地图API功能

var map = new BMap.Map("map");

var beijingPosition = new BMap.Point(116.432045, 39.910683),

hangzhouPosition = new BMap.Point(120.129721, 30.314429),

taiwanPosition = new BMap.Point(121.491121, 25.127053);

var points = [beijingPosition];

var i = 0;

var carPoint;

var carMarker;

// while (i < 5) {

setInterval(function(){

if (carMarker) {

map.removeOverlay(carMarker);

}

carPoint = new BMap.Point(

points[i].lng - Math.random(),

points[i].lat - Math.random()

);

points.push(carPoint);

i++;

drawLine();

}, 1000);

// }

function drawLine(){

var myIcon = new BMap.Icon(

"http://developer.baidu.com/map/jsdemo/img/car.png",

new BMap.Size(50, 50)

);

carMarker = new BMap.Marker(carPoint, { icon: myIcon });

map.addOverlay(carMarker);

var curve = new BMapLib.CurveLine(points, {

strokeColor: "red",

strokeWeight: 3,

strokeOpacity: 0.5,

}); //创建弧线对象

map.addOverlay(curve); //添加到地图中

}

复制代码

BaiduMap 叠加 ECharts

核心配置

定义一个函数 addOverLay,实现百度地图覆盖物基类 OverLay 的方法。并通过百度地图提供的 pointToOverlayPixel 方法,将地图上的 point 点转换为在 window 中像素值,实现图表位置的确定。

定义一个 drawPie(函数名自定义)方法,并传入参数:生成图表的 HTMLelement,以及在图表中显示的数据,像普通 echarts 图表一样配置 option。

循环遍历各省份数据,调用 addOverlay()方法

// 百度地图API功能

var map = new BMap.Map("map");

var geoCoordMap = {

黑龙江: [127.9688, 45.368],

};

var data_info = [];

Object.keys(geoCoordMap).forEach(function(key){

var p = [];

var data = [

{ name: "男", value: parseInt(Math.random() * 100) },

{ name: "女", value: parseInt(Math.random() * 100) },

];

p.push(geoCoordMap[key][0]);

p.push(geoCoordMap[key][1]);

p.push(data);

data_info.push(p);

});

addOverlay();

function addOverlay(){

var divId = 1;

function ComplexCustomOverlay(point, data){

this._point = point;

this._data = data;

}

ComplexCustomOverlay.prototype = new BMap.Overlay();

ComplexCustomOverlay.prototype.initialize = function(bmap){

this._map = bmap;

//生成div

var div = (this._div = document.createElement("div"));

//赋id

div.id = "div" + divId;

divId++;

div.style.zIndex = BMap.Overlay.getZIndex(this._point.lat);

div.style.width = "8vw";

div.style.height = "8vw";

//这里必须是绝对定位,不然会影响经纬度定位,然中偏离原来位置

div.style.position = "absolute";

//将该覆盖物添加到标签覆盖物列表

map.getPanes().labelPane.appendChild(div);

drawPie(div, this._data);

};

ComplexCustomOverlay.prototype.draw = function(){

var map = this._map;

//饼图的位置设置,需要获取该地图点的像素位置x,y

var pixel = map.pointToOverlayPixel(this._point);

this._div.style.left = pixel.x - 20 + "px";

this._div.style.top = pixel.y - 80 + "px";

};

for (var i = 0; i < data_info.length; i++) {

var myCompOverlay = new ComplexCustomOverlay(

new BMap.Point(data_info[i][0], data_info[i][1]),

data_info[i][2]

);

map.addOverlay(myCompOverlay);

}

}

function drawPie(div, val){

var echarts2 = echarts.init(document.getElementById(div.id));

option = {

//pie图相关配置

};

echarts2.setOption(option);

echarts2.resize();

}

复制代码

echarts地图文字重叠解决方案_ECharts 和百度地图的叠加示例(下)相关推荐

  1. echarts地图文字重叠解决方案_Echarts扩展地图文字位置错乱的问题

    最近在弄echarts 因为要用到扩展地图,所以在官网下载了相应的json文件 ,引入之后发现文字位置错乱 于是查找网上资料 发现 textFixed : { '大洋洲' : [265, 0], }, ...

  2. echarts地图文字重叠解决方案_echarts地图自适应中出现重叠错位的两个地图问题排查...

    项目的可视化模块中使用了echarts作为图表库.当对散点类地图作自适应开发时,发现在对地图进行偏移或缩放的时候,画布上出现了重叠并且错位的两个地图. 问题现象 上图是对地图设置偏移出现的情况,下图是 ...

  3. echarts地图文字重叠解决方案_echarts map 阴影(重叠)

    export const dfOption = { tooltip: { formatter: function(params, ticket, callback) { return params.n ...

  4. echarts地图文字重叠解决方案_echarts散点图重叠

    今天做echarts图标,使用了散点图.很快实现,发现数据不对,应该是3个的企业,页面只显示了2个,查了半天才发现原来是有两个重叠了.想办法解决了,在网上费劲九牛二虎只力终于找到了解决的方法,下面来解 ...

  5. echarts地图文字重叠解决方案_基于Echarts的百度地图叠加arcgis server的WMS图层服务...

    前言 前阵子利用echarts+百度地图做系统的门户首页,遇到一个要地图上叠加产业城影响范围示意图的需求.查阅文档之后,发现百度地图API确实提供了叠加自定义图层的方法,详情请看: 百度地图API的M ...

  6. echarts地图文字重叠解决方案_vue中使用echarts地图且修改地图文字位置

    使用echarts地图的时候,从阿里云 地图选择器 下载完对应省份的geojson之后,在页面中显示,会出现一些地市名字覆盖的情况,可以直接修改geojson中的数据对文字的位置进行修改 解决方法 打 ...

  7. html5 百度地图api文档,开发指南--百度地图JavaScript API大众版.doc

    开发指南--百度地图JavaScriptAPI大众版开发指南--百度地图JavaScriptAPI大众版 简介 JavaScript API大众版 JavaScript API功能介绍 百度地图Jav ...

  8. 门店定位怎么在地图上显示_怎么在百度地图上面显示自己店面的地址,

    展开全部 1.进2113入百度地图,然5261后登录自己的百度帐号4102. 2.接着搜1653索一下自己的商铺回是否在地图答上面有标注,如没有再选择添加该地点. 3.进入到百度本地商户中心,再次搜索 ...

  9. js百度地图小车html,Web js实现百度地图实时轨迹画线 小车车行驶轨迹 | 彬菌

    版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创! 恰饭广告 注意: 1.百度地图ak换成自己在百度地图官网申请 2.建议使用firefox浏览器,google被墙无法调用gp ...

最新文章

  1. 内存都没了,还能运行程序?
  2. 根据RTL图编写Verilog程序
  3. mysql直接执行文件格式_Windows 环境下执行 .sql 格式文件方式
  4. mysql 忘记密码
  5. 程序员新年要实现的10个愿望
  6. vs code react-native 安卓调试_实战|C++在vscode上的调试配置
  7. 超级易使用的jquery视频背景插件Vide
  8. CAj格式文件打开方法
  9. tpm_crb MSFT0101:00: [Firmware Bug]: ACPI region does not cover the entire command/re处理
  10. [Hulu] 数组最大价值
  11. linux非lvm分区在线扩容,Linux硬盘扩容(非LVM)
  12. 取消 “是否把IE8设置为默认浏览器提示 提示
  13. [论文总结]:Mixed Precision Training 混合精度训练 百度和英伟达联合发表 ICLR 2018
  14. vue 模拟随机变速的动态打字特效【支持多行文本】(含css实现闪烁光标,js动态改变setInterval定时器的时间间隔)
  15. 仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义
  16. SparkRDD函数详解
  17. SQL中连接JOINS总结
  18. redis value最大值_Redis value的5种类型及常见操作
  19. 计算机的标准输入法,计算机操作系统标准教程 第4章 五笔字型输入法.pdf
  20. Jenkins配置Coding Webhook

热门文章

  1. 关于batch_size的理解
  2. Ant Design Vue :使用日历Calendar,中英文切换
  3. 基于51单片机的智能光控路灯设计及设计报告
  4. 微信客服消息html链接,微信公众号利用客服消息和模板消息实现微信群发
  5. 浅谈西门子840d主轴速度控制_西门子系统硬件故障维修案例第一讲
  6. java中如何实现qq登录与微博登录,如何从零开始对接第三方登录(Java版):QQ登录和微博登录(2)...
  7. TrueType字体文件提取关键信息
  8. oracle raise 含义,Oracle中RAISE异常详解
  9. [书]操作系统真象还原 -- 第9章 内核(中断、内核内存管理、内核线程)
  10. 用友T3升级到U8步骤