Maison php教程 php手册 PHP+Mysql+jQuery实现中国地图区域数据统计

PHP+Mysql+jQuery实现中国地图区域数据统计

Jun 06, 2016 pm 07:53 PM
Carte de la Chine 区域 实现 数据

使用raphael.js绘制中国地图 》文章中,我给大家介绍了如何使用raphael.js绘制中国地图,今天我要给大家介绍在实际应用中,如何把数据载入到地图中。本文结合实例,使用PHPMysqljQuery实现中国地图各省份数据统计效果。 本例以统计某产品在各省份的活跃用户

使用raphael.js绘制中国地图》文章中,我给大家介绍了如何使用raphael.js绘制中国地图,今天我要给大家介绍在实际应用中,如何把数据载入到地图中。本文结合实例,使用PHP+Mysql+jQuery实现中国地图各省份数据统计效果。

PHP+Mysql+jQuery实现中国地图区域数据统计

本例以统计某产品在各省份的活跃用户数为背景,数据来源于mysql数据库,根据各省份的活跃用户数,分成不同等级,并以不同的背景色显示各省份的活跃程度,符合实际应用需求。

HTML

和本站上篇文章《使用raphael.js绘制中国地图》一样,首先在head部分载入raphael.js库文件和chinamapPath.js路径信息文件。

Html代码 PHP+Mysql+jQuery实现中国地图区域数据统计 PHP+Mysql+jQuery实现中国地图区域数据统计PHP+Mysql+jQuery实现中国地图区域数据统计

  1. script type="text/javascript" src="jquery.js">script>    
  2. script type="text/javascript" src="raphael.js">script>    
  3. script type="text/javascript" src="chinamapPath.js">script>  

 然后在body中需要放置地图的位置放置div#map。

Html代码 PHP+Mysql+jQuery实现中国地图区域数据统计 PHP+Mysql+jQuery实现中国地图区域数据统计PHP+Mysql+jQuery实现中国地图区域数据统计

  1. div id="map">div>   

 PHP

我们准备一张mysql表名为mapdata,这张表存储的是产品在各个省份的活跃用户数据。我们使用PHP读取mysql表中的数据,并将读取的数据以json格式输出,并将PHP文件命名为json.php。

[php] view plaincopy

  1. $host="localhost";//主机   
  2. $db_user="root";//数据库用户名   
  3. $db_pass="";//密码   
  4. $db_name="demo";//数据库名称   
  5.    
  6. $link=mysql_connect($host,$db_user,$db_pass);//连接数据库   
  7. mysql_select_db($db_name,$link);   
  8. mysql_query("SET names UTF8");   
  9.    
  10. $sql = "select active from mapdata order by id asc";//查询   
  11. $query = mysql_query($sql);   
  12.    
  13. while($row=mysql_fetch_array($query)){   
  14.     $arr[] = $row['active'];   
  15. }   
  16. echo json_encode($arr);//JSON格式   
  17. mysql_close($link);//关闭连接   

 

值得注意的是,我们要把mapdata表中各省份的排序与chinamapPath.js文件中的各省份顺序一致,这样才能保证读取的数据能和地图中的省份对应上。

jQuery

首先我们使用jquery的get()方法获取json数据。

Js代码 PHP+Mysql+jQuery实现中国地图区域数据统计 PHP+Mysql+jQuery实现中国地图区域数据统计PHP+Mysql+jQuery实现中国地图区域数据统计

  1. $(function(){    
  2.     $.get("json.php",function(json){    
  3.         ...    
  4.     });    
  5. });  

 

获取到json数据后,我们先要将json数据转换为数组,然后我们遍历整个数组,根据json数据中各省份活跃用户数的多少,我们作一个等级区分,这里我将等级分为0-5六个等级,活跃用户数越大背景颜色越深,这样在地图上显示就会一目了然的看出不同省份的数据等级程度。绘制地图的时候和本站上篇文章《使用raphael.js绘制中国地图》介绍的基本一样,不同之处在于给每个不同省份填充对应的颜色,请看整理好的代码:

