nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

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