/**
## Mapview.geoJSON()
The mapview.geojson method creates and adds a geoJSON layer/source to the mapview.Map.
@module /mapview/geometry
@param {Object} params
The params object argument.
*/
let format
export default function (params) {
if (typeof params.format === 'string' && Object.hasOwn(ol.format, params.format)) {
format = new ol.format[params.format]();
}
let feature;
// Parse geometry from string value if not provided.
const geometry = params.geometry || (typeof params.value === 'string' ? JSON.parse(params.value) : params.value)
// Create OL style object from params.style if not provided.
params.Style ??= mapp.utils.style(params.style)
if (!geometry) return;
try {
feature = format.readFeature({
type: 'Feature',
geometry
}, {
dataProjection: `EPSG:${params.dataProjection || params.srid || this.srid}`,
featureProjection: `EPSG:${this.srid}`
});
} catch (err) {
console.error(err)
return;
}
if (!feature) return;
const layerVector = new ol.layer.Vector({
source: new ol.source.Vector({
features: [feature]
}),
zIndex: params.zIndex,
style: params.Style
})
this.Map.addLayer(layerVector)
return layerVector
}