Js代码 PHP+Mysql+jQuery实现中国地图区域数据统计 PHP+Mysql+jQuery实现中国地图区域数据统计PHP+Mysql+jQuery实现中国地图区域数据统计

  1. $(function(){    
  2.     $.get("json.php",function(json){//获取数据    
  3.     var data = string2Array(json);//转换数组    
  4.         
  5.     var flag;    
  6.     var arr = new Array();//定义新数组,对应等级    
  7.     for(var i=0;i
  8.         var d = data[i];    
  9.         if(d
  10.             flag = 0;    
  11.         }else if(d>=100 && d
  12.             flag = 1;    
  13.         }else if(d>=500 && d
  14.             flag = 2;    
  15.         }else if(d>=2000 && d
  16.             flag = 3;    
  17.         }else if(d>=5000 && d
  18.             flag = 4;    
  19.         }else{    
  20.             flag = 5;    
  21.         }    
  22.         arr.push(flag);    
  23.     }    
  24.     //定义颜色    
  25.     var colors = ["#d7eef8","#97d6f5","#3fbeef","#00a2e9","#0084be","#005c86"];    
  26.         
  27.     //调用绘制地图方法    
  28.     var R = Raphael("map", 600, 500);    
  29.     paintMap(R);    
  30.         
  31.     var textAttr = {    
  32.         "fill""#000",    
  33.         "font-size""12px",    
  34.         "cursor""pointer"    
  35.     };    
  36.                 
  37.     var i=0;    
  38.     for (var state in china) {    
  39.         china[state]['path'].color = Raphael.getColor(0.9);    
  40.         (function (st, state) {    
  41.                 
  42.             //获取当前图形的中心坐标    
  43.             var xx = st.getBBox().x + (st.getBBox().width / 2);    
  44.             var yy = st.getBBox().y + (st.getBBox().height / 2);    
  45.                 
  46.             //修改部分地图文字偏移坐标    
  47.             switch (china[state]['name']) {    
  48.                 case "江苏":    
  49.                     xx += 5;    
  50.                     yy -= 10;    
  51.                     break;    
  52.                 case "河北":    
  53.                     xx -= 10;    
  54.                     yy += 20;    
  55.                     break;    
  56.                 case "天津":    
  57.                     xx += 10;    
  58.                     yy += 10;    
  59.                     break;    
  60.                 case "上海":    
  61.                     xx += 10;    
  62.                     break;    
  63.                 case "广东":    
  64.                     yy -= 10;    
  65.                     break;    
  66.                 case "澳门":    
  67.                     yy += 10;    
  68.                     break;    
  69.                 case "香港":    
  70.                     xx += 20;    
  71.                     yy += 5;    
  72.                     break;    
  73.                 case "甘肃":    
  74.                     xx -= 40;    
  75.                     yy -= 30;    
  76.                     break;    
  77.                 case "陕西":    
  78.                     xx += 5;    
  79.                     yy += 10;    
  80.                     break;    
  81.                 case "内蒙古":    
  82.                     xx -= 15;    
  83.                     yy += 65;    
  84.                     break;    
  85.                 default:    
  86.             }    
  87.             //写入文字    
  88.             china[state]['text'] = R.text(xx, yy, china[state]['name']).attr(textAttr);    
  89.                 
  90.             var fillcolor = colors[arr[i]];//获取对应的颜色    
  91.                 
  92.             st.attr({fill:fillcolor});//填充背景色    
  93.                 
  94.             st[0].onmouseover = function () {    
  95.                 st.animate({fill: "#fdd", stroke: "#eee"}, 500);    
  96.                 china[state]['text'].toFront();    
  97.                 R.safari();    
  98.             };    
  99.             st[0].onmouseout = function () {    
  100.                 st.animate({fill: fillcolor, stroke: "#eee"}, 500);    
  101.                 china[state]['text'].toFront();    
  102.                 R.safari();    
  103.             };    
  104.                         
  105.          })(china[state]['path'], state);    
  106.          i++;    
  107.     }    
  108.     });    
  109. });   

 

上述代码中,使用var fillcolor = colors[arr[i]];获取对应等级的颜色值,然后通过st.attr({fill:fillcolor});将颜色填充到对应的省份区块中。此外string2Array()函数是将字符串转换为数组。

Js代码

  1. function string2Array(string) {     
  2.     eval("var result = " + decodeURI(string));     
  3.     return result;     
  4. }   

 

这样,我们可以看到一个不同省份不同背景色的中国地图,根据不同颜色可以区分省份之间的活跃用户数差异程度,达到预期目标。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utilisez ddrescue pour récupérer des données sous Linux Utilisez ddrescue pour récupérer des données sous Linux Mar 20, 2024 pm 01:37 PM

