Récupération des données depuis une base de donnée

Extraire des données OSM, créer sa carte, uMap, utiliser sur un GPS ou un smartphone...
luckyky
Messages : 1
Inscription : jeu. janv. 24, 2019 6:22 pm

Récupération des données depuis une base de donnée

Message par luckyky » jeu. janv. 24, 2019 6:40 pm

Bonjour,

Je suis étudiant, et dans le cadre de projet je dois développer une carte avec 2 types de marqueurs pour différencier 2 "cas" (positif et négatif)

Après de longue heures de recherche j'ai réussi à obtenir ma carte avec une conversion de l'adresse de la base de donnée en coordonnées gps (logi, lagi).

Il me reste la dernière étape, réussir à afficher tous mes marqueurs sur la carte. J'arrive à en afficher un (la première ligne du résultat de ma requête). Il faudrait donc faire une boucle, j'avais pensé à stocker le résultat de ma requête dans un tableau, puis l'extraire au moment de var positif, ou var negatif comme je vais avoir après une autre requête mais ça reste le même principe. Donc si quelqu'un peut me donner des idées, j'ai passé pas mal de temps en vain, je n'ai jamais réussi.

Merci d'avance,

Code : Tout sélectionner

<?php

 include ('./../script/connexion.php');
			$requete = "select adresse_cheptel, code_postal, commune_cheptel, nom_eleveur, count(*) 
            from qualyse1_cheptel c, qualyse1_prelevement p 
            where c.id_cheptel=p.id_cheptel 
            and resultat='neg' 
            group by adresse_cheptel, code_postal, commune_cheptel, nom_eleveur
            LIMIT 1
            ";
echo $requete;
	        $result = $connexion -> query($requete);
	        $res = $result -> fetch();

echo $res['adresse_cheptel'];


echo $res['code_postal'];

echo $res['commune_cheptel'];

$nom=$res['nom_eleveur'];
echo $nom;

$data = array(
  'postalcode' => $res['code_postal'],
  'city'       => $res['commune_cheptel'],
  'country'    => 'france',
  'format'     => 'json',
);
$url = 'https://nominatim.openstreetmap.org/?' . http_build_query($data);
echo $url;


$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mettre ici un user-agent adéquat');
$geopos = curl_exec($ch);
curl_close($ch);

$resp = json_decode($geopos, true);


// get the important data
echo $lati = $resp[0]['lat'];

echo $longi = $resp[0]['lon'];




?>

<!DOCTYPE html>
<html>
	<head>
        <meta charset="utf-8">
        <!-- Nous chargeons les fichiers CDN de Leaflet. Le CSS AVANT le JS -->
        <link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css" integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ=="
            crossorigin="" />
        <script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet.js" integrity="sha512-/Nsx9X4HebavoBvEBuyp3I7od5tA0UzAxs+j83KgC8PU0kgB4XiK4Lfe4y4cgBtaRJQEIFCW+oC506aPT2L1zw=="
            crossorigin=""></script>
		<script type="text/javascript">
		
        // Nous initialisons une liste de marqueurs, les cheptels positifs
var positif = {
	<?php echo '"'.$nom.'"' ?> : { "lat": <?php echo $lati ?>, "lon": <?php echo $longi ?> },
	"Brest": { "lat": 48.383, "lon": -4.500 },
	"Quimper": { "lat": 48.000, "lon": -4.100 },
	"Bayonne": { "lat": 43.500, "lon": -1.467 }
};

// Nous initialisons une liste de marqueurs, les cheptels négatifs
var positif = {
var negatif = {
	<?php echo '"'.$nom.'"' ?> : { "lat": <?php echo $lati ?>, "lon": <?php echo $longi ?> },
	"Brest": { "lat": 49.383, "lon": -4.500 },
	"Quimper": { "lat": 46.000, "lon": -4.100 },
	"Bayonne": { "lat": 44.500, "lon": -1.467 }
};
			// On initialise la latitude et la longitude de Niort (centre de la carte)
			var lat = 46.323780;
			var lon = -0.457087;
			var macarte = null;
			// Fonction d'initialisation de la carte
			function initMap() {
				// Créer l'objet "macarte" et l'insèrer dans l'élément HTML qui a l'ID "map"
                macarte = L.map('map').setView([lat, lon], 11);
                // Leaflet ne récupère pas les cartes (tiles) sur un serveur par défaut. Nous devons lui préciser où nous souhaitons les récupérer. Ici, openstreetmap.fr
                L.tileLayer('https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', {
                    // Il est toujours bien de laisser le lien vers la source des données
                    attribution: 'données © <a href="//osm.org/copyright">OpenStreetMap</a>/ODbL - rendu <a href="//openstreetmap.fr">OSM France</a>',
                    minZoom: 1,
                    maxZoom: 20
                }).addTo(macarte);
                
// Nous parcourons la liste des cheptels positifs
	for (ville in positif) {
    // Nous définissons l'icône à utiliser pour le marqueur, sa taille affichée (iconSize), sa position (iconAnchor) et le décalage de son ancrage (popupAnchor)
		var myIconpos = L.icon({
			iconUrl: "./marq.png",
			iconSize: [50, 50],
			iconAnchor: [25, 50],
			popupAnchor: [-3, -76],
		});
		var marker = L.marker([positif[ville].lat, positif[ville].lon], { icon: myIconpos }).addTo(macarte);
        // Nous ajoutons la popup. A noter que son contenu (ici la variable ville) peut être du HTML
	marker.bindPopup(ville);
	}    
    
    
// Nous parcourons la liste des cheptels négatifs
    for (ville in negatif) {
    // Nous définissons l'icône à utiliser pour le marqueur, sa taille affichée (iconSize), sa position (iconAnchor) et le décalage de son ancrage (popupAnchor)
		var myIconneg = L.icon({
			iconUrl: "./marqeur.png",
			iconSize: [50, 50],
			iconAnchor: [25, 50],
			popupAnchor: [-3, -76],
		});
		var marker = L.marker([negatif[ville].lat, negatif[ville].lon], { icon: myIconneg }).addTo(macarte);
        // Nous ajoutons la popup. A noter que son contenu (ici la variable ville) peut être du HTML
	marker.bindPopup(ville);
	}      
            }
			window.onload = function(){
				// Fonction d'initialisation qui s'exécute lorsque le DOM est chargé
				initMap(); 
			};
		</script>
		<style type="text/css">
			#map{ /* la carte DOIT avoir une hauteur sinon elle n'apparaît pas */
				height:400px;
			}
		</style>
		<title>Carte</title>
	</head>
	<body>
		<div id="map">
			<!-- Ici s'affichera la carte -->
		</div>
	</body>
</html>

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités