首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用maplibre-gl-js加载本地.mbtiles

使用maplibre-gl-js加载本地.mbtiles
EN

Stack Overflow用户
提问于 2021-08-19 19:54:31
回答 1查看 335关注 0票数 0

我想用maplibre-gl-js加载一个本地.mbtiles (带有矢量瓦片)(在一个科尔多瓦应用中,如果知道这一点很重要的话)。据我所知,我应该使用addProtocol方法。这很好,因为我得到了我的console.log,但我不知道如何加载磁贴然后…

这是我的代码:

代码语言:javascript
运行
复制
maplibregl.addProtocol('mbtiles', (params, callback) => {

  console.log('I get this log.');

  // but what to do here to get local mbtiles vector tiles loaded?

});

样式的定义如下:

代码语言:javascript
运行
复制
...
"sources": {
  "openmaptiles": {
    "type": "vector",
    "url": "mbtiles://map/data/test.mbtiles"
  }
},
...

感谢任何帮助/提示:)

如果您需要更多信息,请随时询问。

另外,我以前用过mapbox-gl-cordova-offline,并试图理解这个插件是如何加载磁贴的,但我还不能弄明白。

EN

回答 1

Stack Overflow用户

发布于 2021-11-15 20:05:49

以下是我为实现这一目标所做的工作:

代码语言:javascript
运行
复制
maplibregl.addProtocol("custom", (params, callback) => {
// tileBuffer = get a arrayBuffer of a specific tile using params.url
    if (tileBuffer) {
        callback(null, tileBuffer, null, null);
    } else {
        let message = `Tile is not in DB: ${params.url}`;
        callback(new Error(message));
    }
    return { cancel: () => { } };
});

我使用cordova-sqlite-ext是为了能够在Cordova中使用预先填充的数据库。该样式有一个tiles: [custom://database-name/{z}/{x}/{y}],以便知道要获取哪个磁贴。

完整代码可在此处找到:https://github.com/IsraelHikingMap/Site/blob/6aa2ec0cfb8891fa048b1d9e2a4fc7d4cbcc8c97/IsraelHiking.Web/src/application/services/database.service.ts

值得注意的是,我在maplibre中添加了addProtocol方法,特别是为了这个目的。:-)

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

https://stackoverflow.com/questions/68853853

复制
相关文章

相似问题

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