DDREASE est un outil permettant de récupérer des données à partir de périphériques de fichiers ou de blocs tels que des disques durs, des SSD, des disques RAM, des CD, des DVD et des périphériques de stockage USB. Il copie les données d'un périphérique bloc à un autre, laissant derrière lui les blocs corrompus et ne déplaçant que les bons blocs. ddreasue est un puissant outil de récupération entièrement automatisé car il ne nécessite aucune interruption pendant les opérations de récupération. De plus, grâce au fichier map ddasue, il peut être arrêté et repris à tout moment. Les autres fonctionnalités clés de DDREASE sont les suivantes : Il n'écrase pas les données récupérées mais comble les lacunes en cas de récupération itérative. Cependant, il peut être tronqué si l'outil est invité à le faire explicitement. Récupérer les données de plusieurs fichiers ou blocs en un seul

Open source! Au-delà de ZoeDepth ! DepthFM : estimation rapide et précise de la profondeur monoculaire ! Open source! Au-delà de ZoeDepth ! DepthFM : estimation rapide et précise de la profondeur monoculaire ! Apr 03, 2024 pm 12:04 PM

0. À quoi sert cet article ? Nous proposons DepthFM : un modèle d'estimation de profondeur monoculaire génératif de pointe, polyvalent et rapide. En plus des tâches traditionnelles d'estimation de la profondeur, DepthFM démontre également des capacités de pointe dans les tâches en aval telles que l'inpainting en profondeur. DepthFM est efficace et peut synthétiser des cartes de profondeur en quelques étapes d'inférence. Lisons ce travail ensemble ~ 1. Titre des informations sur l'article : DepthFM : FastMonocularDepthEstimationwithFlowMatching Auteur : MingGui, JohannesS.Fischer, UlrichPrestel, PingchuanMa, Dmytr

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Mar 24, 2024 am 11:27 AM

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Avec l’essor des réseaux sociaux, WeChat est devenu l’un des outils de communication indispensables dans la vie quotidienne des gens. Cependant, de nombreuses personnes peuvent rencontrer un problème : se connecter à plusieurs comptes WeChat en même temps sur le même téléphone mobile. Pour les utilisateurs de téléphones mobiles Huawei, il n'est pas difficile d'obtenir une double connexion WeChat. Cet article explique comment obtenir une double connexion WeChat sur les téléphones mobiles Huawei. Tout d'abord, le système EMUI fourni avec les téléphones mobiles Huawei offre une fonction très pratique : l'ouverture d'une double application. Grâce à la fonction de double ouverture de l'application, les utilisateurs peuvent simultanément

Google est ravi : les performances de JAX surpassent Pytorch et TensorFlow ! Cela pourrait devenir le choix le plus rapide pour la formation à l'inférence GPU Google est ravi : les performances de JAX surpassent Pytorch et TensorFlow ! Cela pourrait devenir le choix le plus rapide pour la formation à l'inférence GPU Apr 01, 2024 pm 07:46 PM

Les performances de JAX, promu par Google, ont dépassé celles de Pytorch et TensorFlow lors de récents tests de référence, se classant au premier rang sur 7 indicateurs. Et le test n’a pas été fait sur le TPU présentant les meilleures performances JAX. Bien que parmi les développeurs, Pytorch soit toujours plus populaire que Tensorflow. Mais à l’avenir, des modèles plus volumineux seront peut-être formés et exécutés sur la base de la plate-forme JAX. Modèles Récemment, l'équipe Keras a comparé trois backends (TensorFlow, JAX, PyTorch) avec l'implémentation native de PyTorch et Keras2 avec TensorFlow. Premièrement, ils sélectionnent un ensemble de

La vitalité de la super intelligence s'éveille ! Mais avec l'arrivée de l'IA qui se met à jour automatiquement, les mères n'ont plus à se soucier des goulots d'étranglement des données. La vitalité de la super intelligence s'éveille ! Mais avec l'arrivée de l'IA qui se met à jour automatiquement, les mères n'ont plus à se soucier des goulots d'étranglement des données. Apr 29, 2024 pm 06:55 PM

Je pleure à mort. Le monde construit à la folie de grands modèles. Les données sur Internet ne suffisent pas du tout. Le modèle de formation ressemble à « The Hunger Games », et les chercheurs en IA du monde entier se demandent comment nourrir ces personnes avides de données. Ce problème est particulièrement important dans les tâches multimodales. À une époque où rien ne pouvait être fait, une équipe de start-up du département de l'Université Renmin de Chine a utilisé son propre nouveau modèle pour devenir la première en Chine à faire de « l'auto-alimentation des données générées par le modèle » une réalité. De plus, il s’agit d’une approche à deux volets, du côté compréhension et du côté génération, les deux côtés peuvent générer de nouvelles données multimodales de haute qualité et fournir un retour de données au modèle lui-même. Qu'est-ce qu'un modèle ? Awaker 1.0, un grand modèle multimodal qui vient d'apparaître sur le Forum Zhongguancun. Qui est l'équipe ? Moteur Sophon. Fondé par Gao Yizhao, doctorant à la Hillhouse School of Artificial Intelligence de l’Université Renmin.

