Как удалить лишние »в GEOjson (Javascript) - PullRequest
0 голосов
/ 15 января 2019

Я пытался манипулировать объектом GEOjson, чтобы отобразить его на моей карте OpenLayers. Но мой GEOjson недействителен. Сначала в своем API я запрашиваю в своей базе данных восстановление геометрии, а затем анализирую ее благодаря GEOjson.parse: GeoJSON.parse(data, {GeoJSON : 'geometry'}); данные выглядят так:

{
    "type": "FeatureCollection",
        "features": [
            {
                "type": "Feature",
                "geometry": "{\"type\":\"MultiPolygon\",\"coordinates\":[[[[0.699526704561417,49.5855766259652],[0.699132813373672,49.5855472259388],[0.698829663954256,49.5852457878428],[0.698308423811369,49.5855523688003],[0.699127661396565,49.5862481964213],[0.699752271011022,49.5859030239836],[0.699526704561417,49.5855766259652]]]]}",
                "properties": {
                    "libgeo": "Bois-Himont",
                    "nature": "Parcelle bâtie"
                }
            },
            {
                "type": "Feature",
                "geometry": "{\"type\":\"MultiPolygon\",\"coordinates\":[[[[0.696220319484454,49.581274516207],[0.696272071456392,49.5820438187077],[0.697147417334422,49.5815673912038],[0.697102005023975,49.5814546891317],[0.697047441685103,49.5812624281067],[0.6969844037675,49.5812621313821],[0.696220319484454,49.581274516207]]]]}",
                "properties": {
                    "libgeo": "Bois-Himont",
                    "nature": "Parcelle bâtie"
                }
            }, etc...

Затем в моем script.js (эти файлы имели целью отобразить карту и GEOjson), я анализирую данные благодаря JSON.parse, но геометрия линии недопустима, потому что есть extra"а тип и координаты окружены".

Как удалить лишнее "и удалить" для типа и координат?

1 Ответ

0 голосов
/ 15 января 2019

Геометрия - это строка, когда она должна быть объектом. После первого разбора вам нужно будет пройтись по объектам и разобрать каждую геометрическую строку в объект.

var myGeoJSON = JSON.parse(myText);
myGeoJSON.features.forEach( function(feature) { feature.geometry = JSON.parse(feature.geometry) });
...