使用过百度统计或者cnzz统计的童鞋应该知道,后台有一个地图统计,不同访问量的省份显示的颜色也不一样,今天我将带领大家开发一个这样的案例。上一篇《使用raphael.js绘制中国地图》文章中,我给大家介绍了如何使用raphael.js绘制中国地图,今天我要给大家介绍在实际应用中,如何把数据载入到地图中。本文结合实例,使用PHP+Mysql+jQuery实现中国地图各省份数据统计效果。
本例以统计某产品在各省份的活跃用户数为背景,数据来源于mysql数据库,根据各省份的活跃用户数,分成不同等级,并以不同的背景色显示各省份的活跃程度,符合实际应用需求。
HTML
和本站上篇文章《使用raphael.js绘制中国地图》一样,首先在head部分载入raphael.js库文件和chinamapPath.js路径信息文件。
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="raphael.js"></script> <script type="text/javascript" src="chinamapPath.js"></script>
然后在body中需要放置地图的位置放置div#map。
<div id="map"></div>
PHP
我们准备一张mysql表名为mapdata,这张表存储的是产品在各个省份的活跃用户数据。我们使用PHP读取mysql表中的数据,并将读取的数据以json格式输出,并将PHP文件命名为json.php。
$host="localhost";//主机 $db_user="root";//数据库用户名 $db_pass="";//密码 $db_name="demo";//数据库名称 $link=mysql_connect($host,$db_user,$db_pass);//连接数据库 mysql_select_db($db_name,$link); mysql_query("SET names UTF8"); $sql = "select active from mapdata order by id asc";//查询 $query = mysql_query($sql); while($row=mysql_fetch_array($query)){ $arr[] = $row['active']; } echo json_encode($arr);//JSON格式 mysql_close($link);//关闭连接
值得注意的是,我们要把mapdata表中各省份的排序与chinamapPath.js文件中的各省份顺序一致,这样才能保证读取的数据能和地图中的省份对应上。
jQuery
首先我们使用jquery的get()方法获取json数据。
$(function(){ $.get("json.php",function(json){ ... }); });
获取到json数据后,我们先要将json数据转换为数组,然后我们遍历整个数组,根据json数据中各省份活跃用户数的多少,我们作一个等级区分,这里我将等级分为0-5六个等级,活跃用户数越大背景颜色越深,这样在地图上显示就会一目了然的看出不同省份的数据等级程度。绘制地图的时候和本站上篇文章《使用raphael.js绘制中国地图》介绍的基本一样,不同之处在于给每个不同省份填充对应的颜色,请看整理好的代码:
$(function(){ $.get("json.php",function(json){//获取数据 var data = string2Array(json);//转换数组 var flag; var arr = new Array();//定义新数组,对应等级 for(var i=0;i<data.length;i++){ var d = data[i]; if(d<100){ flag = 0; }else if(d>=100 && d<500){ flag = 1; }else if(d>=500 && d<2000){ flag = 2; }else if(d>=2000 && d<5000){ flag = 3; }else if(d>=5000 && d<10000){ flag = 4; }else{ flag = 5; } arr.push(flag); } //定义颜色 var colors = ["#d7eef8","#97d6f5","#3fbeef","#00a2e9","#0084be","#005c86"]; //调用绘制地图方法 var R = Raphael("map", 600, 500); paintMap(R); var textAttr = { "fill": "#000", "font-size": "12px", "cursor": "pointer" }; var i=0; for (var state in china) { china[state]['path'].color = Raphael.getColor(0.9); (function (st, state) { //获取当前图形的中心坐标 var xx = st.getBBox().x + (st.getBBox().width / 2); var yy = st.getBBox().y + (st.getBBox().height / 2); //修改部分地图文字偏移坐标 switch (china[state]['name']) { case "江苏": xx += 5; yy -= 10; break; case "河北": xx -= 10; yy += 20; break; case "天津": xx += 10; yy += 10; break; case "上海": xx += 10; break; case "广东": yy -= 10; break; case "澳门": yy += 10; break; case "香港": xx += 20; yy += 5; break; case "甘肃": xx -= 40; yy -= 30; break; case "陕西": xx += 5; yy += 10; break; case "内蒙古": xx -= 15; yy += 65; break; default: } //写入文字 china[state]['text'] = R.text(xx, yy, china[state]['name']).attr(textAttr); var fillcolor = colors[arr[i]];//获取对应的颜色 st.attr({fill:fillcolor});//填充背景色 st[0].onmouseover = function () { st.animate({fill: "#fdd", stroke: "#eee"}, 500); china[state]['text'].toFront(); R.safari(); }; st[0].onmouseout = function () { st.animate({fill: fillcolor, stroke: "#eee"}, 500); china[state]['text'].toFront(); R.safari(); }; })(china[state]['path'], state); i++; } }); });
上述代码中,使用var fillcolor = colors[arr[i]];获取对应等级的颜色值,然后通过st.attr({fill:fillcolor});将颜色填充到对应的省份区块中。此外string2Array()函数是将字符串转换为数组。
function string2Array(string) { eval("var result = " + decodeURI(string)); return result; }
这样,我们可以看到一个不同省份不同背景色的中国地图,根据不同颜色可以区分省份之间的活跃用户数差异程度,达到预期目标。
相关推荐
标题中的知识点是通过...通过这个过程,可以将数据以可视化的方式展现到中国地图上,实现数据统计和直观的区域分析功能。这对于做数据分析和可视化展示的网站尤其有用,可以帮助网站运营者快速了解各地区的数据情况。
内容概要:本文详细介绍了利用S7-200 PLC和组态王构建花式喷泉控制系统的设计思路和技术细节。首先阐述了喷泉系统的基本构成,包括硬件部分如PLC、喷嘴及其连接方式,以及软件部分如喷嘴控制逻辑、喷泉变换逻辑和控制画面设计。接着展示了具体的梯形图接线图和代码实现,解释了关键变量的作用和程序流程。最后讨论了系统测试与调试的方法,强调了硬件配置、IO分配、通信配置等方面的注意事项,并分享了一些实用技巧。 适合人群:对工业自动化感兴趣的工程师、技术人员及学生。 使用场景及目标:适用于需要设计和实施智能喷泉控制系统的项目,旨在提高喷泉控制的智能化水平,增强观赏性和互动性。 其他说明:文中提供了详细的硬件配置清单、IO分配表、梯形图代码样例以及调试过程中遇到的问题和解决方案,有助于读者更好地理解和应用相关技术。
1、文件说明: Centos8操作系统tang-7-6.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf tang-7-6.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
矩阵链乘积次数问题(栈和队列的应用) 问题描述:输入n个矩阵的维度和一个矩阵链乘积表达式,请输出按照该表达式计算所有乘积运算的乘法次数之和。如果乘法无法进行,输出error。假定A是m*n矩阵,B是n*p矩阵,那么AB是m*p矩阵,A*B运算的乘法次数为m*n*p。如果A的数不等于B的行数,则乘法无法进行。
软件测试资源合集,含基本理论、接口测试、性能测试、基础教程、漏洞追踪等。
这是一份针对Java编程的面试题,涵盖了Java的基础知识与面向对象编程的核心概念。问题包括数据类型、控制语句、数组操作和类的设计等,旨在测试面试者对Java语言的掌握程度、代码实现能力以及解决实际问题的思维方式。
# 基于嵌入式系统的Tap键盘模拟器 ## 项目简介 Tap Keyboard Emulator是创新的嵌入式系统项目,采用特殊编程实现单点触摸输入。用户无需移动手指或视觉追踪就能快速输入文本,为高效、无障碍输入提供了新方案。 ## 项目的主要特性和功能 ### 主要特性 1. 非视觉输入引导借助特殊感应装置,实现无视觉依赖的文本输入。 2. 快速打字单点触摸方式提升打字效率。 3. 自定义手势支持用户创建个性化快捷键或命令。 4. USB即插即用通过USB接口连接,兼容性广泛且连接方便。 ## 安装使用步骤 假设用户已下载项目源码文件,以下是安装和使用基本步骤 1. 准备硬件设备,如感应装置、处理器和USB接口等。 2. 使用开发工具编译源码,并烧录到硬件设备。 3. 通过USB接口将设备连接到电脑。 4. 根据设备特性进行系统设置和调整。 5. 启动设备,按提示进行非视觉输入引导,开始文本输入。
内容概要:本文详细介绍了欧姆龙机器视觉软件系统FH、FZ、FJ系列的特点及其应用场景。FZ系列作为基础款图像处理工具包,适用于简单的图像处理任务如二维码识别,但不支持深度学习模型。FH系列则在此基础上增加了NNProcessor模块,支持深度学习模型的应用,如PCB板焊点检测,并引入了GPU加速的图像处理能力。FH系列还提供了强大的仿真环境,可以在不接入真实硬件的情况下进行检测流程的模拟,极大提高了调试效率。此外,FH系列优化了图像处理流水线,采用链式语法提高处理效率。文中还展示了如何将仿真数据与真实设备结合使用,以及如何利用仿真环境进行异常情况模拟。最后,文章强调了FH系列在硬件兼容性和实时参数反馈方面的优势。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对机器视觉有需求的研发人员。 使用场景及目标:①帮助工程师快速掌握欧姆龙机器视觉软件系统的使用方法;②提供详细的代码示例,便于理解和实践;③介绍仿真环境的应用,降低试错成本,提高开发效率。 其他说明:文章通过具体案例和代码示例,深入浅出地讲解了各系列软件的特点和优势,为用户提供了一个全面的学习和参考资料。
内容概要:本文详细介绍了基于P2并联架构的Cruise仿真模型及其Simulink控制策略。首先,文章阐述了模型架构,特别是P2电机的位置选择以及行星齿轮组的参数配置,强调了扭矩耦合的优势。接着,深入探讨了控制策略,包括三层状态机嵌套的工况识别模块、滑动窗口方差计算用于预判驾驶意图、带遗忘因子的递推最小二乘法进行动态扭矩分配等关键技术。此外,文章还展示了速度跟随模块采用的带前馈的PID控制算法,并讨论了模型验证过程中遇到的问题及解决方案。最后,作者分享了一些有趣的彩蛋和隐藏功能,如秋名山模式和实时参数调整模块,以及模型的实际性能提升情况。 适合人群:从事汽车控制系统研究、混合动力汽车开发的技术人员,尤其是熟悉Matlab/Simulink平台的研发人员。 使用场景及目标:适用于希望深入了解P2并联架构Cruise仿真模型的设计原理和技术细节的研究者;旨在帮助开发者掌握先进的控制策略实现方法,提高仿真模型的精度和效率。 其他说明:文中提供了详细的代码片段和参数设置指南,便于读者理解和复现实验结果。同时,作者提醒读者注意一些潜在的技术陷阱,并给出了相应的解决建议。
内容概要:本文详细介绍了威纶通触摸屏与施耐德ATV12变频器之间的Modbus通讯方法,涵盖硬件接线、参数设置、控制程序编写以及调试技巧。首先,文章讲解了正确的硬件连接方式,强调了接线规范和注意事项,如正确连接双绞线并确保接地良好。接着,针对ATV12变频器的具体参数设置进行了详尽说明,包括通信模式的选择、波特率、校验位等重要参数的配置。然后,文章提供了触摸屏侧的配置指导,包括创建Modbus RTU设备、设置通信参数和编写控制脚本。此外,文中还分享了一些常见的调试问题及其解决办法,如通讯超时、频率设定异常等,并给出了实用的调试工具和方法。最后,文章建议在HMI界面上加入通讯心跳检测功能,以便及时发现和解决问题。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些负责PLC编程、HMI界面开发和设备集成工作的专业人员。 使用场景及目标:适用于需要将威纶通触摸屏与施耐德ATV12变频器进行Modbus通讯连接的实际工程项目中,帮助技术人员顺利完成设备间的通信配置,确保系统稳定可靠运行。 其他说明:本文不仅提供理论知识,还包括大量实践经验,对于初学者来说是非常宝贵的参考资料。同时,文中提到的一些小技巧和注意事项能够有效避免常见错误,提高工作效率。
【活动】创作者激励数据相关材料
内容概要:本文详细介绍了基于PLC的液体饲料自动调配与饲喂系统的开发过程和技术要点。首先,文章描述了系统硬件架构的设计,包括选用的PLC型号、传感器类型及其连接方式。接着,深入探讨了梯形图程序的具体实现,如急停按钮、液位传感器、定时器等功能的逻辑设计。此外,文章还讲解了配料算法的优化,特别是针对黏稠物料的特殊处理方法。最后,讨论了组态画面的设计,确保操作简便直观,并介绍了故障自检功能和模拟量处理的黑科技,如移动平均滤波和PWM调节流量。 适合人群:具有一定PLC编程经验的技术人员,尤其是从事工业自动化领域的工程师。 使用场景及目标:适用于需要提高饲料调配精度和效率的养殖场或饲料加工厂。主要目标是通过自动化控制系统,减少人为干预,提高生产效率和产品质量。 其他说明:文中提供了大量实用的调试经验和注意事项,帮助读者更好地理解和应用相关技术。
内容概要:本文详细介绍了如何使用MATLAB实现直流潮流计算和潮流跟踪算法,并将其应用于IEEE-9节点系统进行验证。文中首先解释了直流潮流的基本概念和核心公式P = B'θ,接着展示了具体的MATLAB代码实现步骤,包括构建导纳矩阵、处理平衡节点以及计算节点相角和支路潮流。此外,文章还比较了直流潮流与牛顿法的区别,指出前者在计算速度上的优势和精度上的局限性。最后,作者提出了将直流潮流用于快速估算和故障分析的实际应用场景。 适合人群:电力系统相关专业的学生、研究人员和技术人员,尤其是对MATLAB编程有一定基础的人群。 使用场景及目标:适用于电力系统仿真、故障分析、电网规划等场合,旨在帮助用户快速掌握直流潮流计算方法,提高工作效率。 其他说明:尽管直流潮流存在一定的精度限制,但它作为一种高效的简化模型,在初步分析和快速估算中有广泛的应用价值。同时,文章提供了详细的代码示例和验证结果,便于读者理解和实践。
内容概要:本文深入探讨了蝴蝶优化算法(BOA)的一种改进版本——MSBOA。主要改进点包括:Circle混沌初始化种群,增强了初始种群的多样性和均匀性;非线性因子调整,使得算法能够更好地平衡全局搜索和局部搜索;正余弦混合策略,提高了跳出局部最优的能力;以及逐维t分布扰动,解决了高维优化中的维度诅咒问题。文中详细介绍了各部分的代码实现,并通过多个测试函数验证了MSBOA的有效性。实验结果表明,MSBOA在收敛速度和精度上均优于原始BOA和其他常见优化算法。 适合人群:对优化算法有一定了解的研究人员和技术爱好者,希望深入了解并改进现有优化算法的人。 使用场景及目标:适用于解决复杂的多维优化问题,如工程设计、机器学习超参数调优等领域。目标是提供一种高效的优化方法,能够在较短时间内找到全局最优解。 其他说明:文章不仅提供了详细的理论解释,还包括具体的代码实现和实验数据,有助于读者理解和实际应用。同时提醒读者注意参数的选择和调整,以获得最佳性能。
内容概要:本文详细介绍了基于西门子S7-1200 PLC的三轴伺服控制系统的设计与实现。主要内容涵盖使用UDT(用户自定义数据类型)、多重背景数据块、状态机模式切换以及报警处理等方面。通过结构化编程的方法,实现了代码的高复用性和良好的扩展性。文中还分享了一些具体的编程技巧,如脉冲输出、加减速曲线设置、IO映射等,并讨论了调试过程中遇到的问题及其解决方案。 适合人群:具有一定PLC编程经验的自动化工程师和技术人员。 使用场景及目标:适用于需要进行复杂机电一体化系统集成的工业环境,旨在提高生产效率和维护便捷性。具体应用场景包括但不限于流水线改造、机器人控制等领域。 其他说明:作者强调了结构化编程对于减少冗余代码、提升开发效率的重要性,并指出合理的数据库规划有助于快速定位问题并优化性能。此外,文章还提到了一些实用的小技巧,如利用状态机实现模式切换、采用事件队列管理报警信息等。
内容概要:本文详细介绍了三相模型预测控制(MPC)整流器的设计与实现。该系统采用双环控制架构,电压外环使用经典的PI控制确保直流母线电压稳定,而电流内环则利用MPC进行实时预测和优化,以实现高效的电流跟踪和功率因数控制。文中展示了具体的MATLAB和C代码片段,解释了各个控制环节的工作原理和技术细节,包括代价函数的选择、模式切换机制以及功率因数的计算方法。此外,还讨论了一些常见的调试技巧和注意事项,如参数调优、采样同步等问题。 适用人群:适用于从事电力电子、自动化控制领域的工程师和技术人员,尤其是对MPC算法感兴趣的科研人员。 使用场景及目标:本系统的应用场景主要包括工业电源、新能源发电等领域,旨在提高系统的动态响应速度、稳定性和功率因数。具体目标是通过优化控制算法,使得整流器能够在不同工作模式下平稳运行,并达到较高的功率因数(≥0.92)。 其他说明:文章不仅提供了理论分析,还有丰富的实践经验分享,帮助读者更好地理解和应用相关技术。同时提醒开发者关注一些容易忽视的问题,如参数敏感性和硬件兼容性等。
内容概要:本文详细介绍了超声空化气泡的理论研究、实验验证及声场内空化气泡分布的标定。首先,通过Python代码实现了单个超声空化气泡的动力学模拟,利用四阶龙格-库塔法求解气泡半径随时间的变化,并绘制了气泡半径随时间变化的图表。接着,采用有限差分法模拟了声场内的压力分布,进一步分析了空化气泡的分布情况。最后,结合声压场分布,模拟了多个空化气泡在声场内的动态演化过程,并通过动画展示了气泡的生长和收缩。 适合人群:从事超声波技术、流体力学、物理学等领域研究的专业人士,尤其是对超声空化现象感兴趣的科研工作者和技术人员。 使用场景及目标:①帮助研究人员深入理解超声空化气泡的动力学行为;②提供一种有效的工具来预测和分析声场内空化气泡的分布;③为超声设备的设计和优化提供理论支持和技术手段。 其他说明:文中提供的Python代码可以作为教学和研究的基础,用户可以根据具体应用场景进行修改和扩展。此外,模拟过程中使用的物理参数和数学模型可根据实际情况进行调整,以提高模拟的准确性。
点进去,下载安装软件库等1个文件.rar
matlab