search
HomeBackend DevelopmentPHP TutorialPHP implements map area data statistics-ajax loading data_PHP tutorial

PHP implements map area data statistics-ajax loading data_PHP tutorial

Jul 13, 2016 am 10:44 AM
phpforproductbyareamapaccomplishdataStatisticsofprovincestatistics

This example is based on counting the number of active users of a certain product in each province. The data comes from the mysql database. According to the number of active users in each province, it is divided into different levels, and the activity level of each province is displayed with different background colors. Meet actual application requirements.

The effect is as shown below

HTML

Similar to the previous article on this site using raphael.js to draw a map of China, first load the raphael.js library file and chimamapPath.js path information file in the head section.

The code is as follows Copy code
 代码如下 复制代码



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

Then place div#map in the body where the map needs to be placed.
 代码如下 复制代码

$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);//关闭连接


PHP

We prepare a mysql table named mapdata. This table stores the active user data of the product in each province. We use PHP to read the data in the mysql table and output the read data in json format, and name the PHP file json.php.
 代码如下 复制代码

$(function(){
    $.get("json.php",function(json){
        ...
    });
});

The code is as follows Copy code
$host="localhost";//Host $db_user="root";//Database user name $db_pass="";//Password $db_name="demo";//Database name $link=mysql_connect($host,$db_user,$db_pass);//Connect to the database mysql_select_db($db_name,$link); mysql_query("SET names UTF8"); $sql = "select active from mapdata order by id asc";//Query $query = mysql_query($sql); while($row=mysql_fetch_array($query)){ $arr[] = $row['active']; } echo json_encode($arr);//JSON format mysql_close($link);//Close the connection
It is worth noting that we need to sort the provinces in the mapdata table in the same order as the provinces in the chimamapPath.js file, so as to ensure that the read data can correspond to the provinces in the map. jQuery First we use jquery’s get() method to obtain json data.
The code is as follows Copy code
$(function(){ $.get("json.php",function(json){ ... }); });

After obtaining the json data, we first need to convert the json data into an array, and then we traverse the entire array. According to the number of active users in each province in the json data, we make a grade distinction. Here I divide the grade into 0 There are six levels -5. The greater the number of active users, the darker the background color. In this way, when displayed on the map, the data levels of different provinces can be clearly seen. When drawing the map, it is basically the same as the introduction of using raphael.js to draw the map of China in the previous article on this site. The difference is that each different province is filled with the corresponding color. Please see the compiled code:

The code is as follows Copy code
$(function(){
$.get("json.php",function(json){//Get data
var data = string2Array(json);//Convert array
​  
var flag;
var arr = new Array();//Define a new array, corresponding to the level
for(var i=0;i           var d = data[i];
If(d flag = 0;
            }else if(d>=100 && d flag = 1;
            }else if(d>=500 && d flag = 2;
            }else if(d>=2000 && d flag = 3;
}else if(d>=5000 && d flag = 4;
         }else{
flag = 5;
          }
arr.push(flag);
}
//Define color
var colors = ["#d7eef8","#97d6f5","#3fbeef","#00a2e9","#0084be","#005c86"];
​  
//Call the map drawing method
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) {
                                                                       //Get the center coordinates of the current graphic
          var xx = st.getBBox().x + (st.getBBox().width / 2);
            var yy = st.getBBox().y + (st.getBBox().height / 2);
                                                                          //Modify the offset coordinates of some map text
                switch (china[state]['name']) {
case "Jiangsu":
                          xx += 5;
                yy -= 10;
break;
case "Hebei":
                           xx -= 10;
                  yy += 20;
break;
case "Tianjin":
                         xx += 10;
                  yy += 10;
break;
case "Shanghai":
                         xx += 10;
break;
case "Guangdong":
                  yy -= 10;
break;
case "Macau":
                  yy += 10;
break;
case "Hong Kong":
                         xx += 20;
                  yy += 5;
break;
case "Gansu":
                           xx -= 40;
                  yy -= 30;
break;
case "Shaanxi":
                         xx += 5;
                  yy += 10;
break;
case "Inner Mongolia":
                          xx -= 15;
                  yy += 65;
break;
                                   default:
               }
//Write text
             china[state]['text'] = R.text(xx, yy, china[state]['name']).attr(textAttr);
                                                                                         var fillcolor = colors[arr[i]];//Get the corresponding color
                                                                                         st.attr({fill:fillcolor});//Fill background color
                                                                                         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++;
}
});
});
In the above code, use var fillcolor = colors[arr[i]]; to obtain the color value of the corresponding level, and then use st.attr({fill:fillcolor}); to fill the color into the corresponding province block. In addition, the string2Array() function converts a string into an array.

