当前位置: 首页 > 知识库问答 >
问题:

传单层控制:订购

龙佐
2023-03-14

我们使用标准的“层控件”从传单。实例化如下:

this.controls[id] = L.control.layers({}, {}, {
   collapsed: false
});

层是按随机顺序动态添加的(取决于xhr请求完成的时间)。然而,似乎Laflet implicity使用相应层的_leaflet_id在层控件中排序,因此我们的层以随机顺序出现。

有没有办法告诉传单应该按哪个顺序显示控件中的图层?例如。通过在调用.addoverlay.addBaseLayer方法时传递一些附加参数?

单张版本为1.0-dev

共有1个答案

曾典
2023-03-14

我找到了一些解决问题的方法。然而,这不是一个干净的解决方案,所以请放心发布更好的答案。

Laflet使用layer对象的_leaflet_id进行排序。因此,首先创建的层将始终位于顶部。为了对图层进行排序,您必须将实际的图层包装在一个图层/特征组中。

|- dummy layer group
   |- some dummy geojson layer
   |- your actual layer (will be added later)

编程方式:

var oFeatureGroup = L.featureGroup([
    L.geoJson({
        "type": "FeatureCollection",
        "features": []
    })
]);

然后我们进行一些异步加载,一旦准备就绪,我们将层添加到-或多或少为空-层组中:

oFeatureGroup.addLayer(oMyMagicAsyncLoadedLayer)

然后我们可以将层添加到layer控件中,它将被排序为“预期的”,其中顺序取决于OFeatureGroup层的创建顺序,而不是OMyMagicAsyncloadedLayer

 类似资料:
  • 所有,我想检测用户层选择,以便同步我的侧栏与显示的层。 但我在API引用中没有看到任何层控制事件;我如何判断当这样的用户层选择发生了? 作为另一种选择,我查看了layer load和unload事件,但在返回的内容中没有看到任何标识。我是不是错过了?

  • 我在宣传单上展示了两个Geojson文件。这两个文件在我的地图上显示良好,但我希望能够有选择器工作在两个层。 如您在这里所见,我选择器仅显示在以下省份:http://bl.ocks.org/renauld94/8493CA671CE8DE63BFAB9FAFD3F3F574/363F40907203CC431DE22E16987669B7BAE13FE8 我如何可以有一个选择器为两层?

  • 我想有一个传单层控件,在那里我可以选择一个基本层,并使这个基本层本身是一个LayerGroup,从中我可以选择要显示的子层。我正在考虑一个设置,在那里我点击一个单选按钮选择基本层(层组),然后我会看到一个复选框列表,其中的层显示。有没有办法使用库存层控件做到这一点? 我找了一些例子,翻阅了一下传单API,但没有找到类似的东西。

  • 我正在尝试为某些标记添加layercontrol。当我把城市标记添加到地图上时,它工作得很好。baseLayers控件可以正常工作,同时也创建了overlayMaps控件。但是,当单击overlayMaps控件时,标记不会显示。我肯定我犯了一个简单的错误,但我一直没能察觉出来。

  • 我正在尝试用一个自定义的控件替换默认的传单层控件。 我关注了另一个关于创建自定义层控件的帖子。 我可以通过层名,我已经用console.log检查了这一点。 但是,取消选中该复选框并不会删除该层。

  • 访问控制器 ThinkPHP引入了分层控制器的概念,通过URL访问的控制器为访问控制器层(Controller)或者主控制器,访问控制器是由\think\App类负责调用和实例化的,无需手动实例化。 URL解析和路由后,会把当前的URL地址解析到 [ 模块/控制器/操作 ],其实也就是执行某个控制器类的某个操作方法,下面是一个示例: <?php namespace app\index\contro