Javascript 控件。具有传单指令的覆盖层的层折叠选项
是否有人知道如何为添加了传单指令的一组基础层和覆盖层设置折叠control.layers选项? 在我的场景中,control.layer应该始终展开 我尝试在传单指令配置中添加选项对象,如:Javascript 控件。具有传单指令的覆盖层的层折叠选项,javascript,angularjs,angularjs-directive,leaflet,Javascript,Angularjs,Angularjs Directive,Leaflet,是否有人知道如何为添加了传单指令的一组基础层和覆盖层设置折叠control.layers选项? 在我的场景中,control.layer应该始终展开 我尝试在传单指令配置中添加选项对象,如: angular.extend($scope, { center: { lat: 0, lng: 0, zoom: 1, autoDiscover: true }, geofences: {}, defaults:
angular.extend($scope, {
center: {
lat: 0,
lng: 0,
zoom: 1,
autoDiscover: true
},
geofences: {},
defaults: {
scrollWheelZoom: true,
zoomControl: false
},
layers: {
options: {
collapsed: false
},
baselayers: {
defaultOSMMap: {
name: 'Map at Day',
type: 'xyz',
url: 'http://{s}.tile.osm.org/{z}/{x}/{y}.png'
},
osmNight: {
name: 'Map at Night ',
type: 'xyz',
url: 'http://{s}.tile.cloudmade.com/{key}/{styleId}/256/{z}/{x}/{y}.png',
layerParams: {
key: 'BC9A493B41014CAABB98F0471D759707',
styleId: 999
}
},
googleHybrid: {
name: 'Google Hybrid',
layerType: 'HYBRID',
type: 'google'
},
googleRoadmap: {
name: 'Google Streets',
layerType: 'ROADMAP',
type: 'google'
}
},
overlays: {
communityAreas: {
name: 'Community Areas',
type: 'group',
visible: false
}
}
},
controls: {
}
然后,在角度传单指令文件上,添加以下内容:
// We have baselayers to add to the map
_leafletLayers.resolve(leafletLayers);
leafletData.setLayers(leafletLayers, attrs.id);
leafletLayers.baselayers = {};
leafletLayers.controls = {};
leafletLayers.controls.layers = new L.control.layers({}, {}, isDefined(layers.options) ? layers.options : {}); --> this is the line I modified
leafletLayers.controls.layers.setPosition(defaults.controlLayersPosition);
leafletLayers.controls.layers.addTo(map);
但是我在调试控制台上得到了与层相关的错误,比如:在moplea.js文件中:“uncaughterror:没有为变量{s}提供值”
也许是我在angular传单指令中实例化基础层和覆盖层的方式。。。有什么想法吗?现在可能有点晚了,但以防万一其他人也有同样的问题(就像我刚才遇到的!) 这就是我如何设置要展开的控制层 基思
我发现实现该场景的一种方法是获取对当前control.layer的引用,将其展开,然后删除mouseout和mouseover事件:floapedata.getLayers().then(函数(层){layers.controls.layers._expand();L.DomEvent.off(layers.controls.layers._container,'mouseout',layers.controls.layers._collapse);L.DomEvent.off(layers.controls.layers._container,'mouseover',layers.controls.layers._expand);});但是有没有办法通过将选项对象传递给传单指令来实现这一点吗?“我无法让它工作”不是很有帮助。在询问有关堆栈溢出的问题时,请尽最大努力解释您预期会发生什么,以及发生了什么。对不起,我的错。我想要的是始终扩展层控件。我尝试了我提到的更改,但在调试控制台上出现了与层相关的错误,如:“未捕获错误:变量{s}未提供任何值”位于lapper.js。然后我尝试使用我在上一条评论中输入的代码,结果成功了。很抱歉没有澄清这个问题(这是我第一次在这里问问题:)你应该将这些内容编辑到你的问题中,而不是在评论中留下它们——它们很重要,人们并不总是阅读这些评论。完成了!起初,这是我想到的第一件事,但我找不到“编辑”按钮:)谢谢你的帮助!
angular.extend($scope, {
center: {
lat: 0,
lng: 0,
zoom: 1,
autoDiscover: true
},
geofences: {},
defaults: {
scrollWheelZoom: true,
zoomControl: false,
controls :{
layers : {
visible: true,
position: 'topright',
collapsed: false
}
}
},
layers: ...