function addGeoJsonFeaturesToScene(features, group) {
console.log("add geojson features");
for (let i = 0; i < features.length; i++) {
let feature = features[i];
let coords = [];
for (let c = 0; c < feature.geometry.coordinates.length; c++) {
if (feature.geometry.type == "Polygon") {
let coords = [];
for (let s = 0; s < feature.geometry.coordinates[c].length; s++) {
const x = feature.geometry.coordinates[c][s][0];
const y = feature.geometry.coordinates[c][s][1];
if (isNaN(x) || isNaN(y)) console.log("invalid coords");
coords.push({ x, y });
}
if (coords.length > 0 && coords[0] && coords[1]) {
console.log("group.add");
group.add(createLineFromCoords(coords));
}
} else if (feature.geometry.type == "MultiPolygon") {
for (let s = 0; s < feature.geometry.coordinates[c].length; s++) {
let coords = [];
for (let m = 0; m < feature.geometry.coordinates[c][s].length; m++) {
const x = feature.geometry.coordinates[c][s][m][0];
const y = feature.geometry.coordinates[c][s][m][1];
if (isNaN(x) || isNaN(y)) console.log("invalid coords");
coords.push({ x, y });
}
}
if (coords.length > 0) {
group.add(createLineFromCoords(coords));
}
} else if (feature.geometry.type == "LineString") {
const x = feature.geometry.coordinates[c][0];
const y = feature.geometry.coordinates[c][1];
if (isNaN(x) || isNaN(y)) console.log("invalid coords");
coords.push({ x, y });
if (coords.length > 0) {
group.add(createLineFromCoords(coords));
}
} else if (feature.geometry.type == "MultiLineString") {
feature.geometry.coordinates.forEach((line) => {
let coords = [];
line.forEach((coord) => {
const x = coord[0];
const y = coord[1];
if (isNaN(x) || isNaN(y)) return;
coords.push({ x, y });
});
if (coords.length > 0) {
group.add(createLineFromCoords(coords));
}
});
}
}
}
scene.add(group);
}