EChart系列:在echart3中使用百度地图扩展之后,如何获取到百度地图对象

最近做项目想要在百度地图上叠加显示echart的散点图,然后根据地图的缩放等级和区域范围要显示不同的散点图,这中间折腾了好久。功能要求包括:

(1)底图使用百度地图;

(2)可以在地图上叠加显示echart的散点图;

(3)鼠标移动到散点图上面之后,可以浮动显示相关信息;

(4)能够获取当前显示区域地图的经纬度范围;

(5)能够响应地图的拖拽和缩放事件;

这里有两种选择:

1. 使用echart2的百度地图扩展,1, 3, 4, 5 都可以满足,就是2满足不了,他的一个series的所有图标样式都是一样的,大小也一样;

2. 使用echart3的百度地图扩展,可以满足1,2,3, 4 和5满足不了,因为获取不到百度地图对象;

在初步查看了echart2和echart3的源码之后,感觉还是使用echart3比较可能快速实现,毕竟echart3的bmap扩展代码有限,我们只要想办法从这个扩展中获取到百度地图对象,后续一切都好办了。

反复阅读echart3源码(参考https://github.com/ecomfe/echarts 的3.1.6版本)目录下的 extension\bmap文件夹内的bmap.js, BMapCoordSys.js, BMapModel.js, BMapModel.js,发现BMapCoordSys.js内的BMapCoordSys.create内通过bmapModel可以获取到bmap对象,而bmapModel是通过ecModel的eachComponent方法来传入的,通过查看调用堆栈,发现ecModel其实就是EChart的_model对象。

所以找到如下获取bmap对象的方法

  1. var ecModel = myChart._model;
  2. var bmap = null;
  3. ecModel.eachComponent(‘bmap‘, function (bmapModel) {
  4. if(bmap == null){
  5. bmap = bmapModel.__bmap;
  6. }
  7. });

找到bmap对象之后,就可以去使用bmap的各种api,响应他的各种事件了(http://developer.baidu.com/map/reference/index.php  ),比如:

  1. var pt = bmap.pixelToPoint({
  2. x: 800,
  3. y: 500
  4. });
  5. var pix = bmap.pointToPixel({
  6. lng: 114.31,
  7. lat: 30.52
  8. });
  9. alert(‘lng:‘ + pt.lng + ‘, lag: ‘ + pt.lat);
  10. alert(‘武汉的坐标: x:‘ + pix.x + ‘, y: ‘ + pix.y);
  11. bmap.addEventListener("dragend",function(){
  12. alert(‘缩放等级:‘ + bmap.getZoom());
  13. });
  14. bmap.addEventListener("moveend",function(){
  15. alert(‘缩放等级:‘ + bmap.getZoom());
  16. });

来自为知笔记(Wiz)

时间: 2024-11-05 19:29:29

EChart系列:在echart3中使用百度地图扩展之后,如何获取到百度地图对象的相关文章

百度地图的使用之获取数据库表中信息的坐标点显示在地图上

//通用封装好的js: var map = new BMap.Map("container"); //建树Map实例 var point = new BMap.Point(103.976032, 33.845509); // 建树点坐标 map.centerAndZoom(point, 6); // 初始化地图,设置中心点坐标和地图级别. //地图事件设置函数: map.enableDragging(); //启用地图拖拽事件,默认启用(可不写) map.enableScrollWhe

在网页中插入百度地图 (文章相关本内容出自百度地图 | API)

方法/步骤 1 打开“百度地图生成器”的网址:http://api.map.baidu.com/lbsapi/creatmap/index.html 如下图: 2 在“1.定位中心点”中,切换城市,并查找具体位置,如下图: 3 在“2.设置地图”中,可以按照自己的喜好修改地图的外观: 1.地图的宽和高 2.地图上显示的按钮(缩放.缩略图.比例尺) 3.鼠标和键盘对地图的操作 如下图: 4 在“3.添加标注”中,可以添加自己想要标注的位置和信息,如下图: 5 在“第二步 获取代码”中,点击“获取代

从百度地图API中抠出来的一个js方法,计算百度地图坐标距离

从百度地图api(http://developer.baidu.com/map/jsdemo.htm#a6_1)中抠出来的一个js方法,计算百度地图坐标距离 可读行还没还原,能用就行~ function fD(a, b, c) { for (; a > c;) a -= c - b; for (; a < b;) a += c - b; return a; }; function jD(a, b, c) { b != null && (a = Math.max(a, b));

百度地图_根据地图上标记位置获取街道信息,以及经纬度信息

Class:服务类/Geocoder Class:服务类/GeocoderResult <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>百度地图Demo</title> <script type="text/jav

百度地图拖动标注后获取坐标

本来想用图吧的API来做的,结果弄了下,在手机上弄不了.换用百度地图了..本功能个人觉得在很多地方用到,先记下来,省得每次都得翻地图API文档一点一点弄. 功能表现为: 地图一开始打开就定位到你的附近(以百度地图的浏览器定位为准),地图中心有一标注,鼠标拖去标注结果后弹框显示经纬度,自己测试过在手机上也是可以拖动的 代码如下: <!DOCTYPE html><html><head>    <meta http-equiv="Content-Type&qu

sencha touch 百度地图扩展

上个版本http://www.cnblogs.com/mlzs/p/3666466.html,新增了一些功能 扩展代码如下: 1 Ext.define('ux.BMap', { 2 alternateClassName: 'bMap', 3 extend: 'Ext.Container', 4 xtype: 'bMap', 5 requires: ['Ext.util.Geolocation'], 6 config: { 7 map: null, 8 /// <summary> 9 /// 地

android菜鸟学习笔记31----Android使用百度地图API(二)获取地理位置及地图控制器的简单使用

1.获取当前地理位置: Android中提供了一个LocationManager的类,用于管理地理位置.不能通过构造函数获取该类的实例,而是通过Context的getSystemService(): LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 该类中有几个比较常用的方法: getLastKnownLocation(String provider)用于根据传入的provider

【百度地图API】如何制作孪生姐妹地图?

原文:[百度地图API]如何制作孪生姐妹地图? 任务描述: 我想要两张一模一样的地图!我想要双子地图!我想要孪生姐妹地图! 好好好,统统满足大家! 在这里我不需要使用百度地图API提供的地图缩略图控件,而是自己动手做一对双胞胎地图! 如何实现? 创建两张地图,map1和map2,他俩的中心点和地图级别(放大倍数)不同. 当鼠标移动map1的中心点时,map2的中心点会随着一起变化,最终和map1的中心点一致. 同理,可以实现用鼠标滚轮放大缩小地图. 操作试试: 移动左边的地图,右边的地图会随着一

【百度地图API】如何获取行政区域的边界?

原文:[百度地图API]如何获取行政区域的边界? 摘要:以前教过大家如何自行获取行政区域,或者自定义获取一个区域的边界值.今天来教大家直接调用百度地图API1.3(目前最新版本)来获取行政区域的边界值. -------------------------------------------------------------------------------------- 一.建立地图 创建地图对象:设立中心点. var map = new BMap.Map("container")