zoukankan      html  css  js  c++  java
  • 数据说话,88000条数据绘制北京市地图

    偶获得一批数据,本着好玩的态度绘制下来看看到底是什么鬼,绘制的结果如下:

    呵呵,什么都不像。而且中间最重要的部分因数据量过大绘制的已经看不清楚了。于是乎,缩小绘制范围,去除周围没有用的数据。重新绘制结果如下:

    呵呵,北京市地图。有点像,大家可以唱五环之歌了。。。

    再来一张只有边没有点的,会清晰一点。

    嗯。。。不错。。。

    绘制代码如下:

    var xhrNode = new XMLHttpRequest();
    xhrNode.onreadystatechange = function() {
        if(xhrNode.readyState == 4) {
            if((xhrNode.status >= 200 && xhrNode.status < 300) || xhrNode.status == 304) {
                drawNode(xhrNode.responseText);
            }
            else {
                alert('hehe');
            }
        }
    }
    xhrNode.open("get",'ReadFile.php',false);
    xhrNode.send(null);
    
    function drawNode(paths) {
        var pathArr = paths.split(','),    
        i,len,perpath,
        cs = document.getElementById('cs');
        var context = cs.getContext("2d");
        context.beginPath();
        
        for(i = 0,len = pathArr.length;i < len;i++) {
            perpath = pathArr[i].trim().split(' ');
            context.moveTo(parseInt(perpath[1]),parseInt(perpath[2]));
            if(parseInt(perpath[0]) === 0) {
                context.arc(parseInt(perpath[1]),parseInt(perpath[2]),7,0,2*Math.PI,false);
                context.fill();
                context.fillText(parseInt(perpath[0]),parseInt(perpath[1]) + 8,parseInt(perpath[2]) + 8);
            }
            else {
                context.arc(parseInt(perpath[1]),parseInt(perpath[2]),1,0,2*Math.PI,false);
                if(parseInt(perpath[3]) != -1) {
                    context.fillText(parseInt(perpath[0]),parseInt(perpath[1]) - 4,parseInt(perpath[2]) + 4);
                    context.fillText(parseInt(perpath[3]),parseInt(perpath[4]) - 4,parseInt(perpath[5]) + 4);
                    context.arc(parseInt(perpath[4]),parseInt(perpath[5]),1,0,2*Math.PI,false);
                }
            }
        }
        context.stroke();
    }

    canvas确实很有意思,但是对于浏览器来说数据量一大,就会出问题了(卡的不行)。所以,当数据达到几十万甚至上百万千万的时候还是用“万能“的c语言绘制比较好。。。

    以上

  • 相关阅读:
    C#中ArrayList 与 string、string[]数组 的转换
    C#int转成string,string转成int...获取listbox中的值...ListBox 如何循环赋值
    windows下定时利用bat脚本实现ftp备份上传
    Matlab中的静态文本框中显示多行内容
    matlab gui edit text 多行输出
    matlab的GUI中用全局变量来终止循环
    windows下定时利用bat脚本实现ftp上传和下载
    利用MATLAB绘制置信区域
    用MATLAB做聚类分析
    递归、斐波拉契数列、快速排序、八皇后
  • 原文地址:https://www.cnblogs.com/MarcoHan/p/5475926.html
Copyright © 2011-2022 走看看