Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions lib/app/map/_lib/managers/monitor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,8 @@ class MonitorMapLayerManager extends MapLayerManager {
Future<void> setup() async {
if (didSetup) return;

final colors = context.colors;

try {
final sources = await controller.getSourceIds();
final layers = await controller.getLayerIds();
Expand Down Expand Up @@ -213,9 +215,96 @@ class MonitorMapLayerManager extends MapLayerManager {
],
visibility: visible ? 'visible' : 'none',
);
final properties2 = SymbolLayerProperties(
textField: [
Expressions.format,
[Expressions.get, 'id'],
{
'text-font': [
Expressions.literal,
['Noto Sans TC Bold'],
],
},
'\n',
{},
[
Expressions.caseExpression,
[
Expressions.all,
[Expressions.has, 'city'],
[Expressions.has, 'town'],
],
[
Expressions.concat,
[Expressions.get, 'city'],
' ',
[Expressions.get, 'town'],
],
'海外測站'.i18n,
],
{
'text-font': [
Expressions.literal,
['Noto Sans TC Bold'],
],
},
'\n',
{},
[
Expressions.caseExpression,
[
Expressions.all,
[Expressions.has, 'i'],
[Expressions.has, 'pga'],
[Expressions.has, 'pgv'],
],
[
Expressions.concat,
[
Expressions.concat,
'即時震度:'.i18n,
[Expressions.get, 'i'],
],
'\n',
[
Expressions.concat,
'地動加速度:'.i18n,
[Expressions.get, 'pga'],
'gal',
],
'\n',
[
Expressions.concat,
'地動速度:'.i18n,
[Expressions.get, 'pgv'],
'cm/s',
],
],
'無資料'.i18n,
],
{},
],
textSize: 10,
textColor: colors.onSurfaceVariant.toHexStringRGB(),
textHaloColor: colors.outlineVariant.toHexStringRGB(),
textHaloWidth: 1,
textFont: ['Noto Sans TC Regular'],
textOffset: [0, 1],
textAnchor: 'top',
visibility: visible ? 'visible' : 'none',
);

await controller.addLayer(rtsSourceId, rtsLayerId, properties, belowLayerId: BaseMapLayerIds.userLocation);
TalkerManager.instance.info('Added Layer "$rtsLayerId"');

await controller.addLayer(
rtsSourceId,
'$rtsLayerId-label',
properties2,
belowLayerId: BaseMapLayerIds.userLocation,
minzoom: 10,
);
TalkerManager.instance.info('Added Layer "$rtsLayerId-label"');
}

// 2. Intensity0 图层
Expand Down Expand Up @@ -448,6 +537,7 @@ class MonitorMapLayerManager extends MapLayerManager {
final hasBox = GlobalProviders.data.rts?.box.isNotEmpty ?? false;

await controller.setLayerVisibility(rtsLayerId, !hasBox);
await controller.setLayerVisibility('$rtsLayerId-label', !hasBox);
await controller.setLayerVisibility(intensityLayerId, hasBox);
await controller.setLayerVisibility(intensity0LayerId, hasBox);
await controller.setLayerVisibility(boxLayerId, hasBox);
Expand Down Expand Up @@ -533,6 +623,7 @@ class MonitorMapLayerManager extends MapLayerManager {

// rts
await controller.setLayerVisibility(rtsLayerId, false);
await controller.setLayerVisibility('$rtsLayerId-label', false);

// intensity
await controller.setLayerVisibility(intensityLayerId, false);
Expand Down Expand Up @@ -569,6 +660,7 @@ class MonitorMapLayerManager extends MapLayerManager {
final hasBox = GlobalProviders.data.rts?.box.isNotEmpty ?? false;

await controller.setLayerVisibility(rtsLayerId, !hasBox);
await controller.setLayerVisibility('$rtsLayerId-label', !hasBox);

await controller.setLayerVisibility(intensityLayerId, hasBox);
await controller.setLayerVisibility(intensity0LayerId, hasBox);
Expand Down Expand Up @@ -606,6 +698,8 @@ class MonitorMapLayerManager extends MapLayerManager {
// rts
await controller.removeLayer(rtsLayerId);
TalkerManager.instance.info('Removed Layer "$rtsLayerId"');
await controller.removeLayer('$rtsLayerId-label');
TalkerManager.instance.info('Removed Layer "$rtsLayerId-label"');
await controller.removeSource(rtsSourceId);
TalkerManager.instance.info('Removed Source "$rtsSourceId"');

Expand Down
8 changes: 8 additions & 0 deletions lib/models/data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@ class DpipDataModel extends _DpipDataModel {
GeoJsonFeatureBuilder(GeoJsonFeatureType.Point)
..setGeometry(s.info.last.latlng.toGeoJsonCoordinates() as List<dynamic>)
..setId(int.parse(id))
..setProperty('id', id)
..setProperty('net', s.net)
..setProperty('code', s.info.last.code);

Expand All @@ -302,6 +303,13 @@ class DpipDataModel extends _DpipDataModel {
}
}

final location = Global.location['${s.info.last.code}'];
if (location != null) {
feature
..setProperty('city', location.city)
..setProperty('town', location.town);
}

builder.addFeature(feature);
}

Expand Down
2 changes: 1 addition & 1 deletion lib/widgets/map/map.dart
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ class DpipMapState extends State<DpipMap> {
final double adjustedZoomValue = adjustedZoom(widget.initialCameraPosition.zoom);

return MapLibreMap(
minMaxZoomPreference: widget.minMaxZoomPreference ?? const MinMaxZoomPreference(4, 12),
minMaxZoomPreference: widget.minMaxZoomPreference ?? const MinMaxZoomPreference(4, 15),
trackCameraPosition: true,
initialCameraPosition: CameraPosition(target: widget.initialCameraPosition.target, zoom: adjustedZoomValue),
styleString: styleAbsoluteFilePath!,
Expand Down
Loading