我有一张使用Leaflet的4个城镇的地图。 Mouseover和Mouseout可以正常工作,但是我希望有一个计时器,它每5或10秒自动关注一次旋转的城镇。我试图在文档中找到一种方法,可以找到地图上的所有多边形,然后无限循环地进入这些多边形,但是我无法单独访问它们以应用功能来突出显示和重置样式。
$.getJSON('./data/mymap.json', function (geojson) {
var geojsonLayer = new L.GeoJSON(geojson, {
style: function () {
return {
color: 'blue'
}
},
onEachFeature: function (feature, layer) {
layer.on('mouseover', function () {
this.setStyle({
color: 'green'
});
document.getElementById("mapdetails").innerText = layer.feature.properties.name;
});
layer.on('mouseout', function () {
geojsonLayer.resetStyle(this);
document.getElementById("mapdetails").innerText = '';
});
layer.on('click', function () {
mymap.fitBounds(arrayBounds);
});
}
}).addTo(mymap);
});
function highlightLayer(layerID) {
mymap._layers['name'+layerID].setStyle(highlight); }
var highlight = {
'color': '#333333',
'weight': 2,
'opacity': 1 };
$(document).ready(function() {
var layerGroup = L.LayerGroup([polygon]);
for (var i in this._layers) {
if (this._layers[i].options.name == 'Mytown') {
console.log('found');
}
}
您必须从geojsonLayer调用eachLayer()或getLayers()。
var i = 0;
function highlightLayer(){
setTimeout(function(){
geojsonLayer.resetStyle(); //To clear style of all layers
var layers = geojsonLayer.getLayers();
if(layers.length >= i){
i = 0;
}
layers[i].setStyle(highlight);
i++;
highlightLayer(); //Restart Timer
},1000);
}