Carte de l'europe en fonction des visiteurs

Description

Couplée avec un petit script de géolocalisation (IP-2-Country), cette source colore les pays européens en fonction du nombre de visites qu'ils vous fournissent.
C'est à la base une reprise de l'idée de la source de yoman64 ("GÉOLOCALISATION DE VOS VISITEURS"); le problème est que pour de grand pays, c'est dommage d'afficher seulement un rond au milieu du pays alors pourquoi ne pas colorer tout le pays?
La réponse avec du SVG;
==> quelques soucis de compatibilité sous IE alors passez à FFox!

Source / Exemple :


<?php
function reverseColor($color)
	{
		return abs($color-255);
	}
function rgb2html($r, $g=-1, $b=-1) //Merci à l'auteur de cette fonction
	{
	    if (is_array($r) && sizeof($r) == 3)
		list($r, $g, $b) = $r;
		
	    $r = intval($r); $g = intval($g);
	    $b = intval($b);
		
	    $r = dechex($r<0?0:($r>255?255:$r));
	    $g = dechex($g<0?0:($g>255?255:$g));
	    $b = dechex($b<0?0:($b>255?255:$b));
		
	    $color = (strlen($r) < 2?'0':'').$r;
	    $color .= (strlen($g) < 2?'0':'').$g;
	    $color .= (strlen($b) < 2?'0':'').$b;
	    return '#'.$color;
	}
header("Content-type: image/svg+xml"); //On informe le navigateur que ce qui suit va être du SVG (XML)
echo '<?xml version="1.0" encoding="UTF-8" standalone="no"?>';//Déclaration du XML
echo "\n".'<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="400.87827" height="419.87268">';//Déclaration du SVG
echo "\n".'<defs id="defs4186" />';
echo "\n".'<g transform="translate(-684.4075,664.3521)" id="layer1">';
echo "\n".'<path d=""  style="fill:black" id="path6995" />';
$rapportRelatif=100;//Valeur de référence; modifiable;
$query=mysql_query("SELECT * FROM `stats_europe_countries`"); //requête MySQL
while($row=mysql_fetch_array($query))	
	{
		//CODE DE SELECTION DU NBRE DE VISITEURS DANS VOTRE BASE DE DONNEE SELON VOTRE STRUCTURE:
		$query2=mysql_query("SELECT COUNT(*) as nbr FROM `stats` WHERE `country_code`='".$row["code_pays"]."'");
		$count=mysql_fetch_array($query2);
		$couleur=$count["nbr"]/$rapportRelatif*255; //Au lieu de chercher un pourcentage, cherchons sur une base de 255;
		$couleur = reverseColor($couleur);//Pour éviter d'avoir  du noir qui tend vers le blanc: on veut du gris clair qui tend vers le noir.
		//Conversion de la couleur en HEX
		$hex=rgb2html($couleur-20,$couleur-20,$couleur);//On diminue un peu le Rouge et le Vert histoir de foncer un peu les pays dont le nbre de visites est nul; On ne diminue pas le Bleu comme ca on a une légère teinte bleue.
		echo '<path d="'.$row["coord"].'" style="fill:'.$hex.';fill-opacity:1" id="layer'.$row["id"].'" />'."\n"; //On affiche les coordonnées et la couleur du polygone

	}
echo '  </g>';
echo '</svg>';
?>

Conclusion :


Cette source est certainement moins intéressante pour elle-même que pour sa table MySQL (cf ZIP)!
De nombreuses améliorations sont possibles;
-coloration inspirée de la vision thermique: du vert froid au rouge chaud
-carte mondiale?!?

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.