文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。

1.背景

eCharts提供了迁徙图、热点图、夜视图等跟地图能够很好的结合起来的数据展示方式。但是如何将eCharts和我们的AGS JS框架以及自身的地图相结合,是一个很值得研究的地方。我所在小组中的一位同事上两周作为主力对eChart和我们目前所使用的AGS JS的结合做了一些研究,取得了不错的进展。我本人对其研究进行了跟进,这里作为二传手,将这些进展以及效果做一个小的总结,同时也利于我对他研究的进一步学习。感谢我这位优秀的同事。

2.必须解决的问题——坐标问题

series中的geoCoord参数是用来设置标注点地理坐标的。标注点是否能正确叠加到我们发布的地图上,此参数至关重要。

首先,我们将此参数中的值设置为与我们发布的地图相吻合的坐标值。比如,我们地图是使用的XIAN1980 的坐标系,以117度为经线做高斯投影后的地图。此时的参数我们设置为:

我们研究eChart的源码可以发现,每个标注点之所以能显示在地图上,是因为它内部会首先在geoCoord中读取到该点的地理坐标,然后转换为此时的屏幕坐标。但是,如果我们已经给每一个标注点的X和Y赋予了值后,eChart内部会直接使用该值而不再自身进行转换。以下为eChart内部的该源码部分:

在了解了此过程后,我们便有了如下思路:

a.继承AGS上的基类Layer,扩展出一个eChartLayer。

b.将eChartLayer添加到AGS的Map中。

c.遍历Option中的Data,利用AGS提供的toScreen方法直接将geoCoord中的坐标点转换为此时的屏幕坐标,并赋予各标注点的X和Y。

通过测试,很好的解决了标注点能正确显示在地图上的问题。

3.进一步解决的问题

3.1频繁刷新问题

在将我们所写的eChartLayer加入到Map中后,我们会发现,每次地图开始平移时,eChart上的各种效果便开始不断的处于刷新重绘状态。

解决思路时,监听地图的平移事件,对eChart进行重绘控制。

3.2刷新后某些功能失效问题

eChart官网上提供的示例,因为是静止的,不会出现该问题。但是当把它们叠加到地图,对地图进行平移、放大、等需要经常刷新重绘的用途上时便会发生某些功能失效的问题。

比如,下图所示,当我们点击了图例中的案件数量时,以案卷数量为标题的标注点都会消失。但当我们平移地图后,所以位置点进行重绘时,相关设置便失效,之前消失的标注点又会被重绘出来。

                     

这里说一下我们自身的解决方法。

我们的思路时,将重绘分为两种,一种是重新参数绑定,一种是只改变标注点XY坐标的重绘。对于上述操作,我们进行只改变标注点坐标的重绘方式。该问题解决。

4.Iframe和eChart的兼容问题

在eChart中有大量的instanceof Array这样的代码。但是我们发现在Iframe中,此处会报出错误。所以如果在Iframe中应用eChart时,需要改写eChart中与此相关的代码。

5.效果展示

热点图:

荧光图:

迁徙图:

6.进一步研究的方向

eCharts中的地图显示部分提供了对GeoJson的支持。我们可以利用矢量切图生成各个GeoJson文件,然后通过eCharts对各矢量文件进行展示。由于eCharts本身使用的HTML5进行渲染,对大数据渲染支持的很好,我们既可以解决加速请求矢量数据的问题,也能解决大数据渲染问题。

-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                        

