1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
<?php
header("content-type: application/xml");
include('config.php');
/// Partie en XML qui contient toutes les infos pour les marqueurs (longitude, latitude)///
echo'<?xml version="1.0" encoding="UTF-8"?>';
echo "\n<markers> \n";
$sql2 = "select Y(coord_scene),X(coord_scene),id_scene,trace_scene FROM scene sc LIMIT 20";
$resultats2 = mysql_query($sql2);
while ($ligne2=mysql_fetch_array($resultats2)) {
echo '
<marker lat=" '. $ligne2['Y(coord_scene)'] .' "
long=" '. $ligne2['X(coord_scene)'] .' "
nom=" '. $ligne2['id_scene'] .' "
url=" '. $ligne2['trace_scene'] .' " />';
}
echo "\n</markers>\n";
// Les différentes variables pour connaitre la taille de la carte////
$extendPercent = 50 / 100;
$cluster_number = 5;
$pas = 10;
$addExtendY = ($_GET['maxY'] - $_GET['minY']) * $extendPercent;
$addExtendX = ($_GET['maxX'] - $_GET['minX']) * $extendPercent;
($_GET['maxY'] > 0 ) ? ((($_GET['maxY'] + $addExtendY) > 90) ? $maxY = 90 : $maxY = $_GET['maxY'] + $addExtendY ) : $maxY = $_GET['maxY'] - $addExtendY ;
($_GET['maxX'] > 0 ) ? ((($_GET['maxX'] + $addExtendX) > 180) ? $maxX = 180 : $maxX = $_GET['maxX'] + $addExtendX ) : $maxX = $_GET['maxX'] - $addExtendX ;
($_GET['minY'] > 0 ) ? $minY = $_GET['minY'] - $addExtendY : ((($_GET['minY'] - $addExtendY) < -90) ? $minY = -90 : $minY = $_GET['minY'] - $addExtendY) ;
($_GET['minX'] > 0 ) ? $minX = $_GET['minX'] - $addExtendX : ((($_GET['minX'] - $addExtendX) < -180) ? $minX = -180 : $minX = $_GET['minX'] - $addExtendX) ;
/// Calcul de la hauteur est de la largeur de la carte///
$largeur = $maxX - $minX;
$hauteur = $maxY - $minY;
$pas_largeur = $largeur / $pas;
$pas_hauteur = $hauteur / $pas;
for ($i=0;$i<$pas;$i++){
for ($j=0;$j<$pas;$j++){
$temp1 = $minY + $pas_hauteur * $i;
$temp2 = $minX + $pas_largeur * $j;
$temp3 = $minY + $pas_hauteur * ($i + 1);
$temp4 = $minX + $pas_largeur * ($j + 1);
$coord1 = strval($temp2)." ".strval($temp1);
$coord2 = strval($temp4)." ".strval($temp1);
$coord3 = strval($temp4)." ".strval($temp3);
$coord4 = strval($temp2)." ".strval($temp3);
/// La requete pour sélectionner les coordonnées qui sont contenu dans la partie visible de la carte.
$sql = "SELECT X(coord_scene), Y(coord_scene)FROM scene sc WHERE ";
$sql .= "Contains (PolygonFromText('POLYGON(($coord1,$coord2,$coord3,$coord4,$coord1'))))";
$res = mysql_query($sql)or exit(mysql_error());
$nb_object = mysql_num_rows($res);
// Les requêtes conditionnels qui permettent de creer les clusters ou les marqueurs selon le cas. ///
if ($nb_object <> 0){
if ($nb_object > $cluster_number){
$polygone = "POLYGON((";
$a = 0;
while ($result = mysql_fetch_array($res)){
if ($a == 0){
$firstPoint = $result['x']." ".$result['y'];
}
$polygone .= $result['x']." ".$result['y'].",";
$a++;
}
$polygone .= $firstPoint;
$polygone .= "))";
$sql2 = "select x(Centroid(GeometryFromText('".$polygone."',4326))) as x, y(Centroid(GeometryFromText('".$polygone."',4326))) as y";
$res2 = mysql_query($sql2);
$result2 = mysql_fetch_array($res2);
$lat = $result2['y'];
$lng = $result2['x'];
}
}
}
}
}
?> |
Partager