首先你需要有你的默認,突出風格得心應手:
var style = {
'default': {
'color': 'yellow'
},
'highlight': {
'color': 'red'
}
};
創建一些多邊形和他們組,使他們方便:
var group = new L.LayerGroup([
new L.Polygon([
[-50, -50], [50, -50], [50, -10], [-50, -10]
], {
'label': 'Polygon 1',
'popup': 'Polygon 1'
}),
new L.Polygon([
[-50, 10], [50, 10], [50, 50], [-50, 50]
], {
'label': 'Polygon 2',
'popup': 'Polygon 2'
})
]).addTo(map);
創建一個變量來存儲突出顯示圖層和功能,用於設置和取消突出顯示:
// Variable for storing highlighted layer
var highlight;
function setHighlight (layer) {
// Check if something's highlighted, if so unset highlight
if (highlight) {
unsetHighlight(highlight);
}
// Set highlight style on layer and store to variable
layer.setStyle(style.highlight);
highlight = layer;
}
function unsetHighlight (layer) {
// Set default style and clear variable
layer.setStyle(style.default);
highlight = null;
}
遍歷層,設置樣式,綁定標籤和彈出,並添加處理程序:
// Iterate
group.eachLayer(function (layer) {
// Set default style
layer.setStyle(style.default);
// Bind label with polygon option variable
layer.bindLabel(layer.options.label);
// Bind popup with polygon option variable
layer.bindPopup(layer.options.popup);
// Mouseover handler
layer.on('mouseover', function (e) {
// Set highlight
setHighlight(layer);
});
// Mouseout handler
layer.on('mouseout', function (e) {
// Unset highlight
unsetHighlight(layer);
});
// Fetch list from DOM
var list = L.DomUtil.get('list'),
// Add list item
item = L.DomUtil.create('li', 'item', list),
// Add link
link = L.DomUtil.create('a', 'link', item);
// Set link text
link.textContent = layer.options.label;
// Set link href
link.href = '#';
// Add clickhandler to link
L.DomEvent.addListener(link, 'click', function (e) {
// Set highlight
setHighlight(layer);
});
});
實施例:http://plnkr.co/edit/LjzFbI?p=preview
這是真棒。你真的救了我的培根。現在兩次!太感謝了。如果我對此有任何進一步的問題,我會添加一個跟進。 – doggonemess
如何將地圖集中在某個位置?例如,這個代碼:var map = L.map('map').setView([79,-50],5);實例化地圖並在該位置上居中。在上述示例的上下文中,您如何將地圖定位到該位置?每個多邊形都需要分配一個座標位置。謝謝! – doggonemess