{"id":498,"date":"2022-07-12T11:58:10","date_gmt":"2022-07-12T09:58:10","guid":{"rendered":"https:\/\/www.eldin.net\/wordpress\/?page_id=498"},"modified":"2022-07-12T13:51:37","modified_gmt":"2022-07-12T11:51:37","slug":"expoactes-fonctions-pour-afficher-une-carte-openstreetmap","status":"publish","type":"page","link":"https:\/\/www.eldin.net\/wordpress\/index.php\/expoactes-fonctions-pour-afficher-une-carte-openstreetmap\/","title":{"rendered":"ExpoActes : Fonctions pour afficher une carte OpenStreetMap"},"content":{"rendered":"\n<p>Quelques fonctions qui facilitent la programmation pour afficher une carte OSM<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fichier osm_util.php\n&lt;?php\n\n\/*\n\n  Fonctions pour  OSM\n  \n*\/  \n\n\n\/* Initialisation du Javascript\n\n    parametres \n    latitude du centre\n    longitude du centre\n    la valeur du zoom initial\n\n*\/\n\nfunction OSM_init_carte($lat,$lon,$geo_zoom) {\n\n     \/\/ charge les js et css leaflet \n    echo '&lt;link rel=\"stylesheet\" href=\"\/leaflet\/leaflet.css\" \/>';\n    echo '&lt;link rel=\"stylesheet\" href=\"\/leaflet\/leaflet.fullscreen.css\" \/>';\n    echo '&lt;script src=\"\/leaflet\/leaflet.js\" >&lt;\/script>';\n    echo '&lt;script src=\"\/leaflet\/Leaflet.fullscreen.min.js\">&lt;\/script>';\n\n\n    \/\/ generation de la carte OSM\n    echo '&lt;script type=\"text\/javascript\">';\n    echo '  var lat = '.$lat.';';\n    echo '  var lon = '.$lon.';';\n    echo '  var macarte = null;';\n    \/\/ cree la carte \n    echo '  function initMap() {';\n    echo '          var iconBase = \"\/actes\/img\/pin_eye.png\";';\n    echo \"          macarte = L.map('map').setView([lat, lon], \".$geo_zoom.\");\";\n    echo '          L.tileLayer(\"https:\/\/{s}.tile.openstreetmap.fr\/osmfr\/{z}\/{x}\/{y}.png\", {';\n    echo '                  attribution: \\'donn\u00e9es \u00a9 &lt;a href=\"\/\/osm.org\/copyright\">OpenStreetMap&lt;\/a>\/ODbL - rendu &lt;a href=\"\/\/openstreetmap.fr\">OSM France&lt;\/a>\\',';\n    echo '                  minZoom: 1,';\n    echo '                  maxZoom: 20';\n    echo '          }).addTo(macarte);';\n    \/\/ le marker de base\n    echo '          var myIcon = L.icon({';\n    echo '                  iconUrl: iconBase ,';\n    echo '                  iconSize: [21, 34],';\n    echo '                  iconAnchor: [0, 0],';\n    echo '                  popupAnchor: [0, 0],';\n    echo '          });';\n  \n\n}  \n\n  \n\/\/ pour le passage en plein \u00e9cran\nfunction OSM_plein_ecran(){\n    echo '          macarte.addControl(new L.Control.Fullscreen({';\n    echo '               title: {';\n    echo \"             'false': 'Passer en plein \u00e9cran',\";\n    echo \"             'true': 'Sortir du plein \u00e9cran'\";\n    echo '                      }';\n    echo '                  }));';\n    echo '  }';\n\n}\n\n\/\/ on charge la carte\nfunction OSM_charge_carte(){\n    echo 'window.onload = function(){';\n    echo '          initMap(); ';\n    echo '};';\n    echo '&lt;\/script>';\n}  \n\n\n\/\/--- affiche la Carte\n\/\/ parametre la hauteur de la carte en pixels  \nfunction OSM_affiche_carte($height){\n    echo '&lt;div id=\"map\">&lt;\/div>';\n    echo '&lt;style type=\"text\/css\">';\n    echo '  #map{ ';\n    echo '          height:'.$height.'px;';\n    echo '  }';\n    echo '&lt;\/style>';\n\n}\n\n\n\/\/ message d'attente\n\/* parametres\n\n    $actif      1   affiche le message\n                0   supprime le message\n\n    $msg        message a afficher\n*\/\n\nfunction OSM_attente($actif,$msg=\"\"){\n    if ($actif) {\n       echo \"&lt;div id='message' style='display:none;text-align: center;'>\".$msg.\"&lt;\/div>\";\n       echo \"&lt;script>\";\n       echo \"document.getElementById('message').style.display = 'block';\";\n       echo \"&lt;\/script>\";\n       ob_flush();\n       flush();\n       ob_flush();\n       flush(); \n\n   }else{\n       \/\/ supprime msg d'attente \n        echo \"&lt;script>\";\n        echo \"document.getElementById('message').style.display = 'none';\";\n        echo \"&lt;\/script>\"; \n   } \n\n}  \n\n\nfunction OSM_centre_carte($BdD) {\n     \/\/ recuperation du centre de la carte\n     $sqlgoc=\"select valeur from act_params where param='GEO_CENTRE_CARTE'\";\n     $resgoc=mysqli_query($BdD,$sqlgoc);\n     $rowgoc=mysqli_fetch_array($resgoc);\n     $georeq = \"select LON,LAT from act_geoloc where COMMUNE = '\".$rowgoc['valeur'].\"' and STATUT in ('A','M')\";\n     $resgeo =  mysqli_query($BdD,$georeq);\n     if ($geo = mysqli_fetch_array($resgeo)){\n        $lat=$geo['LAT'];\n        $lon=$geo['LON'];\n     }else{\n        $lat=0;\n        $lon=0;\n     }\n     $coord=array($lat,$lon);\n     return $coord;\n}\n  \n  \nfunction OSM_zoom_initial($BdD){\n      \/\/ recup du zoom initial\n    $sqlzi=\"select valeur from act_params where param='GEO_ZOOM_INITIAL' \";\n    $reszi=mysqli_query($BdD,$sqlzi);\n    $rowzi=mysqli_fetch_array($reszi);\n    return $rowzi['valeur'];\n}    \n  \n  \n\n\n\n?>\n\n\n<\/code><\/pre>\n\n\n\n<p><strong>Squelette d&rsquo;une page affichant une carte OSM<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n\/\/  les inclusions necessaire\nrequire('.....');\nrequire(\"osm_util.php\");\n\nRecup\u00e9ration des parametres _GET ou _POST\n\nOuverture de la base de donn\u00e9es -> pointeur $BdD\n\nTitre de la Page\n\n\/\/ recuperation du centre de la carte\n$coord=OSM_centre_carte($BdD);\n\n\/\/ affichage message d'attente\nOSM_attente(1,\"G\u00e9n\u00e9ration de la carte en cours. Patientez...\");\n\n\/\/ init de la carte\nOSM_init_carte($coord[0],$coord[1],OSM_zoom_initial($BdD));\n\n!! Attention ne plus rien afficher a l'ecran a partir d'ici sinon plantage du javascript\n\nrecherche dans ExpoACtes des donn\u00e9es a afficher\non met dans la variable $texte_html les donn\u00e9es a afficher dans le marqueur.\n$rowgeo est une array r\u00e9sultat d'une requete sur la table act_geoloc\n\n\/\/ affiche le marker de la commune avec ces infos\n             echo 'var marker = L.marker(['.$rowgeo['LAT'].','.$rowgeo['LON'].'],{ icon: myIcon }).addTo(macarte).bindPopup(\"'.$texte_html.'\");';\n\nOSM_plein_ecran();\nOSM_charge_carte();\nOSM_attente(0);\nOSM_affiche_carte(800);\n\nFermeture Base de donn\u00e9es\n\n?>\n\n\n<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quelques fonctions qui facilitent la programmation pour afficher une carte OSM Squelette d&rsquo;une page affichant une carte OSM<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-498","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.eldin.net\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/498"}],"collection":[{"href":"https:\/\/www.eldin.net\/wordpress\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.eldin.net\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.eldin.net\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.eldin.net\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=498"}],"version-history":[{"count":10,"href":"https:\/\/www.eldin.net\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/498\/revisions"}],"predecessor-version":[{"id":513,"href":"https:\/\/www.eldin.net\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/498\/revisions\/513"}],"wp:attachment":[{"href":"https:\/\/www.eldin.net\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}