【问题标题】:leaflet invert when there are multiple polygons当有多个多边形时传单反转
【发布时间】:2020-12-09 07:43:10
【问题描述】:

我正在使用这个库来反转传单层。

https://github.com/ebrelsford/Leaflet.snogylop

当只有一个多边形时,这非常有效。但是当有多个多边形时,反转适用于每个多边形,因此它重叠,结果反转特征适用于每个多边形的顶部。如下图所示。

在尝试单个多边形时,它可以完美运行。

当有多个多边形时,我该如何解决这个问题。

function handleJson(data) {
  var selectedArea = L.geoJson(data, {
    invert: true,
    worldLatLngs: [
      L.latLng([90, 360]),
      L.latLng([90, -180]),
      L.latLng([-90, -180]),
      L.latLng([-90, 360])
  ]
  });
  selectedArea.addTo(lmap);
  lmap.fitBounds(selectedArea.getBounds());
}

PS:

poly.toGeoJSON()

{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[null,null],[null,null]]],[[[null,null],[null,null]]],[[[null,null],[null,null]]],[[[null,null],[null,null]]],[[[null,null],[null,null]]],[[[null,null],[null,null]]],[[[null,null],[null,null]]]]}}

multipolyCoords

[[[[{"lat":35.41263883,"lng":63.02502113},{"lat":35.41251986,"lng":63.02571771},{"lat":35.41329411,"lng":63.02584793},{"lat":35.41378402,"lng":63.02643689},{"lat":35.41402821,"lng":63.02723164},{"lat":35.41342648,"lng":63.02885513},{"lat":35.41342962,"lng":63.02891854},{"lat":35.4100508,"lng":63.02941312},
.....................
]]]],"_initHooksCalled":true

【问题讨论】:

    标签: javascript jquery leaflet polygon


    【解决方案1】:

    您必须从多边形中创建一个 MultiPolygon。

    试试这个(我假设你在data 中只有多边形):

    var layers = L.geoJSON(data);
    
    var multipolyCoords = [];
    layers.eachLayer((l)=>{
        if(l instanceof L.Polygon){
            multipolyCoords.push(l.getLatLngs())
        }
    })
    
    var poly = L.polygon(multipolyCoords);
    
    var selectedArea = L.geoJson(poly.toGeoJSON(), {
        invert: true,
        worldLatLngs: [
          L.latLng([90, 360]),
          L.latLng([90, -180]),
          L.latLng([-90, -180]),
          L.latLng([-90, 360])
      ]
      });
    

    【讨论】:

    • 我收到错误消息“未捕获的错误:无效的 LatLng 对象:(NaN, NaN)”
    • 你能分享数据并创建一个jsfiddle吗?
    • 我附上了我的控制台的屏幕截图,如果有帮助的话。
    • 请添加console.log(JSON.stringify(poly.toGeoJSON()))的输出
    • 我在问题中更新了它。坐标具有空值。所以这就是问题所在。但不知道为什么它得到空值。
    猜你喜欢
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多