我们使用标准的“层控件”从传单。实例化如下:
this.controls[id] = L.control.layers({}, {}, {
collapsed: false
});
层是按随机顺序动态添加的(取决于xhr请求完成的时间)。然而,似乎Laflet implicity使用相应层的_leaflet_id在层控件中排序,因此我们的层以随机顺序出现。
有没有办法告诉传单应该按哪个顺序显示控件中的图层?例如。通过在调用.addoverlay
或.addBaseLayer
方法时传递一些附加参数?
单张版本为1.0-dev
我找到了一些解决问题的方法。然而,这不是一个干净的解决方案,所以请放心发布更好的答案。
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