The code is as follows Copy code
 代码如下 复制代码

function string2Array(string) { 
    eval("var result = " + decodeURI(string)); 
    return result; 
}

function string2Array(string) {

eval("var result = " + decodeURI(string));
Return result;

}

In this way, we can see a map of China with different background colors in different provinces. According to different colors, we can distinguish the difference in the number of active users between provinces and achieve the expected goal.

Example download address: http://file.bKjia.c0m/upload/2013/12/chinamap-data.zip http://www.bkjia.com/PHPjc/633107.htmlwww.bkjia.com
true
http: //www.bkjia.com/PHPjc/633107.html
TechArticleThis example is based on statistics of the number of active users of a product in each province. The data comes from the mysql database. According to each The number of active users in the province is divided into different levels and displayed with different background colors...
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
What is the difference between unset() and session_destroy()?What is the difference between unset() and session_destroy()?May 04, 2025 am 12:19 AM

Thedifferencebetweenunset()andsession_destroy()isthatunset()clearsspecificsessionvariableswhilekeepingthesessionactive,whereassession_destroy()terminatestheentiresession.1)Useunset()toremovespecificsessionvariableswithoutaffectingthesession'soveralls

What is sticky sessions (session affinity) in the context of load balancing?What is sticky sessions (session affinity) in the context of load balancing?May 04, 2025 am 12:16 AM

Stickysessionsensureuserrequestsareroutedtothesameserverforsessiondataconsistency.1)SessionIdentificationassignsuserstoserversusingcookiesorURLmodifications.2)ConsistentRoutingdirectssubsequentrequeststothesameserver.3)LoadBalancingdistributesnewuser

What are the different session save handlers available in PHP?What are the different session save handlers available in PHP?May 04, 2025 am 12:14 AM

PHPoffersvarioussessionsavehandlers:1)Files:Default,simplebutmaybottleneckonhigh-trafficsites.2)Memcached:High-performance,idealforspeed-criticalapplications.3)Redis:SimilartoMemcached,withaddedpersistence.4)Databases:Offerscontrol,usefulforintegrati

What is a session in PHP, and why are they used?What is a session in PHP, and why are they used?May 04, 2025 am 12:12 AM

Session in PHP is a mechanism for saving user data on the server side to maintain state between multiple requests. Specifically, 1) the session is started by the session_start() function, and data is stored and read through the $_SESSION super global array; 2) the session data is stored in the server's temporary files by default, but can be optimized through database or memory storage; 3) the session can be used to realize user login status tracking and shopping cart management functions; 4) Pay attention to the secure transmission and performance optimization of the session to ensure the security and efficiency of the application.

Explain the lifecycle of a PHP session.Explain the lifecycle of a PHP session.May 04, 2025 am 12:04 AM

PHPsessionsstartwithsession_start(),whichgeneratesauniqueIDandcreatesaserverfile;theypersistacrossrequestsandcanbemanuallyendedwithsession_destroy().1)Sessionsbeginwhensession_start()iscalled,creatingauniqueIDandserverfile.2)Theycontinueasdataisloade

What is the difference between absolute and idle session timeouts?What is the difference between absolute and idle session timeouts?May 03, 2025 am 12:21 AM

Absolute session timeout starts at the time of session creation, while an idle session timeout starts at the time of user's no operation. Absolute session timeout is suitable for scenarios where strict control of the session life cycle is required, such as financial applications; idle session timeout is suitable for applications that want users to keep their session active for a long time, such as social media.

What steps would you take if sessions aren't working on your server?What steps would you take if sessions aren't working on your server?May 03, 2025 am 12:19 AM

The server session failure can be solved through the following steps: 1. Check the server configuration to ensure that the session is set correctly. 2. Verify client cookies, confirm that the browser supports it and send it correctly. 3. Check session storage services, such as Redis, to ensure that they are running normally. 4. Review the application code to ensure the correct session logic. Through these steps, conversation problems can be effectively diagnosed and repaired and user experience can be improved.

What is the significance of the session_start() function?What is the significance of the session_start() function?May 03, 2025 am 12:18 AM

session_start()iscrucialinPHPformanagingusersessions.1)Itinitiatesanewsessionifnoneexists,2)resumesanexistingsession,and3)setsasessioncookieforcontinuityacrossrequests,enablingapplicationslikeuserauthenticationandpersonalizedcontent.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)