在各种单独的多边形之外屏蔽 Leaflet 地图时的奇怪行为
Strange behavior when masking a Leaflet map outside of a variety of separate polygons
受到 http://embed.plnkr.co/1I7dIw/ 的启发,我试图掩盖地图上各种多边形之外的其余部分。但是我似乎在顶点方面遇到了一些挑战。会不会是一些多边形没有关闭,所以遮罩在开始/停止时挣扎?在每个多边形内,起点/终点相同。
或者问题出在脚本上,即 L.mask?
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);
};
寻求任何可能的帮助。
演示 ... https://jsfiddle.net/q7wo0ndf/7/(抱歉负载过重)
L.mask
Class正确,你的数据有问题
让传单为您效劳:
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);
受到 http://embed.plnkr.co/1I7dIw/ 的启发,我试图掩盖地图上各种多边形之外的其余部分。但是我似乎在顶点方面遇到了一些挑战。会不会是一些多边形没有关闭,所以遮罩在开始/停止时挣扎?在每个多边形内,起点/终点相同。
或者问题出在脚本上,即 L.mask?
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);
};
寻求任何可能的帮助。
演示 ... https://jsfiddle.net/q7wo0ndf/7/(抱歉负载过重)
L.mask
Class正确,你的数据有问题
让传单为您效劳:
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);