WebGIS中利用AGS JS+eCharts实现一些数据展示的探索相关推荐

  1. php 输出图片给js,如何在php中利用croppic.js对图片进行剪切并上传

    如何在php中利用croppic.js对图片进行剪切并上传 发布时间:2021-01-30 16:41:02 来源:亿速云 阅读:92 作者:Leah 这篇文章将为大家详细讲解有关如何在php中利用c ...

  2. Vue项目中利用pdf.js实现pdf内容滑选文字展示与搜索功能

    Vue项目中利用pdf.js实现pdf内容滑选文字展示与搜索功能 需求:在pdf中鼠标滑动选中一段文字,将选中文字展示到input框中(pdf在iframe中) 完成效果: 关于pdf的引用:我是直接 ...

  3. html 全景图three,vue中利用three.js实现全景图的完整示例

    粗暴一点,直接上代码: 第一步: 通过指令下载three.js npm install three -S 第二步: 在组件中引用 import * as THREE from 'three' 第三步: ...

  4. php模拟post提交json数据,如何在PHP中利用curl模拟post提交json数据

    如何在PHP中利用curl模拟post提交json数据 发布时间:2021-02-05 16:30:19 来源:亿速云 阅读:63 作者:Leah 本篇文章为大家展示了如何在PHP中利用curl模拟p ...

  5. Echarts饼图之数据展示

    Echarts饼图之数据展示 1.组件简介 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,C ...

  6. java ajaxupload_Java中利用ajaxfileupload.js组件实现文件的上传功能

    概要: 在Java中,利用ajaxfileupload.js+commons-fileupload-1.3.1.jar 实现文件上传功能. 关键字: Java,上传,ajaxfileupload,fi ...

  7. vue中利用gif.js实现GIF动图下载

    前言 gif.js可以将帧图或者canvas拼成新的gif,gif.js没有npm install的库,引用方式如下: 1. 下载资源 首先从官方仓库上下载代码,worker不能跨域,所以资源必然是放 ...

  8. python处理数据的包_在Python中利用Into包整洁地进行数据迁移的教程

    动机 我们花费大量的时间将数据从普通的交换格式(比如CSV),迁移到像数组.数据库或者二进制存储等高效的计算格式.更糟糕的是,许多人没有将数据迁移到高效的格式,因为他们不知道怎么(或者不能)为他们的工 ...

  9. python网站迁移_在Python中利用Into包整洁地进行数据迁移的教程

    动机 我们花费大量的时间将数据从普通的交换格式(比如CSV),迁移到像数组.数据库或者二进制存储等高效的计算格式.更糟糕的是,许多人没有将数据迁移到高效的格式,因为他们不知道怎么(或者不能)为他们的工 ...

最新文章

  1. Uber准备放弃自动驾驶,转手卖给前谷歌无人车CTO,估值曾被孙正义炒到72.5亿美元...
  2. HTTP协议:看个新闻原来这么麻烦
  3. Sub-process /usr/bin/dpkg returned an error code (1)
  4. [云炬Mysql数据库笔记] 第3章 数据定义
  5. Docker搭建hadoop集群
  6. 位图排序(计数排序)
  7. 线性筛素数的实现与证明
  8. iCloud 是什么
  9. 微信小程序---家庭记账本开发(三)
  10. chrome 内核CEF 编译和qt 封装(上)
  11. 哈夫曼码的编译码系统
  12. 数据的逻辑结构包括那些?
  13. Python: pandas中ix的详细讲解
  14. CSDN 修改名字昵称以及ID 修改博客标题 - 告别自动生成的 id (亲测有效!)
  15. SecureCRT 中如何配置颜色
  16. dds:publish
  17. hover鼠标的悬停效果
  18. 对图标的坐标轴进行调整
  19. 帝国CMS模板组创建和管理,让网站完成迅速”变脸“
  20. 计算机用户名怎么改好听,电脑维修店名字好听易记

热门文章

  1. Pytest 自动化测试框架
  2. 城轨的两类时钟系统均同步于_推介中央电视台4K IP化移动外场系统搭建中解决的主要问题...
  3. QTextEdit 不允许输入文字
  4. 3D slicer的教程网站
  5. android root点击事件,在Android中使用InputManagerService进行事件传递
  6. calender get方法_Calendar.get()方法--- WEEK_OF_YEAR 、MONTH、
  7. c语言产生带字母的随机数,菜鸟求助,写一个随机输出26个英文字母的程序
  8. git 回滚到某个commit_Git 整理 v1.0 | Git 操作整理进阶篇
  9. halcon视觉框架源码_图像处理与机器视觉初学者学习路线
  10. 使软件可二次开发_九思软件:平台型OA系统为何要好于项目型OA系统?