首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Mapbox中,如何在使用setStyle时保留层?

在Mapbox中,如何在使用setStyle时保留层?
EN

Stack Overflow用户
提问于 2018-08-27 00:14:20
回答 1查看 1.6K关注 0票数 6

我和这件事斗争了很久。挑战是,我可以在一种样式上画几个不同的层,然后调用setStyle (例如:去卫星视图),它清除了我所有的层。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 00:14:20

我通过复制我关心的层和源并重新应用它们来解决这个问题。

代码语言:javascript
运行
复制
function forEachLayer(text, cb) {
  this.map.getStyle().layers.forEach((layer) => {
    if (!layer.id.includes(text)) return;

    cb(layer);
  });
}
// Changing the map base style
export function changeStyle(style) {
  const savedLayers = [];
  const savedSources = {};
  const layerGroups = [
    'layer-type-1',
    'layer-type-2'
  ];

  layerGroups.forEach((layerGroup) => {
    this.forEachLayer(layerGroup, (layer) => {
      savedSources[layer.source] = this.map.getSource(layer.source).serialize();
      savedLayers.push(layer);
    });
  });

  this.map.setStyle(`mapbox://styles/mapbox/${style}`);


  setTimeout(() => {
    Object.entries(savedSources).forEach(([id, source]) => {
      this.map.addSource(id, source);
    });

    savedLayers.forEach((layer) => {
      this.map.addLayer(layer);
    });
  }, 1000);
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52031176

复制
相关文章

相似问题

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