javascript - 如何渲染带有保存在传单中的 Zoomend 函数上的边界的 map

标签 javascript reactjs leaflet

我必须保存 map 的缩放级别。在 map 的缩放结束函数中,我将其保存在本地存储中,并且在再次渲染组件时,我尝试检查是否保留了任何缩放值。基于它,我尝试渲染 map 。一切都工作正常,但我还需要保存位置,所以我尝试获取边界并执行与缩放级别相同的操作。它不起作用,如果有任何值,我尝试应用 fitBounds在本地存储中。请帮我解决这个问题。

    initializeMap = () => {
      const { user } = this.props;
      const zoomLevel = localStorage.getItem('itemsZoom');
      let boundCoordinates = {};
      boundCoordinates = JSON.parse(localStorage.getItem('itemsBounds'));
      if (zoomLevel !== null && Object.keys(boundCoordinates).length > 0) {
        this.map.fitbounds(boundCoordinates);
      }
      this.map.fitbounds(boundCoordinates);

     this.map = L.map('map', {
      center: [38.778, -73.554]
      zoom: zoomLevel !== null ? zoomLevel : 18
    });
     L.gridLayer.googleMutant({ type: 'satellite', maxZoom: 20 }).addTo(this.map);

     this.map.on(L.Draw.Event.CREATED, (e) => {
      this.onMarkerCreated(e);
    });

    this.map.on('draw:editmove', (e) => {
      this.onMarkerEdited(e);
    });


    this.map.on('zoomend', (e) => {
      const zoom = this.map.getZoom();
      localStorage.setItem('itemsZoom', zoom);
      const bounds = this.map.getBounds();
      localStorage.setItem('itemsBounds', JSON.stringify(bounds));
    });
   }

最佳答案

使用它来保存边界localStorage.setItem('itemsBounds',this.map.getBounds().toBBoxString()))然后当你读出调用时:

[west, south, east, north] = localStorage.getItem('itemsBounds').split(',').map(parseFloat)
var bounds = new L.LatLngBounds(new L.LatLng(south, west), new L.LatLng(north, east))
this.map.fitBounds(bounds);

PS:fitBounds 与“B”

关于javascript - 如何渲染带有保存在传单中的 Zoomend 函数上的边界的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60526719/

相关文章:

javascript - 如何打开选项卡(tabpane)并滚动到它?

ios - ReactJs PWA 未在 iOS 上更新

javascript - Leaflet.Draw - geoJSON 到 Kml

javascript - map 框/传单上的聚类标记

javascript - JQuery 进度条动画

javascript - 在具有最大整数重复项的数组中查找第二大值

javascript - 将 API 响应数据从 Redux 状态传递到组件 props

reactjs - react 路由器中的重叠路由

javascript - 我正在尝试使用传单 javascript 库可视化 map 上的一些数据点。你能告诉我我的代码有什么问题吗?

javascript - 比较两个对象数组