Есть точки(полигоны), которые читаю.
MULTIPOLYGON(((-61.2811499892424 -51.8650394644694,-61.3156095883879 -51.84003983505,-61.3451180293736 -51.836359409781,-61.345979 -51.8243193384298,-61.-61.2230287013809 -51.8586600606699,-61.2380183615625 -51.8776,-61.2792595470359 -51.8659093831693,-61.2811499892424 -51.8650394644694)),((-59.6938009153582 -52.2130104476997,-59.6697 -52.2216295490501,-59.6888996395972 -52.2286288414282,-59.6929605766079 -52.2129007110094,-59.6938009153582 -52.2130104476997),(-59.7427025342573 -52.2157144418542,-59.7402989592584 -52.226169308217,-59.7414397191119 -52.2143487582055,-59.7427025342573 -52.2157144418542)),((-58.4328292075227 -52.102969,-58.4668596645304 -52.094089483711,-58.444380216144 -52.0871892532998,-58.4332186231022 -52.1024482278935,-58.4328292075227 -52.102969)))
в нем есть дыры в одинарных скобках
Мне необходимо, как то выделять точки этих дыр в массиве и помещать в отдельный массив(закончить полигон).
В условии указал, нахожу элемент, в котором присутствует закрывающая скобка, но не пойму как делать дальше, как определить интервал этих дыр?
/*
Проверяю навзание файла по префиксу MULTI
content - помещаю в массив и удаляю "MULTIPOLIGON(((" и ")))" из строки
polygons - спличу на массив строк
Перебираю этот массив, если первый элемент в основном массиве присутствует, то создаю новый массив
В latlongs, спличу на массив строк по запятой
В "с" спличу массив строк по пробелу, получаю каждую координату как отдельный элемент в массиве
Условие если в элементе присутствует скобка, то...
Пушу данные в основной массив
*/
//MULTIPOLYGON
if ((p = data.indexOf(multiPolygonPrefix)) !== -1 && (p2 = data.indexOf(')))')) !== -1) {
let content = data.slice(p + multiPolygonPrefix.length, -(data.length - p2 + 1));
let polygons = content.split(')),((');
for (let pl = 0; pl < polygons.length; pl++) {
if (latlng[0].length !== 0) {
curPol++;
latlng.push([]);
layers[curPol] = new L.LayerGroup().addTo(map);
}
let latlongs = polygons[pl].split(',');
for (let l = 0; l < latlongs.length; l++) {
var c = latlongs[l].split(' ');
if(c[1].indexOf(')') !==-1){
console.log('bracket', c);
}
latlng[curPol].push({ lat: parseFloat(c[1]), lng: parseFloat(c[0]) });
}
drawPolygon(curPol);
drawMarkers(curPol);
}
}