首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React-Leaflet磁贴离线存储

React-Leaflet磁贴离线存储
EN

Stack Overflow用户
提问于 2020-10-29 03:02:48
回答 1查看 235关注 0票数 1

我已经看到了一种常见的解决方案,通过使用localforage等来使用Leaflet离线存储tiles,如下所示:

代码语言:javascript
复制
const map = L.map("map-id");
const offlineLayer = L.tileLayer.offline('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', localforage, {

minZoom: 13,
maxZoom: 19,
crossOrigin: true
});
offlineLayer.addTo(map);

我正在尝试使用React-Leaflet来做这件事。我读到过,您必须扩展TileLayer类。然而,扩展似乎不适用于React-Leaflet v2。enable react-leaflet to use be usable offline

有没有人想出解决这个问题的办法。除了不使用react-leaflet和直接使用leaflet之外?

EN

回答 1

Stack Overflow用户

发布于 2020-11-13 13:23:18

我也在做同样的事情。我没有考虑过v2,但在v3中,我认为需要这样的东西:

代码语言:javascript
复制
import { LayerProps, createTileLayerComponent, updateGridLayer, withPane } from '@react-leaflet/core';
import { TileLayer as LeafletTileLayer, TileLayerOptions } from 'leaflet';
import TileLayerOffline from 'leaflet.offline';
import 'leaflet';
import L from 'leaflet'
import '@react-leaflet/core';
export interface TileLayerProps extends TileLayerOptions, LayerProps {
  url: string;
}
export const TileLayerOfflineExtended = createTileLayerComponent<LeafletTileLayer, TileLayerProps>(
  function createTileLayer({ url, ...options }, context) {
    return {
      instance: (L.tileLayer as any).offline(url, withPane(options, context)),
      context
    };
  },
  updateGridLayer
);

我还没有弄清楚的是如何让控件工作。如果有人把它张贴在这里,我们可以把它放到一个react-leaflet插件npm中,那就很有用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64579663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档