Advertisement
rodolpheg

Untitled

Apr 7th, 2020
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.91 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta name="viewport" content="width=device-width, initial-scale=1">
  5. <title>Ma page</title>
  6. <meta charset="UTF-8">
  7. <link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" />
  8. <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"></script>
  9.  
  10. <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
  11. <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha256-pasqAKBDmFT4eHoN2ndd6lN370kFiGUFyTiUHWhU7k8=" crossorigin="anonymous"></script>
  12. <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
  13.  
  14. <script src="plugins/leaflet.ajax.min.js"></script>
  15.  
  16. <style>
  17. html, body {height: 100%; margin: 0;}
  18. #carte { width: 100%; height: 100%; }
  19. .navbar-nav > li{
  20. padding-left:5px;
  21. padding-right:5px;
  22. padding-top:2px;
  23. padding-bottom:2px;
  24. }
  25. .info {
  26. padding: 6px 8px;
  27. font: 14px/16px Arial, Helvetica, sans-serif;
  28. background: rgba(255,255,255,0.8);
  29. box-shadow: 0 0 15px rgba(0,0,0,0.2);
  30. border-radius: 5px;
  31. } .info
  32. .legend {
  33. text-align: left;
  34. line-height: 18px;
  35. color: #555;
  36. }
  37. .legend i {
  38. width: 18px;
  39. height: 18px;
  40. float: left;
  41. margin-right:
  42. 8px;
  43. opacity: 0.95;
  44. }
  45. </style>
  46. </head>
  47. <body>
  48. <nav class="navbar navbar-expand-lg navbar-light bg-light fixed-top">
  49. <a class="navbar-brand" href="#">
  50. <img src="logo.png" width="30" height="30" alt="">
  51. </a>
  52. <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
  53. <span class="navbar-toggler-icon"></span>
  54. </button>
  55.  
  56. <div class="collapse navbar-collapse" id="navbarSupportedContent">
  57. <ul class="navbar-nav mr-auto">
  58.  
  59. <li class="nav-item">
  60. <select class="custom-select">
  61. <option value="0">Clair</option>
  62. <option value="3">Sombre</option>
  63. <option value="4">Topographie</option>
  64. <option selected value="1">Plan du réseau routier</option>
  65. <option value="2">Satellite</option>
  66. </select>
  67. </li>
  68.  
  69. <li class="nav-item">
  70. <select class="custom-select">
  71. <option selected>Sélectionnez des données à afficher</option>
  72. <option value="Montreal_AD_v0743.geojson">Montréal</option>
  73. <option value="Canada_CSD_v0743.geojson">Canada</option>
  74. </select>
  75. </li>
  76.  
  77. </ul>
  78. </div>
  79. </nav>
  80. <div class="container-fluid" id='carte'></div>
  81.  
  82. <script>
  83. var poly;
  84.  
  85. // Initialisation d'une carte avec plusieurs fonds de carte
  86. mapboxUrl = 'https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoiZ29ucm8iLCJhIjoiY2szZzdhYzVwMDMxMjNkbjZodzA2ZG8wOSJ9.w_VkhpdmD-1pmMYcabUQwg';
  87. mapboxAttribution = 'Fond de carte &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' + '<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' + 'via © <a href="https://www.mapbox.com/">Mapbox</a>'
  88.  
  89. var light = L.tileLayer(mapboxUrl, {id: 'mapbox/light-v10', attribution: mapboxAttribution}),
  90. streets = L.tileLayer(mapboxUrl, {id: 'mapbox/streets-v11', attribution: mapboxAttribution}),
  91. dark = L.tileLayer(mapboxUrl, {id: 'mapbox/dark-v10', attribution: mapboxAttribution}),
  92. outdoor = L.tileLayer(mapboxUrl, {id: 'mapbox/outdoors-v11', attribution: mapboxAttribution}),
  93. sat = L.tileLayer(mapboxUrl, {id: 'mapbox/satellite-v9', attribution: mapboxAttribution});
  94.  
  95. var map = L.map('carte', {
  96. center: [45.52,-73.63],
  97. zoom: 5,
  98. layers: streets,
  99. zoomControl: false
  100. });
  101.  
  102. couches = [light,streets,sat,dark,outdoor]
  103. let base = document.querySelectorAll('select')[0];
  104. if (base) base.addEventListener('change', function(event) {
  105. map.removeLayer(light)
  106. map.removeLayer(dark)
  107. map.removeLayer(streets)
  108. map.removeLayer(outdoor)
  109. map.removeLayer(sat)
  110. map.addLayer(couches[event.target.value]);
  111. });
  112.  
  113. // sélection des données GeoJSON
  114. let data = document.querySelectorAll('select')[1];
  115. if (data) data.addEventListener('change', function(event) {
  116.  
  117. if (map.hasLayer(poly) == true) {
  118. map.removeLayer(poly);
  119. }
  120.  
  121. poly = new L.GeoJSON.AJAX('data/' + event.target.value);
  122. poly.addTo(map);
  123.  
  124. poly.on('data:loaded', function() {
  125. map.fitBounds(poly.getBounds());
  126. })
  127.  
  128. map.attributionControl.addAttribution('Données &copy; <a href="http://statisticscanada.ca/">Statistiques Canada</a>');
  129.  
  130. });
  131.  
  132. </script>
  133. </body>
  134. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement