传单计时器。每秒钟突出显示一个不同的城镇(多边形)

问题描述 投票:0回答:1

我有一张使用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');
        }
    }
javascript leaflet gis
1个回答
0
投票

您必须从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);
}
© www.soinside.com 2019 - 2024. All rights reserved.