Vitesse Internet lente des données cellulaires sur iPhone : correctifs Vitesse Internet lente des données cellulaires sur iPhone : correctifs May 03, 2024 pm 09:01 PM

Vous êtes confronté à un décalage et à une connexion de données mobile lente sur iPhone ? En règle générale, la puissance de l'Internet cellulaire sur votre téléphone dépend de plusieurs facteurs tels que la région, le type de réseau cellulaire, le type d'itinérance, etc. Vous pouvez prendre certaines mesures pour obtenir une connexion Internet cellulaire plus rapide et plus fiable. Correctif 1 – Forcer le redémarrage de l'iPhone Parfois, le redémarrage forcé de votre appareil réinitialise simplement beaucoup de choses, y compris la connexion cellulaire. Étape 1 – Appuyez simplement une fois sur la touche d’augmentation du volume et relâchez-la. Ensuite, appuyez sur la touche de réduction du volume et relâchez-la à nouveau. Étape 2 – La partie suivante du processus consiste à maintenir le bouton sur le côté droit. Laissez l'iPhone finir de redémarrer. Activez les données cellulaires et vérifiez la vitesse du réseau. Vérifiez à nouveau Correctif 2 – Changer le mode de données Bien que la 5G offre de meilleures vitesses de réseau, elle fonctionne mieux lorsque le signal est plus faible

L'US Air Force présente son premier avion de combat IA de grande envergure ! Le ministre a personnellement effectué l'essai routier sans intervenir pendant tout le processus, et 100 000 lignes de code ont été testées 21 fois. L'US Air Force présente son premier avion de combat IA de grande envergure ! Le ministre a personnellement effectué l'essai routier sans intervenir pendant tout le processus, et 100 000 lignes de code ont été testées 21 fois. May 07, 2024 pm 05:00 PM

Récemment, le milieu militaire a été submergé par la nouvelle : les avions de combat militaires américains peuvent désormais mener des combats aériens entièrement automatiques grâce à l'IA. Oui, tout récemment, l’avion de combat IA de l’armée américaine a été rendu public pour la première fois, dévoilant ainsi son mystère. Le nom complet de ce chasseur est Variable Stability Simulator Test Aircraft (VISTA). Il a été personnellement piloté par le secrétaire de l'US Air Force pour simuler une bataille aérienne en tête-à-tête. Le 2 mai, le secrétaire de l'US Air Force, Frank Kendall, a décollé à bord d'un X-62AVISTA à la base aérienne d'Edwards. Notez que pendant le vol d'une heure, toutes les actions de vol ont été effectuées de manière autonome par l'IA ! Kendall a déclaré : "Au cours des dernières décennies, nous avons réfléchi au potentiel illimité du combat air-air autonome, mais cela a toujours semblé hors de portée." Mais maintenant,

Le premier robot capable d'accomplir de manière autonome des tâches humaines apparaît, avec cinq doigts flexibles et rapides, et de grands modèles prennent en charge l'entraînement dans l'espace virtuel Le premier robot capable d'accomplir de manière autonome des tâches humaines apparaît, avec cinq doigts flexibles et rapides, et de grands modèles prennent en charge l'entraînement dans l'espace virtuel Mar 11, 2024 pm 12:10 PM

Cette semaine, FigureAI, une entreprise de robotique investie par OpenAI, Microsoft, Bezos et Nvidia, a annoncé avoir reçu près de 700 millions de dollars de financement et prévoit de développer un robot humanoïde capable de marcher de manière autonome au cours de la prochaine année. Et l’Optimus Prime de Tesla a reçu à plusieurs reprises de bonnes nouvelles. Personne ne doute que cette année sera celle de l’explosion des robots humanoïdes. SanctuaryAI, une entreprise canadienne de robotique, a récemment lancé un nouveau robot humanoïde, Phoenix. Les responsables affirment qu’il peut accomplir de nombreuses tâches de manière autonome, à la même vitesse que les humains. Pheonix, le premier robot au monde capable d'accomplir des tâches de manière autonome à la vitesse d'un humain, peut saisir, déplacer et placer avec élégance chaque objet sur ses côtés gauche et droit. Il peut identifier des objets de manière autonome

See all articles