Javascript 在各种独立多边形之外遮罩传单贴图时的奇怪行为
受此启发,我尝试在各种多边形之外遮罩贴图的其余部分。但我似乎在顶点方面遇到了一些挑战。可能是因为某些多边形没有闭合,所以遮罩在开始/停止时遇到困难?在每个多边形内,起点/终点相同 或者问题在于脚本,即L.maskJavascript 在各种独立多边形之外遮罩传单贴图时的奇怪行为,javascript,leaflet,polygon,masking,Javascript,Leaflet,Polygon,Masking,受此启发,我尝试在各种多边形之外遮罩贴图的其余部分。但我似乎在顶点方面遇到了一些挑战。可能是因为某些多边形没有闭合,所以遮罩在开始/停止时遇到困难?在每个多边形内,起点/终点相同 或者问题在于脚本,即L.mask L.Mask = L.Polygon.extend({ options: { stroke: false, color: '#333', fillOpacity: 0.5, clickable: true,
L.Mask = L.Polygon.extend({
options: {
stroke: false,
color: '#333',
fillOpacity: 0.5,
clickable: true,
outerBounds: new L.LatLngBounds([-90, -360], [90, 360])
},
initialize: function (latLngs, options) {
var outerBoundsLatLngs = [
this.options.outerBounds.getSouthWest(),
this.options.outerBounds.getNorthWest(),
this.options.outerBounds.getNorthEast(),
this.options.outerBounds.getSouthEast()
];
L.Polygon.prototype.initialize.call(this, [outerBoundsLatLngs, latLngs], options);
}
});
L.mask = function (latLngs, options) {
return new L.Mask(latLngs, options);
};
寻找任何可能的帮助
演示。。。(很抱歉负重)该
L.mask
类是正确的,您的数据有问题
让传单为您服务:
var sanbartolome_001 = ...;
var sanbartolome_002 = ...;
...
var options = {
style: function(feature) {
return {
"color": "black",
"weight": 3,
"opacity": 1,
"fillColor": "transparent",
"fillOpacity": 0.0
};
}
};
var latLngs = [];
var rfc_nerfc_001 = new L.geoJson(sanbartolome_001.features, options).addTo(map);
var rfc_nerfc_002 = new L.geoJson(sanbartolome_002.features, options).addTo(map);
var rfc_nerfc_003 = new L.geoJson(sanbartolome_003.features, options).addTo(map);
var rfc_nerfc_004 = new L.geoJson(sanbartolome_004.features, options).addTo(map);
var rfc_nerfc_005 = new L.geoJson(sanbartolome_005.features, options).addTo(map);
latLngs.push(rfc_nerfc_001.getLayers()[0].getLatLngs());
latLngs.push(rfc_nerfc_002.getLayers()[0].getLatLngs());
latLngs.push(rfc_nerfc_003.getLayers()[0].getLatLngs());
latLngs.push(rfc_nerfc_004.getLayers()[0].getLatLngs());
latLngs.push(rfc_nerfc_005.getLayers()[0].getLatLngs());
var rfc_nerfc_000 = L.mask(latLngs).addTo(map);
哇,说真的,谢谢你!那太让我难以忍受了。有趣的是,操作顺序是如何改变的。所以我们生成了多边形,然后创建了遮罩,而不是反之亦然?然后获取图层的ID并返回路径中的点数组,然后将其传递给L.mask?这是否只是利用数据绕过错误来创建闭合多边形,然后有效地传递?只是试着去理解。再次感谢你!更新小提琴。。。我不完全理解你的评论,但我试着解释一下。这并不复杂。下面将替换您的循环以获取latlngs:使用L.geojson,我们将geojson字符串转换为传单层,然后从新geojsonLayer中唯一的层获取latlngs,并将其添加到latlngs数组中。我们这样做是因为传单有更好的逻辑将geojson转换为latlngs。然后我们创建L.mask,使用与前面相同的latlngs数组。没有身份证…收到了,我想我明白了。再次感谢您在这方面的帮助!