Как разобрать GeoJSON для типа в Dart / Flutter

#flutter #dart

#flutter #dart

Вопрос:

У меня есть JSON, подобный этому, поступающий с моего сервера:

         {
          "coordinates": [
            [
              [
                -122.41251225499991,
                37.78047851100007
              ],
              [
                -122.42194124699989,
                37.77303605000009
              ],
              ...trimmed...
              [
                -122.41251225499991,
                37.78047851100007
              ]
            ]
          ],
          "crs": {
            "properties": {
              "name": "EPSG:4326"
            },
            "type": "name"
          },
          "type": "Polygon"
        }
 

Я хочу проанализировать это на своем сервере, но я не уверен, как это сделать. Я нашел две библиотеки Dart, которые работают с GeoJSON:

geojson https://pub.dev/packages/geojson geojson_vi https://pub.dev/packages/geojson_vi

Оба из них имеют только синтаксический анализ из строковых функций, но у меня есть карта. Каков наилучший способ проанализировать что-то подобное в Dart / Flutter?

Ответ №1:

Это значит?

 class GetJsonData{
    GetJsonData({
        this.coordinates,
        this.crs,
        this.type,
    });

    List<List<List<double>>> coordinates;
    Crs crs;
    String type;

    factory GetVehicleInfo.fromJson(Map<String, dynamic> json) => GetVehicleInfo(
        coordinates: List<List<List<double>>>.from(json["coordinates"].map((x) => List<List<double>>.from(x.map((x) => List<double>.from(x.map((x) => x.toDouble())))))),
        crs: Crs.fromJson(json["crs"]),
        type: json["type"],
    );

    Map<String, dynamic> toJson() => {
        "coordinates": List<dynamic>.from(coordinates.map((x) => List<dynamic>.from(x.map((x) => List<dynamic>.from(x.map((x) => x)))))),
        "crs": crs.toJson(),
        "type": type,
    };
}

class Crs {
    Crs({
        this.properties,
        this.type,
    });

    Properties properties;
    String type;

    factory Crs.fromJson(Map<String, dynamic> json) => Crs(
        properties: Properties.fromJson(json["properties"]),
        type: json["type"],
    );

    Map<String, dynamic> toJson() => {
        "properties": properties.toJson(),
        "type": type,
    };
}

class Properties {
    Properties({
        this.name,
    });

    String name;

    factory Properties.fromJson(Map<String, dynamic> json) => Properties(
        name: json["name"],
    );

    Map<String, dynamic> toJson() => {
        "name": name,
    };
}

 

Ответ №2:

Вы можете преобразовать карту в строку и использовать пакет geojson для анализа данных GeoJSON.