多边形中的传单可点击网格

Leaflet clickable grid in polygon

我正在使用 leaflet.js 来展示重新造林工作。

是否有可能创建一个网格图案,其中图案的每个正方形都可以链接到一个点击事件?
类似于 this
它需要小方块一起形成一个类似的多边形,如上所示。

我尝试了 Leaflet 图案,但方块在缩放时会调整大小,并且没有向图案形状添加事件的选项。

我可以为此使用传单矩形吗?我如何找到每个方块的正确纬度和经度?

您可能希望 create a square grid, then calculate the intersection 每个网格单元与每个多边形之间。

由您决定正方形网格的细节,以及您是希望所有多边形使用相同的网格,还是每个多边形使用不同的网格。

感谢 Ivan Sanchez 我找到了解决方案。 对于任何正在寻找它的人,请参阅此 JSFiddle.

'''

    // initialize the map on the "map" div with a given center and zoom
    var map = L.map(
      'map', {
        layers: [map]
      }
    ).setView([-5.0, 19.40], 11);

    //HexGrid
    var bbox = [19.35, -5, 19.5, -5.15];
    var cellSide = 1;
    var options = {
      units: 'kilometers'
    };
    var hexgrid = turf.hexGrid(bbox, cellSide, options);

    //Polygram that will contain the hexagons
    let poly1 = turf.polygon([
      [
        [19.4, -5],
        [19.5, -5.1],
        [19.4, -5.1],
        [19.4, -5]
      ]
    ]);

    _.each(hexgrid.features, function(hex) {
      var intersection = turf.intersect(poly1, hex.geometry);
      if (intersection) {
        hex.geometry = intersection.geometry;
      } else {
        hex.geometry = {
          type: "Polygon",
          coordinates: []
        }
      }
    })


    L.geoJSON(hexgrid, {
      style: function(feature) {
        return {
          weight: 1
        };
      }
    }).addTo(map);
    L.geoJSON(poly1).addTo(map);

'''