fromGeoJson method
Display some geojson data on the map
Implementation
Future<void> fromGeoJson(String data,
{bool verbose = false,
Icon markerIcon = const Icon(Icons.location_on),
bool noIsolate = false}) async {
print("From geojson $data");
final geojson = GeoJson();
geojson.processedFeatures.listen((GeoJsonFeature feature) {
switch (feature.type) {
case GeoJsonFeatureType.point:
final point = feature.geometry as GeoJsonPoint;
unawaited(addMarker(
name: point.name,
marker: Marker(
point:
LatLng(point.geoPoint.latitude, point.geoPoint.longitude),
builder: (BuildContext context) => markerIcon),
));
break;
case GeoJsonFeatureType.multipoint:
final mp = feature.geometry as GeoJsonMultiPoint;
for (final geoPoint in mp.geoSerie.geoPoints) {
unawaited(addMarker(
name: geoPoint.name,
marker: Marker(
point: LatLng(geoPoint.latitude, geoPoint.longitude),
builder: (BuildContext context) => markerIcon),
));
}
break;
case GeoJsonFeatureType.line:
final line = feature.geometry as GeoJsonLine;
unawaited(addLine(name: line.name, points: line.geoSerie.toLatLng()));
break;
case GeoJsonFeatureType.multiline:
final ml = feature.geometry as GeoJsonMultiLine;
for (final line in ml.lines) {
unawaited(
addLine(name: line.name, points: line.geoSerie.toLatLng()));
}
break;
case GeoJsonFeatureType.polygon:
final poly = feature.geometry as GeoJsonPolygon;
for (final geoSerie in poly.geoSeries) {
unawaited(
addPolygon(name: geoSerie.name, points: geoSerie.toLatLng()));
}
break;
case GeoJsonFeatureType.multipolygon:
final mp = feature.geometry as GeoJsonMultiPolygon;
for (final poly in mp.polygons) {
for (final geoSerie in poly.geoSeries) {
unawaited(
addPolygon(name: geoSerie.name, points: geoSerie.toLatLng()));
}
}
break;
case GeoJsonFeatureType.geometryCollection:
// TODO : implement
throw const NotImplementedException(
"GeoJsonFeatureType.geometryCollection Not implemented");
}
});
if (noIsolate) {
await geojson.parseInMainThread(data);
} else {
await geojson.parse(data);
}
}