最近做项目想要在百度地图上叠加显示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. });



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

  1. 百度地图API地点搜索-获取经纬度

    分享一下地图上的地点搜索和鼠标点击获取地点经纬度,这些都是地图比较基本和实用的代码,其中还包括了根据用户IP进行地图的显示.改变地图上的鼠标样式.启用滚轮缩放等,算是半入门吧,其他的一些可以自己参考百 ...

  2. Ionic2系列——在Ionic2中使用高德地图

    之前讲过了如何在Ionic2中使用第三方库,因为第三方库必须针对TypeScript提供相应的声明文件——即d.ts文件,才能被TypeScript正确识别并编译.好在大多数的第三方库已经有了定义文件 ...

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

    原文:[百度地图API]如何获取行政区域的边界? 摘要:以前教过大家如何自行获取行政区域,或者自定义获取一个区域的边界值.今天来教大家直接调用百度地图API1.3(目前最新版本)来获取行政区域的边界值 ...

  4. 【百度地图API】自行获取区域经纬度的工具

    原文:[百度地图API]自行获取区域经纬度的工具 摘要:上一章教大家如何建立自己的行政区域地图.这次为大家提供一个,可视化选择区域,并且能自动生成经纬度代码的工具.工具的源代码完全公开,并且做了详尽的 ...

  5. 如何利用【百度地图API】,制作房产酒店地图?(下)——结合自己的数据库

    原文:如何利用[百度地图API],制作房产酒店地图?(下)--结合自己的数据库 摘要:应广大API爱好者要求,写了一篇利用自己数据库标点的文章…… -------------------------- ...

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

    原文:[百度地图API]如何制作孪生姐妹地图? 任务描述: 我想要两张一模一样的地图!我想要双子地图!我想要孪生姐妹地图! 好好好,统统满足大家! 在这里我不需要使用百度地图API提供的地图缩略图控件 ...

  7. 基于MySQL + Node.js + Leaflet的离线地图展示,支持百度、谷歌、高德、腾讯地图

    1. 基本说明 本项目实现了离线展示百度.谷歌.高德.腾讯地图.主要功能如下: 实现了地图瓦片图下载.存储.目前支持存储至MySQL Node.js服务调用MySQL中的瓦片图 Leaflet展示地图 ...

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

    1.获取当前地理位置: Android中提供了一个LocationManager的类,用于管理地理位置.不能通过构造函数获取该类的实例,而是通过Context的getSystemService(): ...

  9. 【Silverlight】Bing Maps学习系列(四):使用图钉层(Pushpin layer)及地图图层(MapLayer)(转)

    [Silverlight]Bing Maps学习系列(四):使用图钉层(Pushpin layer)及地图图层(MapLayer) 如果我们需要在Bing Maps中加入一个小图钉标记,该如何实现了? ...

随机推荐

  1. 前端框架 EasyUI (0) 重新温习(序言)

    几年前,参与过一个项目.那算是一个小型的信息管理系统,BS 结构的,前端用的是基于 jQuery 的 EasyUI 框架. 我进 Team 的时候,项目已经进入开发阶段半个多月了.听说整个项目的框架是 ...

  2. ASP.NET Core 之 Identity 入门(三)

    前言 在上一篇文章中,我们学习了 CookieAuthentication 中间件,本篇的话主要看一下 Identity 本身. 最早2005年 ASP.NET 2.0 的时候开始, Web 应用程序 ...

  3. jQuery学习之路(7)- 用原生JavaScript实现jQuery的某些简单功能

    ▓▓▓▓▓▓ 大致介绍 学习了妙味,用原生的JavaScript实现jQuery中的某些部分功能 定义自己的函数库lQuery ▓▓▓▓▓▓ $()选择器的实现 jQuery是面向对象的,所以自己编写 ...

  4. C++的内存泄漏检测

    C++大量的手动分配.回收内存是存在风险的,也许一个函数中一小块内存泄漏被重复放大之后,最后掏空内存. 这里介绍一种在debug模式下测试内存泄漏的方法. 首先在文件的开头以确定的顺序写下这段代码: ...

  5. spring remoting源码分析--Hessian分析

    1. Caucho 1.1 概况 spring-remoting代码的情况如下: 本节近分析caucho模块. 1.2 分类 其中以hession为例,Hessian远程服务调用过程: Hessian ...

  6. pdo的使用

    PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口. PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据. PDO随 ...

  7. Entity Framework 延伸系列目录

    1.采用MiniProfiler监控EF与.NET MVC项目 2.采用EntityFramework.Extended 对EF进行扩展 3.EntityFramework执行存储过程中遇到的那些坑 ...

  8. 基于fis3的组件可视化道路

    首先说明一下,即使不熟悉fis3,阅读文本应该也会有所收获. 本文以fis-parser-imweb-tplv2插件为模板插件,目的不在于使用哪个模板,而是组件可视化的实现思路,不必担心. 先说说模板 ...

  9. javaScript之BOM操作1

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. BZOJ 3626: [LNOI2014]LCA [树链剖分 离线|主席树]

    3626: [LNOI2014]LCA Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2050  Solved: 817[Submit][Status ...