javascript - How can I add a function as an action on a Leaflet layer? -


i have leaflet map , functions parse data json.

when click on "parcuri" button layers button, want display datas using addscoala1() function. how can this?

i'm noob in programming in leaflet. thanks! jsfiddle:

https://jsfiddle.net/324h2d9q/82/

    $(document).ready(function() {           var osmurl = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',             osmattrib = '&copy; <a href="http://openstreetmap.org/copyright">openstreetmap</a> contributors',             osm = l.tilelayer(osmurl),             map = new l.map('map', { center: new l.latlng(44.9323281,26.0306833), zoom: 13 }),             drawnitems = l.featuregroup().addto(map);     l.control.layers({         'scoli': osm.addto(map),         'muzee': osm.addto(map),         'parcuri': osm.addto(map)     },).addto(map);   var scoala = json.parse( '<?php echo json_encode($scoala) ?>' );   scoala1= json.stringify(scoala);   var muzeu = json.parse( '<?php echo json_encode($muzeu) ?>' );   muzeu1= json.stringify(muzeu);   var zona = json.parse( '<?php echo json_encode($zona) ?>' );   zona1= json.stringify(zona);     function addscoala1() {    for(var i=0; i<scoala.length; i++) {     var greenicon = new l.icon({   iconurl: 'https://cdn.rawgit.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-green.png',   shadowurl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png',   iconsize: [25, 41],   iconanchor: [12, 41],   popupanchor: [1, -34],   shadowsize: [41, 41] });     var marker = l.marker( [scoala[i]['latitudine'], scoala[i]['longitudine']], {icon: greenicon}).addto(map);     marker.bindpopup( "<b>" + scoala[i]['scoala']+"</b><br>detalii:" + scoala[i]['detalii'] + "<br />telefon: " + scoala[i]['telefon']);    }   }    function stringtogeopoints( geo ) {    var linespin = geo.split(",");     var lineslat = new array();    var lineslng = new array();     for(i=0; < linespin.length; i++) {     if(i % 2) {      lineslat.push(linespin[i]);     }else{      lineslng.push(linespin[i]);     }    }     var latlngline = new array();     for(i=0; i<lineslng.length;i++) {     latlngline.push( l.latlng( lineslat[i], lineslng[i]));    }     return latlngline;   }    function addzona1() {    for(var i=0; < zona.length; i++) {        //console.log(zona[i]['geolocatii']);     var polygon = l.polygon( stringtogeopoints(zona[i]['geolocatii']), { color: 'red'}).addto(map);     polygon.bindpopup( "<b>" + zona[i]['nume']);       }   }  function addmuzeu1() {    for(var i=0; i<muzeu.length; i++) {     var marker = l.marker( [muzeu[i]['latitudine'], muzeu[i]['longitudine']]).addto(map);     marker.bindpopup( "<b>" + muzeu[i]['muzeu']+"</b><br>detalii:" + muzeu[i]['detalii'] + "<br />telefon: " + muzeu[i]['telefon']);    }   }         $("#login").bootstrapvalidator({             framework: "bootstrap",             icon: {                 valid: "glyphicon glyphicon-ok",                 invalid: "glyphicon glyphicon-remove",                 validating: "glyphicon glyphicon-refresh"             },             fields: {                 "email": {                     validators: {                         notempty: {                             message: "required field"                         }                     }                 },                 "user_password": {                     validators: {                         notempty: {                             message: "required field"                         }                     }                 }             }         });          $("#am-uitat-parola").bootstrapvalidator({             framework: "bootstrap",             icon: {                 valid: "glyphicon glyphicon-ok",                 invalid: "glyphicon glyphicon-remove",                 validating: "glyphicon glyphicon-refresh"             },             fields: {                 "user_recover_email": {                     validators: {                         notempty: {                             message: "required field"                         },                         emailaddress: {                             message: "e-mail address invalid"                         }                     }                 }             }         });          $("#link-forgot").click(function(){             $("#am-uitat-parola").toggle();         });       });  </script> 

use layer groups , layers control instead of method.

http://leafletjs.com/examples/layers-control/

something should work :

// create layer group can add markers var layergroup = new l.layergroup();  for(var i=0; i<scoala.length; i++) {     var greenicon = new l.icon({         iconurl: 'https://cdn.rawgit.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-green.png',         shadowurl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png',         iconsize: [25, 41],         iconanchor: [12, 41],         popupanchor: [1, -34],         shadowsize: [41, 41]     });     // create marker , bind popup , add layergroup     var marker = l.marker( [scoala[i]['latitudine'], scoala[i]['longitudine']], {         icon: greenicon     }).bindpopup( "<b>" + scoala[i]['scoala']+"</b><br>detalii:" + scoala[i]['detalii'] + "<br />telefon: " + scoala[i]['telefon']).addto(layergroup); }  // it's function add control map l.control.layers(layergroup).addto(map); 

Comments

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -