博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EChart系列:在echart3中使用百度地图扩展之后,如何获取到百度地图对象
阅读量:6637 次
发布时间:2019-06-25

本文共 1238 字,大约阅读时间需要 4 分钟。

最近做项目想要在百度地图上叠加显示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源码(参考  的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,响应他的各种事件了(   ),比如:
 
  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. });

转载地址:http://opsvo.baihongyu.com/

你可能感兴趣的文章
两个子群的并仍然是子群的充要条件
查看>>
《算术探索》(高斯) 第14目
查看>>
安装jdk8
查看>>
扁平化职能管理三部曲
查看>>
外部函数(计算圆面积)
查看>>
java包的所有类生成class
查看>>
iframe
查看>>
Firebug中请求各阶段时间详细解释
查看>>
如何配置kindeditor的工具栏
查看>>
Docker-端口映射实现访问容器
查看>>
印象中最深刻的三位老师
查看>>
多线程-----源码解析ThreadLocalMap里Entry为何声明为WeakReference?
查看>>
RabbitMQ之消息持久化(队列持久化、消息持久化)
查看>>
软件架构风格
查看>>
LeetCode 205 Isomorphic Strings
查看>>
Cassandra使用指南(一)
查看>>
11.30
查看>>
RubyMine不能调试Rails项目的问题
查看>>
部署AlwaysOn第三步:集群资源组的健康检测和故障转移
查看>>
【精尽Netty源码解析】1.Scalable IO in Java——多Reactor的代码实现
查看>>