/* eslint-disable react/jsx-indent-props */ /* eslint-disable import/no-absolute-path */ /* eslint-disable import/no-absolute-path */ import L from 'leaflet'; import calcUnion from '/imports/ui/components/Maps/SubsUnion/Unify'; const subsUnion = (union, options) => { const color = options.color || '#145A32'; const fillColor = options.fillColor || 'green'; const opacity = options.options || 0.1; const interactive = options.interactive || false; if (options.subs) { // v4: options.map is the Leaflet map instance directly (no .leafletElement) const lmap = options.map; if (union) { lmap.removeLayer(union); } union = null; if (options.show) { if (options.fromServer) { // http://leafletjs.com/reference-1.3.0.html#geojson // We get the json from server side union = L.geoJson(JSON.parse(options.subs)); union.setStyle({ color, fillColor, fillOpacity: opacity, interactive }); union.addTo(lmap); union.bringToBack(); if (options.fit && options.bounds) { // console.log(options.bounds); const bounds = JSON.parse(options.bounds); lmap.fitBounds(L.latLngBounds(bounds._northEast, bounds._southWest)); } } else if (options.subs.length > 0) { const result = calcUnion(L, options.subs, sub => sub, true); const unionJson = result[0]; const bounds = result[1]; union = L.geoJson(unionJson); union.setStyle({ color, fillColor, fillOpacity: opacity, interactive }); union.addTo(lmap); if (options.fit) { lmap.fitBounds(bounds); } } } } return union; }; export default subsUnion;