我正在使用 Materialise 0.97.7 和 Leaflet 1.0.1(最新)
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.0.1/leaflet-src.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.0.1/leaflet.css">
当我尝试创建一个带有多个复选框的叠加层以切换元素时,没有复选框出现,只有标签,它们用作切换,但我想要复选框或开关。如果我将 CSS cdn 切换到另一个框架,例如 Bootstrap,它们就会出现。
如果有人感兴趣,可用于除芽的传单代码: http://leafletjs.com/reference-1.0.0.html#layergroup
// items to toggle
var myItems = new L.LayerGroup();
// bind popup to each item once checkbox is selected
L.marker([lat, lon]).bindPopup('Item').addTo(myItems);
// create overlays multi-checkbox selection
var overlays = {
Items = myItems
};
// add overlays to the web-map
L.control.layers(null, overlays).addTo(map);
这显然不是 Leaflet 的问题,因为它可以与其他 CSS 一起正常工作
任何人都可以提供修复吗?
谢谢
最佳答案
它看起来像 visual checkbox from Materialize CSS是由 Materialise CSS 创建的工件,在 <label> 中输入的标签,而实际的 <input type="checkbox" />被隐藏起来。
这就是 Leaflet 图层控件所发生的情况:<input>被隐藏起来,但由于 Leaflet 没有关联适当的 <label>那个<input> (或者至少,不是 Materialize CSS 期望的方式),Materialize CSS 没有占位符来创建视觉替换。
至于您的评论,我不确定您是否可以如此轻松地从样式表中“选择退出”。在您的特定情况下,您可以尝试覆盖 Leaflet 复选框的 Materialize CSS 规则,以避免它们被隐藏起来:
input[type="checkbox"].leaflet-control-layers-selector {
position: inherit;
left: inherit;
opacity: inherit;
}
演示:https://jsfiddle.net/3v7hd2vx/289/
但是,您评论的最后一部分确实可行,并且可以导致更有趣的结果:Leaflet 代码结构的优点之一是您可以很容易地扩展它的类,甚至可以重写一些方法。
参见 Extending Leaflet: Class Theory例如教程。
在您的情况下,这只需要确保有一个正确的 <label>关联到图层控件 <input type="checkbox" /> :
L.Control.Layers.include({
_addItem: function(obj) {
var label = document.createElement('label'),
checked = this._map.hasLayer(obj.layer),
input;
if (obj.overlay) {
input = document.createElement('input');
input.type = 'checkbox';
input.className = 'leaflet-control-layers-selector';
input.defaultChecked = checked;
} else {
input = this._createRadioElement('leaflet-base-layers', checked);
}
input.layerId = L.stamp(obj.layer);
// Create an explicit ID so that we can associate a <label> to the <input>.
var id = input.id = 'leaflet-layers-control-layer-' + input.layerId;
L.DomEvent.on(input, 'click', this._onInputClick, this);
// Use a <label> instead of a <span>.
var name = document.createElement('label');
name.innerHTML = ' ' + obj.name;
name.setAttribute('for', id); // Associate the <label> to the <input>.
var holder = document.createElement('div');
label.appendChild(holder);
holder.appendChild(input);
holder.appendChild(name);
var container = obj.overlay ? this._overlaysList : this._baseLayersList;
container.appendChild(label);
this._checkDisabledLayers();
return label;
}
});
(大部分代码只是从 original method 复制而来,实际上只有 3 行插入或修改,如注释所示)
演示:https://jsfiddle.net/3v7hd2vx/288/
这样,您就可以让 Materialise CSS 完成它的工作并创建复选框替换,这样结果就是您将该库包含到您的页面中所期望的结果。
使用 Materialize CSS 开关而不是复选框的演示:https://jsfiddle.net/3v7hd2vx/290/
(与上面类似的方法覆盖概念,但稍微复杂一些,因为您需要用类 <label> 的 <input> 包装整个 <div> 和 "switch",并添加一个额外的 "lever" 占位符)。
关于javascript - Materialize CSS 不显示带有 Leaflet 网络映射覆盖的多个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40155017/
Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我有一个具有一些属性的模型:attr1、attr2和attr3。我需要在不执行回调和验证的情况下更新此属性。我找到了update_column方法,但我想同时更新三个属性。我需要这样的东西:update_columns({attr1:val1,attr2:val2,attr3:val3})代替update_column(attr1,val1)update_column(attr2,val2)update_column(attr3,val3) 最佳答案 您可以使用update_columns(attr1:val1,attr2:val2
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这
我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article
我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c