Leaflet.Map.js (1287B)
1 import L from 'leaflet'; 2 import './leaflet.hashState'; 3 4 L.Map.include(L.Mixin.HashState); 5 6 L.Map.include({ 7 stateChangeEvents: ['moveend'], 8 9 serializeState: function() { 10 var center = this.getCenter(); 11 var zoom = this.getZoom(); 12 var precision = 5; 13 var state = [ 14 zoom.toString(), 15 center.lat.toFixed(precision), 16 center.lng.toFixed(precision) 17 ]; 18 return state; 19 }, 20 21 validateState: function(values) { 22 if (!values || values.length !== 3) { 23 return {valid: false}; 24 } 25 let zoom = parseInt(values[0], 10), 26 lat = parseFloat(values[1]), 27 lng = parseFloat(values[2]); 28 if (isNaN(zoom) || isNaN(lat) || isNaN(lng) || zoom < 0 || zoom > 32 || lat < -90 || lat > 90) { 29 return {valid: false}; 30 } 31 return {lat, lng, zoom, valid: true}; 32 }, 33 34 unserializeState: function(values) { 35 let {lat, lng, zoom, valid} = this.validateState(values); 36 if (valid) { 37 this.setView([lat, lng], zoom); 38 return true; 39 } 40 return false; 41 } 42 } 43 ); 44