zoukankan      html  css  js  c++  java
  • 主要看思路:区域数据去重 + JavaScript一次性展示几万条数据实例代码

    近期做1功能,Gis地图 基于百度地图api , 会遇到的问题的,

    如后台接口给的数据很多,大几千上万的,如果拿了数据直接渲染dom ,这滋味爽爽的。

    再遇上 客户端浏览器悲催的,这卡顿就来了...

    前端大量数据渲染的一个弊端。

    想到的处理方式:

    1. 数据的去重合并

    基于当前可是屏幕范围,拿到baidu对应的 经维度区域,baidu api 里有 getBounds 和 getZoom 方法

    var viewArea =  map.getBounds();  // 可视区域
    var mapScale = map.getZoom();  // 地图放大缩小比例

    对应后台接口返回数据,要拿基于这个可是区域的维度范围进行返回,

    如果回来有万以上,在页面上展示这么多也没实际意义,

    前端需要自己进行数据过滤,基于放大缩小比例, 屏幕上返回数据偏差不大的要进行去重  (这个算法就先不细说了)

    最先想到的是 2组数据循环对比去重,怎么看都不太对啊,这要数据多了??? 不用想,绝对要挂的节奏....

    -------------------------------

    和架构师聊了,给了个建议,效率上好很多, 看下图:

    给的思路:

    1. 基于区域画格子,算出格子对应的经纬度,构造1个二维数组的数据;

    2. 拿到后台返回的数据,循环时,算出在二位数组中对应的位置,如状态为无就认为该条数据有效,更改对应二位数组数据的状态, 如已经有状态了数量丢弃,对应的状态数量+1;

    处理出有效的数据......扯的有点远了

    2. 数据的分片渲染展示

    如果有效数据还是很多,假如有大几千几万的,一次展示全也是苦哈哈的;

    处理方式其实也不复杂, 把数据照一定数量进行分块,定时异步展示出;

    如有6000条数据, 可照1000条拆成6组, 先拿1组展示,循环定时展示出其他....

    思路基本上是这样

    更多细节也可参考看到的一文章, 里面有个保持数据插入的次序不错,可作参考

    JavaScript一次性展示几万条数据实例代码: http://www.php.cn/js-tutorial-360591.html

    回首过去,回望你自己,你有多少事是得过且过的完成,又有多少事是用心去做并努力达到完美?
  • 相关阅读:
    NSURLConnection和Runloop(面试)
    文件的上传
    CentOS 7防火墙快速开放端口配置方法
    国内常用源镜像地址:
    yum安装zabbix-web-mysql出现[Errno 256] No more mirrors to try.
    1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client。
    http代理和SOCKS代理的区别
    windows下redis安装
    centeros7安装mysql
    nginx配置负载均衡分发服务器笔记
  • 原文地址:https://www.cnblogs.com/jshare/p/6770107.html
Copyright © 2011-2022 走看看