Skip to content
Snippets Groups Projects
Commit a3ef2ca7 authored by Sara Savanovic Djordjevic's avatar Sara Savanovic Djordjevic
Browse files

update: partial shape seleciton

parent 5311a658
No related branches found
No related tags found
1 merge request!7Clhp map
import 'dart:typed_data'; import 'dart:typed_data';
import '../marker_handler/marker_data.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_maps/maps.dart'; import 'package:syncfusion_flutter_maps/maps.dart';
import 'dart:math'; import 'dart:math';
import 'dart:convert'; import '../marker_handler/marker_data.dart';
/// A class containing thickness data for each subdivision of the map. /// A class containing thickness data for each subdivision of the map.
class IceThicknessModel { class IceThicknessModel {
IceThicknessModel(this.sub_div_id, this.thickness, this.color); IceThicknessModel(this.sub_div_id, this.thickness, this.color, this.isSelected);
final String sub_div_id; final String sub_div_id;
final int thickness; final int thickness;
final Color color; Color color;
bool isSelected;
} }
/// ChoroplethMap is a stateful widget that contains a choropleth map. /// ChoroplethMap is a stateful widget that contains a choropleth map.
/// The map is created using the Syncfusion Flutter Maps library and /// The map is created using the Syncfusion Flutter Maps library and
/// coordinates fetched from the server. /// coordinates fetched from the server.
class ChoroplethMap extends StatefulWidget { class ChoroplethMap extends StatefulWidget {
const ChoroplethMap({Key? key, const ChoroplethMap({
Key? key,
required this.relation, required this.relation,
required this.measurements required this.measurements,
}) : super(key: key); }) : super(key: key);
final Uint8List relation; final Uint8List relation;
...@@ -31,11 +32,10 @@ class ChoroplethMap extends StatefulWidget { ...@@ -31,11 +32,10 @@ class ChoroplethMap extends StatefulWidget {
} }
class _ChoroplethMapState extends State<ChoroplethMap> { class _ChoroplethMapState extends State<ChoroplethMap> {
int selectedIndex = -1;
late MapShapeSource mapShapeSource; late MapShapeSource mapShapeSource;
late final MapZoomPanBehavior _zoomPanBehavior = MapZoomPanBehavior(); late final MapZoomPanBehavior _zoomPanBehavior = MapZoomPanBehavior();
List<IceThicknessModel> iceThicknessList = <IceThicknessModel>[]; List<IceThicknessModel> iceThicknessList = <IceThicknessModel>[];
List<Color> testColors = [ // NB test color List<Color> testColors = [
const Color(0xff8a003b), const Color(0xff8a003b),
const Color(0xff8a4300), const Color(0xff8a4300),
const Color(0xff8a7a00), const Color(0xff8a7a00),
...@@ -53,7 +53,7 @@ class _ChoroplethMapState extends State<ChoroplethMap> { ...@@ -53,7 +53,7 @@ class _ChoroplethMapState extends State<ChoroplethMap> {
Color randomColor = testColors[ran]; Color randomColor = testColors[ran];
int randomNumber = random.nextInt(21); // 0 -> 20, NB: temp test data int randomNumber = random.nextInt(21); // 0 -> 20, NB: temp test data
iceThicknessList.add(IceThicknessModel(i.toString(), randomNumber, randomColor)); iceThicknessList.add(IceThicknessModel(i.toString(), randomNumber, randomColor, false));
} }
} }
...@@ -64,29 +64,23 @@ class _ChoroplethMapState extends State<ChoroplethMap> { ...@@ -64,29 +64,23 @@ class _ChoroplethMapState extends State<ChoroplethMap> {
SfMaps( SfMaps(
layers: [ layers: [
MapShapeLayer( MapShapeLayer(
source: MapShapeSource.memory( // Map polygon source: MapShapeSource.memory(
widget.relation, // JSON coordinates from server widget.relation,
shapeDataField: 'sub_div_id', shapeDataField: 'sub_div_id',
dataCount: iceThicknessList.length, dataCount: iceThicknessList.length,
primaryValueMapper: (int index) => iceThicknessList[index].sub_div_id, primaryValueMapper: (int index) => iceThicknessList[index].sub_div_id,
shapeColorValueMapper: (int index) => iceThicknessList[index].color, shapeColorValueMapper: (int index) => iceThicknessList[index].color,
), ),
//color: Colors.blue.shade400, // Map color
zoomPanBehavior: _zoomPanBehavior, zoomPanBehavior: _zoomPanBehavior,
strokeColor: Colors.black, strokeColor: Colors.black,
// Shape selection
selectedIndex: selectedIndex,
onSelectionChanged: (int index) { onSelectionChanged: (int index) {
setState(() { setState(() {
selectedIndex = index; for (int i = 0; i < iceThicknessList.length; i++) {
iceThicknessList[i].isSelected = i == index;
iceThicknessList[i].color = i == index ? Colors.red : iceThicknessList[i].color;
}
}); });
print("Selection triggered");
}, },
selectionSettings: MapSelectionSettings(
color: Colors.orange,
strokeColor: Colors.red[900],
strokeWidth: 3,
),
), ),
], ],
), ),
...@@ -94,4 +88,3 @@ class _ChoroplethMapState extends State<ChoroplethMap> { ...@@ -94,4 +88,3 @@ class _ChoroplethMapState extends State<ChoroplethMap> {
); );
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment