我有点奇怪的问题。我仍然是这样的初学者,而改变你不完全了解的代码尤其困难。单张easybutton,状态和颜色
我在地图上有两个easybuttons。两者是分开制作的(来自同一指令的不同实例)。
现在他们应该有不同的颜色。我可以访问制作按钮的地方的颜色,所以我认为这应该很容易。
现在(我从其他人那里得到的代码),每个按钮实际上是2个按钮交替显示,除此之外它们似乎有时会交换位置。
var btn1 = L.easyButton('fa-dot-circle-o', function() {
self.trackingModeActive = true;
map.removeControl(btn1);
map.addControl(btn2);
}, 'Mode 1', map);
var btn2 = L.easyButton('fa-expand', function() {
self.trackingModeActive = false;
map.removeControl(btn2);
map.addControl(btn1);
}, 'Mode2', '');
我第一次尝试是:这
btn1.btn.style.backgoundColor = 'red';
和变化,但它不工作(没有找到一个样式对象)。 我读到的是代替符号变量('fa-dot-circle-o'这里),你可以把html代码像图片(example),并认为我可以把这样的风格属性,但是当我这样做时,它只写该代码到类属性像
class="<img src="...">"
所以这不适用于我。
然后我读到的状态是可能的,认为我还不如做这种正确的,并试图为此,从easyButton网站:
var stateChangingButton = L.easyButton({
states: [{
stateName: 'zoom-to-forest', // name the state
icon: 'fa-tree', // and define its properties
title: 'zoom to a forest', // like its title
onClick: function (btn, map) { // and its callback
map.setView([46.25, -121.8], 10);
btn.state('zoom-to-school'); // change state on click!
}
}, {
stateName: 'zoom-to-school',
icon: 'fa-university',
title: 'zoom to a school',
onClick: function (btn, map) {
map.setView([42.3748204, -71.1161913], 16);
btn.state('zoom-to-forest');
}
}]
});
stateChangingButton.addTo(map);
我得到的是:的ReferenceError:地图是不是在对象定义 .L.easyButton(easy-button.js:55)。
我把这个stateChangingButton代码放在其他按钮代码的下方,所以我不明白为什么map变量不会为此定义,而是为其他按钮定义。
我希望有人可以给我一个提示/出错的地方。我宁愿解决stateChangingButton问题并从那里出发,但我很好奇其他尝试出了什么问题。
编辑:只要incase任何人有类似的问题,我发现原因,它只是一个超级旧版本的Leaflet显然,它只允许语法L.easyButton('图标',函数,'文本' ,地图),没有别的。不幸的是我不允许更新版本。
谢谢你试图帮忙。它不起作用,因为它只是将第一个参数(示例中的跨度)放在class =“”后面。但是现在我知道为什么,请参阅编辑。 – Silvie