Advertisement
Alisator

leaflet

Sep 27th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. %angular
  2. <link rel="stylesheet" href="https://unpkg.com/leaflet@1.0.3/dist/leaflet.css" />
  3. <div id="map" style="height: 300px; width: 50%"> </div>
  4.  
  5. <input type="button" value="Click me", onclick="eval()">
  6. <script type="text/javascript">
  7.  
  8. //custom icons
  9. var selectedIcon = L.icon({
  10.     iconUrl: 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png',
  11.     iconSize: [38, 38],
  12.     iconAnchor: [22, 94],
  13.     popupAnchor: [-3, -76]
  14. });
  15.  
  16. var basicIcon = L.icon({
  17.     iconUrl: 'https://developers.google.com/maps/documentation/javascript/examples/full/images/info-i_maps.png',
  18.     iconSize: [38, 38],
  19.     iconAnchor: [22, 94],
  20.     popupAnchor: [-3, -76]
  21. });
  22.  
  23. var myGroup = null;
  24.  
  25. function initMap() {
  26.     var map =L.map('map').setView([33.415, -111.831],1);
  27.     L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
  28.         attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors',
  29.         maxZoom: 15,
  30.         minZoom: 3
  31.     }).addTo(map);
  32.     var geoMarkers = L.layerGroup().addTo(map);
  33.     //manually added markers
  34.     var lat = 31.603513;
  35.     var long = -94.655487;
  36.     var lat1 = 38.381572;
  37.     var long1 = -121.49440;
  38.     var marker = L.marker([ lat, long ], {icon: basic}).on('click', function(e){ onClick(e, '1' ); });
  39.     var marker1 = L.marker([ lat1, long1],  {icon: basic}).on('click', function(e){ onClick(e, '2' ); });
  40.    
  41. //having a group is good when we will load bunch of points from some data source   (loop through source and add it to layerGroup)
  42.     myGroup = L.layerGroup([marker, marker1]).addTo(map);
  43. }
  44.  
  45. var id_selected_arr = [];
  46. function onClick(e, id) {
  47.     //if clicked, set new icon, otherwise set previous one
  48.     var actMarker = e.target;
  49.     actMarker.setIcon(actMarker.options.icon == selectedIcon ? basicIcon : selectedIcon);
  50.  
  51. //new id
  52.     if(!id_selected_arr.includes(id))
  53.     {
  54.         console.log('id is new to me ' + id)
  55.         id_selected_arr.push(id)
  56.     }
  57. //unslected id (user clicked twice), remove id
  58.     else
  59.     {
  60.         console.log('I have already seen it before ' + id)
  61.         var value = 3
  62.  
  63.     id_selected_arr = id_selected_arr.filter(function(item) {
  64.         return item !== id;
  65.         });
  66.     }
  67.  
  68.      console.log('markerID: ' + id)
  69.  //   alert('markerID: ' + id);
  70. }
  71.  
  72. function eval() {    
  73.  //   z.angularBind("selected", id_selected_arr)
  74.  
  75. //this wont work
  76. //    myGroup.forEach(item => item.setIcon(basicIcon));
  77.  
  78. //set icons for all markers back
  79.    myGroup.eachLayer(function(marker) { marker.setIcon(basicIcon);   });
  80. }
  81.  
  82.  
  83.  
  84. if (window.L) {
  85.     initMap();
  86. } else {
  87.     console.log('Loading Leaflet library');
  88.     var sc = document.createElement('script');
  89.     sc.type = 'text/javascript';
  90.     sc.src='https://unpkg.com/leaflet@1.0.3/dist/leaflet.js';
  91.     sc.onload = initMap;
  92.     sc.onerror = function(err) { alert(err); }
  93.     document.getElementsByTagName('head')[0].appendChild(sc);
  94. }
  95. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement