From 326f6bde8689a4c9d8c1395c4e8ea340905167bd Mon Sep 17 00:00:00 2001 From: Kamiya Date: Sun, 10 Aug 2025 22:58:18 +0800 Subject: [PATCH 1/4] feat: map style --- lib/app/map/page.dart | 28 +- lib/utils/extensions/maplibre.dart | 34 + lib/widgets/map/map.dart | 214 ++---- lib/widgets/map/style.dart | 1123 ++++++++++++++++++++++++++++ pubspec.lock | 10 +- pubspec.yaml | 1 + 6 files changed, 1217 insertions(+), 193 deletions(-) create mode 100644 lib/utils/extensions/maplibre.dart create mode 100644 lib/widgets/map/style.dart diff --git a/lib/app/map/page.dart b/lib/app/map/page.dart index a20936a7c..0c536b632 100644 --- a/lib/app/map/page.dart +++ b/lib/app/map/page.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:dpip/utils/extensions/maplibre.dart'; import 'package:flutter/material.dart'; import 'package:maplibre_gl/maplibre_gl.dart'; @@ -223,32 +224,10 @@ class _MapPageState extends State with TickerProviderStateMixin { setState(() => _activeLayers = newLayers); } - void _hideBaseMapLayers() { - _controller.setLayerVisibility(BaseMapLayerIds.exptechGlobalFill, false); - _controller.setLayerVisibility(BaseMapLayerIds.exptechTownFill, false); - _controller.setLayerVisibility(BaseMapLayerIds.exptechCountyFill, false); - _controller.setLayerVisibility(BaseMapLayerIds.osmGlobalRaster, false); - _controller.setLayerVisibility(BaseMapLayerIds.googleGlobalRaster, false); - } - Future setBaseMapType(BaseMapType baseMapType) async { if (!mounted) return; - _hideBaseMapLayers(); - - switch (baseMapType) { - case BaseMapType.exptech: - await _controller.setLayerVisibility(BaseMapLayerIds.exptechGlobalFill, true); - await _controller.setLayerVisibility(BaseMapLayerIds.exptechTownFill, true); - await _controller.setLayerVisibility(BaseMapLayerIds.exptechCountyFill, true); - await _controller.setLayerVisibility(BaseMapLayerIds.exptechCountyOutline, true); - - case BaseMapType.osm: - await _controller.setLayerVisibility(BaseMapLayerIds.osmGlobalRaster, true); - - case BaseMapType.google: - await _controller.setLayerVisibility(BaseMapLayerIds.googleGlobalRaster, true); - } + await _controller.setBaseMap(baseMapType); setState(() => _baseMapType = baseMapType); } @@ -283,7 +262,6 @@ class _MapPageState extends State with TickerProviderStateMixin { _setupWeatherLayerTimeSync(); - setBaseMapType(_baseMapType); setLayers(_activeLayers); } @@ -299,7 +277,7 @@ class _MapPageState extends State with TickerProviderStateMixin { return Scaffold( body: Stack( children: [ - DpipMap(onMapCreated: onMapCreated), + DpipMap(baseMapType: _baseMapType, onMapCreated: onMapCreated), PositionedLayerButton( activeLayers: _activeLayers, currentBaseMap: _baseMapType, diff --git a/lib/utils/extensions/maplibre.dart b/lib/utils/extensions/maplibre.dart new file mode 100644 index 000000000..f8ab01564 --- /dev/null +++ b/lib/utils/extensions/maplibre.dart @@ -0,0 +1,34 @@ +import 'package:maplibre_gl/maplibre_gl.dart'; + +import 'package:dpip/widgets/map/map.dart'; + +extension MapLibreMapControllerExtension on MapLibreMapController { + Future setBaseMap(BaseMapType baseMapType) async { + await Future.wait([ + setOSMVisibility(baseMapType == BaseMapType.osm), + setGoogleVisibility(baseMapType == BaseMapType.google), + setExptechVisibility(baseMapType == BaseMapType.exptech), + ]); + } + + Future setOSMVisibility(bool visible) async { + final layers = (await getLayerIds()).cast(); + final osmLayers = layers.where((v) => v.startsWith('osm-')); + + await Future.wait(osmLayers.map((v) => setLayerVisibility(v, visible))); + } + + Future setGoogleVisibility(bool visible) async { + final layers = (await getLayerIds()).cast(); + final googleLayers = layers.where((v) => v.startsWith('google-')); + + await Future.wait(googleLayers.map((v) => setLayerVisibility(v, visible))); + } + + Future setExptechVisibility(bool visible) async { + final layers = (await getLayerIds()).cast(); + final exptechLayers = layers.where((v) => v.startsWith('exptech-')); + + await Future.wait(exptechLayers.map((v) => setLayerVisibility(v, visible))); + } +} diff --git a/lib/widgets/map/map.dart b/lib/widgets/map/map.dart index 3ac70774f..d8c7ecb8d 100644 --- a/lib/widgets/map/map.dart +++ b/lib/widgets/map/map.dart @@ -1,18 +1,17 @@ -import 'dart:convert'; import 'dart:io'; import 'dart:math'; +import 'package:flutter/material.dart'; + +import 'package:maplibre_gl/maplibre_gl.dart'; + import 'package:dpip/core/ios_get_location.dart'; import 'package:dpip/core/providers.dart'; import 'package:dpip/utils/constants.dart'; -import 'package:dpip/utils/extensions/build_context.dart'; import 'package:dpip/utils/extensions/latlng.dart'; import 'package:dpip/utils/geojson.dart'; import 'package:dpip/utils/log.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; -import 'package:maplibre_gl/maplibre_gl.dart'; -import 'package:path_provider/path_provider.dart'; +import 'package:dpip/widgets/map/style.dart'; enum BaseMapType { exptech, osm, google } @@ -36,9 +35,6 @@ class BaseMapLayerIds { static const exptechCountyFill = 'exptech-county'; static const exptechCountyOutline = 'exptech-county-outline'; - static const osmGlobalRaster = 'osm-global'; - static const googleGlobalRaster = 'google-global'; - static const userLocation = 'user-location'; static Iterable values() sync* { @@ -72,11 +68,12 @@ class DpipMap extends StatefulWidget { final bool focusUserLocationOnValueUpdate; static const kTaiwanCenter = LatLng(23.60, 120.85); + static const kTaiwanZoom = 6.4; const DpipMap({ super.key, this.baseMapType = BaseMapType.exptech, - this.initialCameraPosition = const CameraPosition(target: kTaiwanCenter, zoom: 6.4), + this.initialCameraPosition = const CameraPosition(target: kTaiwanCenter, zoom: kTaiwanZoom), this.onMapCreated, this.onMapClick, this.onMapIdle, @@ -94,106 +91,8 @@ class DpipMap extends StatefulWidget { @override State createState() => DpipMapState(); -} -class DpipMapState extends State { - String _getStyleJson(String spritePath) { - final colors = context.colors; - - return jsonEncode({ - 'version': 8, - 'name': 'ExpTech Studio', - 'center': [120.85, 23.10], - 'zoom': 6.2, - 'sources': { - 'map': { - 'type': 'vector', - 'url': 'https://lb.exptech.dev/api/v1/map/tiles/tiles.json', - 'tileSize': 512, - 'buffer': 64, - }, - 'osm': { - 'type': 'raster', - 'tiles': ['https://tile.openstreetmap.org/{z}/{x}/{y}.png'], - 'tileSize': 256, - 'attribution': '© OpenStreetMap Contributors', - 'maxzoom': 19, - }, - 'google': { - 'type': 'raster', - 'tiles': ['https://mts1.google.com/vt/lyrs=p&hl=zh-TW&x={x}&y={y}&z={z}'], - 'tileSize': 256, - 'attribution': '© Google Maps', - 'maxzoom': 19, - }, - }, - 'sprite': spritePath, - 'glyphs': 'https://cdn.jsdelivr.net/gh/exptechtw/map-glyph/{fontstack}/{range}.pbf', - 'layers': [ - { - 'id': 'background', - 'type': 'background', - 'paint': {'background-color': colors.surface.toHexStringRGB()}, - }, - { - 'id': BaseMapLayerIds.osmGlobalRaster, - 'type': 'raster', - 'source': 'osm', - 'layout': {'visibility': widget.baseMapType == BaseMapType.osm ? 'visible' : 'none'}, - }, - { - 'id': BaseMapLayerIds.googleGlobalRaster, - 'type': 'raster', - 'source': 'google', - 'layout': {'visibility': widget.baseMapType == BaseMapType.google ? 'visible' : 'none'}, - }, - { - 'id': BaseMapLayerIds.exptechGlobalFill, - 'type': 'fill', - 'source': 'map', - 'source-layer': 'global', - 'paint': {'fill-color': colors.surfaceContainer.toHexStringRGB(), 'fill-opacity': 1}, - 'layout': {'visibility': widget.baseMapType == BaseMapType.exptech ? 'visible' : 'none'}, - }, - { - 'id': BaseMapLayerIds.exptechCountyFill, - 'type': 'fill', - 'source': 'map', - 'source-layer': 'city', - 'paint': {'fill-color': colors.surfaceContainerHigh.toHexStringRGB(), 'fill-opacity': 1}, - 'layout': {'visibility': widget.baseMapType == BaseMapType.exptech ? 'visible' : 'none'}, - }, - { - 'id': BaseMapLayerIds.exptechTownFill, - 'type': 'fill', - 'source': 'map', - 'source-layer': 'town', - 'paint': {'fill-color': colors.surfaceContainerHigh.toHexStringRGB(), 'fill-opacity': 1}, - 'layout': {'visibility': widget.baseMapType == BaseMapType.exptech ? 'visible' : 'none'}, - }, - { - 'id': BaseMapLayerIds.exptechCountyOutline, - 'source': 'map', - 'source-layer': 'city', - 'type': 'line', - 'paint': {'line-color': colors.outline.toHexStringRGB()}, - 'layout': {'visibility': 'visible'}, - }, - { - 'id': 'tsunami', - 'type': 'line', - 'source': 'map', - 'source-layer': 'tsunami', - 'paint': {'line-opacity': 0, 'line-width': 3, 'line-join': 'round'}, - }, - ], - }); - } - - MapLibreMapController? _controller; - String? styleAbsoluteFilePath; - - double adjustedZoom(double zoom) { + static double adjustedZoom(BuildContext context, double zoom) { final double devicePixelRatio = MediaQuery.of(context).devicePixelRatio; const double baseZoomAdjustment = 1.0; const double mediumZoomAdjustment = 0.3; @@ -208,6 +107,11 @@ class DpipMapState extends State { return zoom + baseZoomAdjustment; } } +} + +class DpipMapState extends State { + MapLibreMapController? _controller; + late Future styleAbsoluteFilePath = MapStyle(context, baseMap: widget.baseMapType).save(); Future _updateUserLocation() async { if (!mounted) return; @@ -286,69 +190,45 @@ class DpipMapState extends State { super.initState(); GlobalProviders.location.$coordinates.addListener(_updateUserLocation); - - getApplicationDocumentsDirectory().then((dir) async { - final documentDir = dir.path; - final mapDir = '$documentDir/map'; - - await Directory(mapDir).create(recursive: true); - - // Copy sprite.png - final spritePngData = await rootBundle.load('assets/sprites.png'); - final spritePngFile = File('$mapDir/sprites.png'); - await spritePngFile.writeAsBytes(spritePngData.buffer.asUint8List()); - final spritePngFile2x = File('$mapDir/sprites@2x.png'); - await spritePngFile2x.writeAsBytes(spritePngData.buffer.asUint8List()); - - // Copy sprite.json - final spriteJsonData = await rootBundle.load('assets/sprites.json'); - final spriteJsonFile = File('$mapDir/sprites.json'); - await spriteJsonFile.writeAsBytes(spriteJsonData.buffer.asUint8List()); - final spriteJsonFile2x = File('$mapDir/sprites@2x.json'); - await spriteJsonFile2x.writeAsBytes(spriteJsonData.buffer.asUint8List()); - - final spriteUri = '${spriteJsonFile.parent.uri}sprites'; - TalkerManager.instance.info('Sprite is $spriteUri'); - - // Create style.json - final styleJsonData = _getStyleJson(spriteUri); - final styleJsonFile = File('$mapDir/style.json'); - await styleJsonFile.writeAsString(styleJsonData); - - setState(() => styleAbsoluteFilePath = styleJsonFile.uri.toFilePath()); - }); } @override Widget build(BuildContext context) { - if (styleAbsoluteFilePath == null) { - return const Center(child: CircularProgressIndicator()); - } + final double adjustedZoomValue = DpipMap.adjustedZoom(context, widget.initialCameraPosition.zoom); - final double adjustedZoomValue = adjustedZoom(widget.initialCameraPosition.zoom); - - return MapLibreMap( - minMaxZoomPreference: widget.minMaxZoomPreference ?? const MinMaxZoomPreference(4, 12.5), - trackCameraPosition: true, - initialCameraPosition: CameraPosition(target: widget.initialCameraPosition.target, zoom: adjustedZoomValue), - styleString: styleAbsoluteFilePath!, - tiltGesturesEnabled: widget.tiltGesturesEnabled ?? false, - scrollGesturesEnabled: widget.scrollGesturesEnabled ?? true, - rotateGesturesEnabled: widget.rotateGesturesEnabled ?? false, - zoomGesturesEnabled: widget.zoomGesturesEnabled ?? true, - doubleClickZoomEnabled: widget.doubleClickZoomEnabled ?? true, - dragEnabled: widget.dragEnabled ?? true, - attributionButtonMargins: const Point(-100, -100), - onMapCreated: (controller) { - _controller = controller; - widget.onMapCreated?.call(controller); - }, - onMapClick: widget.onMapClick, - onMapIdle: widget.onMapIdle, - onMapLongClick: widget.onMapLongClick, - onStyleLoadedCallback: () { - _initMap(); - widget.onStyleLoadedCallback?.call(); + return FutureBuilder( + future: styleAbsoluteFilePath, + builder: (context, snapshot) { + final styleString = snapshot.data; + + if (styleString == null) { + return const Center(child: CircularProgressIndicator()); + } + + return MapLibreMap( + minMaxZoomPreference: widget.minMaxZoomPreference ?? const MinMaxZoomPreference(4, 12.5), + trackCameraPosition: true, + initialCameraPosition: CameraPosition(target: widget.initialCameraPosition.target, zoom: adjustedZoomValue), + styleString: styleString, + tiltGesturesEnabled: widget.tiltGesturesEnabled ?? false, + scrollGesturesEnabled: widget.scrollGesturesEnabled ?? true, + rotateGesturesEnabled: widget.rotateGesturesEnabled ?? false, + zoomGesturesEnabled: widget.zoomGesturesEnabled ?? true, + doubleClickZoomEnabled: widget.doubleClickZoomEnabled ?? true, + dragEnabled: widget.dragEnabled ?? true, + attributionButtonMargins: const Point(-100, -100), + onMapCreated: (controller) { + _controller = controller; + widget.onMapCreated?.call(controller); + }, + onMapClick: widget.onMapClick, + onMapIdle: widget.onMapIdle, + onMapLongClick: widget.onMapLongClick, + onStyleLoadedCallback: () { + _initMap(); + widget.onStyleLoadedCallback?.call(); + }, + ); }, ); } diff --git a/lib/widgets/map/style.dart b/lib/widgets/map/style.dart new file mode 100644 index 000000000..da84211f1 --- /dev/null +++ b/lib/widgets/map/style.dart @@ -0,0 +1,1123 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:flutter/material.dart'; + +import 'package:crypto/crypto.dart'; +import 'package:maplibre_gl/maplibre_gl.dart'; +import 'package:path_provider/path_provider.dart'; + +import 'package:dpip/utils/extensions/build_context.dart'; +import 'package:dpip/utils/extensions/latlng.dart'; +import 'package:dpip/widgets/map/map.dart'; + +class MapStyle { + late Map json; + + MapStyle(BuildContext context, {required BaseMapType baseMap}) { + json = { + 'version': 8, + 'name': 'DPIP Map', + 'center': DpipMap.kTaiwanCenter.asGeoJsonCooridnate, + 'zoom': DpipMap.adjustedZoom(context, DpipMap.kTaiwanZoom), + 'font-faces': { + 'Noto Sans TC Regular': + 'https://cdn.jsdelivr.net/gh/notofonts/noto-cjk/blob/Sans/OTF/TraditionalChinese/NotoSansCJKtc-Regular.otf', + 'Noto Sans TC Bold': + 'https://cdn.jsdelivr.net/gh/notofonts/noto-cjk/blob/Sans/OTF/TraditionalChinese/NotoSansCJKtc-Bold.otf', + }, + 'glyphs': 'https://cdn.jsdelivr.net/gh/exptechtw/map-assets/{fontstack}/{range}.pbf', + 'sprite': 'https://cdn.jsdelivr.net/gh/exptechtw/map-assets/sprites', + 'sources': {...osmSource(), ...googleSource(), ...exptechSource()}, + 'layers': [ + background(context.colors), + ...osmLayers(context.colors, visible: baseMap == BaseMapType.osm), + ...googleLayers(visible: baseMap == BaseMapType.google), + ...exptechLayers(context.colors, visible: baseMap == BaseMapType.exptech), + ], + }; + } + + Future save() async { + final cache = await getApplicationCacheDirectory(); + final cachePath = cache.path; + + final data = jsonEncode(json); + final hash = md5.convert(utf8.encode(data)).toString(); + + final styleJsonFile = File('$cachePath/map-$hash.json'); + + if (!styleJsonFile.existsSync()) { + await styleJsonFile.writeAsString(data); + } + + return styleJsonFile.path; + } + + static Map osmSource() => { + 'ne2_shaded': { + 'maxzoom': 6, + 'tileSize': 256, + 'tiles': ['https://tiles.openfreemap.org/natural_earth/ne2sr/{z}/{x}/{y}.png'], + 'type': 'raster', + }, + 'openmaptiles': {'type': 'vector', 'url': 'https://tiles.openfreemap.org/planet', 'volatile': true}, + }; + + static Map background(ColorScheme colors) => { + 'id': 'background', + 'type': 'background', + 'layout': {'visibility': 'visible'}, + 'paint': {'background-color': colors.surface.toHexStringRGB()}, + }; + + static List> osmLayers(ColorScheme colors, {bool visible = false}) => [ + { + 'id': 'osm-background', + 'type': 'background', + 'layout': {'visibility': visible ? 'visible' : 'none'}, + 'paint': {'background-color': colors.surfaceContainerHigh.toHexStringRGB()}, + }, + { + 'id': 'osm-landcover-glacier', + 'type': 'fill', + 'source': 'openmaptiles', + 'source-layer': 'landcover', + 'filter': [ + '==', + ['get', 'subclass'], + 'glacier', + ], + 'paint': { + 'fill-color': '#fff', + 'fill-opacity': [ + 'interpolate', + ['linear'], + ['zoom'], + 0, + 0.9, + 10, + 0.3, + ], + }, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-park', + 'type': 'fill', + 'source': 'openmaptiles', + 'source-layer': 'park', + 'filter': [ + 'match', + ['geometry-type'], + ['MultiPolygon', 'Polygon'], + true, + false, + ], + 'paint': { + 'fill-color': '#d8e8c8', + 'fill-opacity': [ + 'interpolate', + ['exponential', 1.8], + ['zoom'], + 9, + if (colors.brightness == Brightness.dark) 0.05 else 0.6, + 12, + if (colors.brightness == Brightness.dark) 0.004 else 0.25, + ], + }, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-landcover-wood', + 'type': 'fill', + 'source': 'openmaptiles', + 'source-layer': 'landcover', + 'filter': [ + '==', + ['get', 'class'], + 'wood', + ], + 'paint': { + 'fill-antialias': [ + 'step', + ['zoom'], + false, + 9, + true, + ], + 'fill-color': '#66aa44', + 'fill-opacity': 0.1, + }, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-landcover-grass', + 'type': 'fill', + 'source': 'openmaptiles', + 'source-layer': 'landcover', + 'filter': [ + '==', + ['get', 'class'], + 'grass', + ], + 'paint': {'fill-color': '#d8e8c8', 'fill-opacity': colors.brightness == Brightness.dark ? 0.4 : 1}, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-landcover-grass-park', + 'type': 'fill', + 'source': 'openmaptiles', + 'source-layer': 'park', + 'filter': [ + '==', + ['get', 'class'], + 'public_park', + ], + 'paint': {'fill-color': '#d8e8c8', 'fill-opacity': colors.brightness == Brightness.dark ? 0.4 : 0.8}, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-waterway_tunnel', + 'type': 'line', + 'source': 'openmaptiles', + 'source-layer': 'waterway', + 'minzoom': 14, + 'filter': [ + 'all', + [ + 'match', + ['get', 'class'], + ['canal', 'river', 'stream'], + true, + false, + ], + [ + '==', + ['get', 'brunnel'], + 'tunnel', + ], + ], + 'paint': { + 'line-color': '#a0c8f0', + 'line-opacity': colors.brightness == Brightness.dark ? 0.4 : 1, + 'line-dasharray': [2, 4], + 'line-width': [ + 'interpolate', + ['exponential', 1.3], + ['zoom'], + 13, + 0.5, + 20, + 6, + ], + }, + 'layout': {'line-cap': 'round', 'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-waterway-other', + 'type': 'line', + 'source': 'openmaptiles', + 'source-layer': 'waterway', + 'filter': [ + 'all', + [ + 'match', + ['get', 'class'], + ['canal', 'river', 'stream'], + false, + true, + ], + [ + '==', + ['get', 'intermittent'], + 0, + ], + ], + 'paint': { + 'line-color': '#a0c8f0', + 'line-opacity': colors.brightness == Brightness.dark ? 0.4 : 1, + 'line-width': [ + 'interpolate', + ['exponential', 1.3], + ['zoom'], + 13, + 0.5, + 20, + 2, + ], + }, + 'layout': {'line-cap': 'round', 'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-waterway-other-intermittent', + 'type': 'line', + 'source': 'openmaptiles', + 'source-layer': 'waterway', + 'filter': [ + 'all', + [ + 'match', + ['get', 'class'], + ['canal', 'river', 'stream'], + false, + true, + ], + [ + '==', + ['get', 'intermittent'], + 1, + ], + ], + 'paint': { + 'line-color': '#a0c8f0', + 'line-opacity': colors.brightness == Brightness.dark ? 0.4 : 1, + 'line-dasharray': [4, 3], + 'line-width': [ + 'interpolate', + ['exponential', 1.3], + ['zoom'], + 13, + 0.5, + 20, + 2, + ], + }, + 'layout': {'line-cap': 'round', 'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-waterway-stream-canal', + 'type': 'line', + 'source': 'openmaptiles', + 'source-layer': 'waterway', + 'filter': [ + 'all', + [ + 'match', + ['get', 'class'], + ['canal', 'stream'], + true, + false, + ], + [ + '!=', + ['get', 'brunnel'], + 'tunnel', + ], + [ + '==', + ['get', 'intermittent'], + 0, + ], + ], + 'paint': { + 'line-color': '#a0c8f0', + 'line-opacity': colors.brightness == Brightness.dark ? 0.4 : 1, + 'line-width': [ + 'interpolate', + ['exponential', 1.3], + ['zoom'], + 13, + 0.5, + 20, + 6, + ], + }, + 'layout': {'line-cap': 'round', 'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-waterway-stream-canal-intermittent', + 'type': 'line', + 'source': 'openmaptiles', + 'source-layer': 'waterway', + 'filter': [ + 'all', + [ + 'match', + ['get', 'class'], + ['canal', 'stream'], + true, + false, + ], + [ + '!=', + ['get', 'brunnel'], + 'tunnel', + ], + [ + '==', + ['get', 'intermittent'], + 1, + ], + ], + 'paint': { + 'line-color': '#a0c8f0', + 'line-opacity': colors.brightness == Brightness.dark ? 0.4 : 1, + 'line-dasharray': [4, 3], + 'line-width': [ + 'interpolate', + ['exponential', 1.3], + ['zoom'], + 13, + 0.5, + 20, + 6, + ], + }, + 'layout': {'line-cap': 'round', 'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-waterway-river', + 'type': 'line', + 'source': 'openmaptiles', + 'source-layer': 'waterway', + 'filter': [ + 'all', + [ + '==', + ['get', 'class'], + 'river', + ], + [ + '!=', + ['get', 'brunnel'], + 'tunnel', + ], + [ + '!=', + ['get', 'intermittent'], + 1, + ], + ], + 'paint': { + 'line-color': '#a0c8f0', + 'line-opacity': colors.brightness == Brightness.dark ? 0.4 : 1, + 'line-width': [ + 'interpolate', + ['exponential', 1.2], + ['zoom'], + 10, + 0.8, + 20, + 6, + ], + }, + 'layout': {'line-cap': 'round', 'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-waterway-river-intermittent', + 'type': 'line', + 'source': 'openmaptiles', + 'source-layer': 'waterway', + 'filter': [ + 'all', + [ + '==', + ['get', 'class'], + 'river', + ], + [ + '!=', + ['get', 'brunnel'], + 'tunnel', + ], + [ + '==', + ['get', 'intermittent'], + 1, + ], + ], + 'paint': { + 'line-color': '#a0c8f0', + 'line-opacity': colors.brightness == Brightness.dark ? 0.4 : 1, + 'line-dasharray': [3, 2.5], + 'line-width': [ + 'interpolate', + ['exponential', 1.2], + ['zoom'], + 10, + 0.8, + 20, + 6, + ], + }, + 'layout': {'line-cap': 'round', 'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-water', + 'type': 'fill', + 'source': 'openmaptiles', + 'source-layer': 'water', + 'filter': [ + 'all', + [ + '!=', + ['get', 'intermittent'], + 1, + ], + [ + '!=', + ['get', 'brunnel'], + 'tunnel', + ], + ], + 'paint': {'fill-color': colors.brightness == Brightness.dark ? colors.surface.toHexStringRGB() : '#AECFE2'}, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-water-intermittent', + 'type': 'fill', + 'source': 'openmaptiles', + 'source-layer': 'water', + 'filter': [ + '==', + ['get', 'intermittent'], + 1, + ], + 'paint': {'fill-color': '#CFE6F7', 'fill-opacity': colors.brightness == Brightness.dark ? 0.3 : 0.7}, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-landcover-ice-shelf', + 'type': 'fill', + 'source': 'openmaptiles', + 'source-layer': 'landcover', + 'filter': [ + '==', + ['get', 'subclass'], + 'ice_shelf', + ], + 'paint': { + 'fill-color': colors.brightness == Brightness.dark ? colors.surfaceContainerHigh.toHexStringRGB() : '#fff', + 'fill-opacity': [ + 'interpolate', + ['linear'], + ['zoom'], + 0, + 0.9, + 10, + 0.3, + ], + }, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-landcover-sand', + 'type': 'fill', + 'source': 'openmaptiles', + 'source-layer': 'landcover', + 'filter': [ + '==', + ['get', 'class'], + 'sand', + ], + 'paint': {'fill-color': '#f5eebc', 'fill-opacity': colors.brightness == Brightness.dark ? 0.6 : 1}, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-boundary_3', + 'type': 'line', + 'source': 'openmaptiles', + 'source-layer': 'boundary', + 'minzoom': 4, + 'filter': [ + 'all', + [ + '>=', + ['get', 'admin_level'], + 3, + ], + [ + '<=', + ['get', 'admin_level'], + 6, + ], + [ + '!=', + ['get', 'maritime'], + 1, + ], + [ + '!=', + ['get', 'disputed'], + 1, + ], + [ + '!', + ['has', 'claimed_by'], + ], + ], + 'paint': { + 'line-color': colors.outline.toHexStringRGB(), + 'line-dasharray': [1, 1], + 'line-width': [ + 'interpolate', + ['linear', 1], + ['zoom'], + 7, + 1, + 11, + 2, + ], + }, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-boundary_2', + 'type': 'line', + 'source': 'openmaptiles', + 'source-layer': 'boundary', + 'filter': [ + 'all', + [ + '==', + ['get', 'admin_level'], + 2, + ], + [ + '!=', + ['get', 'maritime'], + 1, + ], + [ + '!=', + ['get', 'disputed'], + 1, + ], + [ + '!', + ['has', 'claimed_by'], + ], + ], + 'paint': { + 'line-color': colors.outlineVariant.toHexStringRGB(), + 'line-opacity': [ + 'interpolate', + ['linear'], + ['zoom'], + 0, + 0.4, + 4, + 1, + ], + 'line-width': [ + 'interpolate', + ['linear'], + ['zoom'], + 3, + 1, + 5, + 1.2, + 12, + 3, + ], + }, + 'layout': {'line-cap': 'round', 'line-join': 'round', 'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-boundary_disputed', + 'type': 'line', + 'source': 'openmaptiles', + 'source-layer': 'boundary', + 'filter': [ + 'all', + [ + '!=', + ['get', 'maritime'], + 1, + ], + [ + '==', + ['get', 'disputed'], + 1, + ], + ], + 'paint': { + 'line-color': colors.outlineVariant.toHexStringRGB(), + 'line-dasharray': [1, 2], + 'line-width': [ + 'interpolate', + ['linear'], + ['zoom'], + 3, + 1, + 5, + 1.2, + 12, + 3, + ], + }, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': 'osm-waterway_line_label', + 'type': 'symbol', + 'source': 'openmaptiles', + 'source-layer': 'waterway', + 'minzoom': 10, + 'filter': [ + 'match', + ['geometry-type'], + ['LineString', 'MultiLineString'], + true, + false, + ], + 'paint': { + 'text-color': '#74aee9', + 'text-halo-color': colors.outlineVariant.toHexStringRGB(), + 'text-halo-width': 1.5, + }, + 'layout': { + 'symbol-placement': 'line', + 'symbol-spacing': 350, + 'text-field': [ + 'coalesce', + ['get', 'name:nonlatin'], + ['get', 'name'], + ], + 'text-font': ['Noto Sans TC Regular'], + 'text-letter-spacing': 0.2, + 'text-max-width': 5, + 'text-size': 14, + 'visibility': visible ? 'visible' : 'none', + }, + }, + { + 'id': 'osm-water_name_line_label', + 'type': 'symbol', + 'source': 'openmaptiles', + 'source-layer': 'water_name', + 'filter': [ + 'match', + ['geometry-type'], + ['LineString', 'MultiLineString'], + true, + false, + ], + 'paint': { + 'text-color': '#495e91', + 'text-halo-color': colors.outlineVariant.toHexStringRGB(), + 'text-halo-width': 1.5, + }, + 'layout': { + 'symbol-placement': 'line', + 'symbol-spacing': 350, + 'text-field': [ + 'coalesce', + ['get', 'name:nonlatin'], + ['get', 'name'], + ], + 'text-font': ['Noto Sans TC Regular'], + 'text-letter-spacing': 0.2, + 'text-max-width': 5, + 'text-size': 14, + 'visibility': visible ? 'visible' : 'none', + }, + }, + { + 'id': 'osm-label_country_2', + 'type': 'symbol', + 'source': 'openmaptiles', + 'source-layer': 'place', + 'maxzoom': 9, + 'filter': [ + 'all', + [ + '==', + ['get', 'class'], + 'country', + ], + [ + '==', + ['get', 'rank'], + 2, + ], + ], + 'paint': { + 'text-color': colors.onSurface.toHexStringRGB(), + 'text-halo-blur': 1, + 'text-halo-color': colors.outlineVariant.toHexStringRGB(), + 'text-halo-width': 1, + }, + 'layout': { + 'text-field': [ + 'coalesce', + ['get', 'name:nonlatin'], + ['get', 'name'], + ], + 'text-font': ['Noto Sans TC Bold'], + 'text-max-width': 6.25, + 'text-size': [ + 'interpolate', + ['linear'], + ['zoom'], + 2, + 9, + 5, + 17, + ], + 'visibility': visible ? 'visible' : 'none', + }, + }, + { + 'id': 'osm-label_town', + 'type': 'symbol', + 'source': 'openmaptiles', + 'source-layer': 'place', + 'minzoom': 6, + 'filter': [ + '==', + ['get', 'class'], + 'town', + ], + 'paint': { + 'text-color': colors.onSurface.toHexStringRGB(), + 'text-halo-blur': 1, + 'text-halo-color': colors.outlineVariant.toHexStringRGB(), + 'text-halo-width': 1, + }, + 'layout': { + 'icon-allow-overlap': true, + 'icon-image': [ + 'step', + ['zoom'], + 'circle_11_black', + 10, + '', + ], + 'icon-optional': false, + 'icon-size': 0.2, + 'text-anchor': 'bottom', + 'text-field': [ + 'coalesce', + ['get', 'name:nonlatin'], + ['get', 'name'], + ], + 'text-font': ['Noto Sans TC Regular'], + 'text-max-width': 8, + 'text-size': [ + 'interpolate', + ['exponential', 1.2], + ['zoom'], + 7, + 12, + 11, + 14, + ], + 'visibility': visible ? 'visible' : 'none', + }, + }, + { + 'id': 'osm-label_state', + 'type': 'symbol', + 'source': 'openmaptiles', + 'source-layer': 'place', + 'minzoom': 5, + 'maxzoom': 8, + 'filter': [ + '==', + ['get', 'class'], + 'state', + ], + 'paint': { + 'text-color': colors.onSurfaceVariant.toHexStringRGB(), + 'text-halo-blur': 1, + 'text-halo-color': colors.outlineVariant.toHexStringRGB(), + 'text-halo-width': 1, + }, + 'layout': { + 'text-field': [ + 'coalesce', + ['get', 'name:nonlatin'], + ['get', 'name'], + ], + 'text-font': ['Noto Sans TC Regular'], + 'text-letter-spacing': 0.2, + 'text-max-width': 9, + 'text-size': [ + 'interpolate', + ['linear'], + ['zoom'], + 5, + 10, + 8, + 14, + ], + 'text-transform': 'uppercase', + 'visibility': visible ? 'visible' : 'none', + }, + }, + { + 'id': 'osm-label_city', + 'type': 'symbol', + 'source': 'openmaptiles', + 'source-layer': 'place', + 'minzoom': 3, + 'filter': [ + 'all', + [ + '==', + ['get', 'class'], + 'city', + ], + [ + '!=', + ['get', 'capital'], + 2, + ], + ], + 'paint': { + 'text-color': colors.onSurface.toHexStringRGB(), + 'text-halo-blur': 1, + 'text-halo-color': colors.outlineVariant.toHexStringRGB(), + 'text-halo-width': 1, + }, + 'layout': { + 'icon-allow-overlap': true, + 'icon-image': [ + 'step', + ['zoom'], + 'circle_11_black', + 9, + '', + ], + 'icon-optional': false, + 'icon-size': 0.4, + 'text-anchor': 'bottom', + 'text-field': [ + 'coalesce', + ['get', 'name:nonlatin'], + ['get', 'name'], + ], + 'text-font': ['Noto Sans TC Regular'], + 'text-max-width': 8, + 'text-offset': [0, -0.1], + 'text-size': [ + 'interpolate', + ['exponential', 1.2], + ['zoom'], + 4, + 11, + 7, + 13, + 11, + 18, + ], + 'visibility': visible ? 'visible' : 'none', + }, + }, + { + 'id': 'osm-label_city_capital', + 'type': 'symbol', + 'source': 'openmaptiles', + 'source-layer': 'place', + 'minzoom': 3, + 'filter': [ + 'all', + [ + '==', + ['get', 'class'], + 'city', + ], + [ + '==', + ['get', 'capital'], + 2, + ], + ], + 'paint': { + 'text-color': colors.onSurface.toHexStringRGB(), + 'text-halo-blur': 1, + 'text-halo-color': colors.outlineVariant.toHexStringRGB(), + 'text-halo-width': 1, + }, + 'layout': { + 'icon-allow-overlap': true, + 'icon-image': [ + 'step', + ['zoom'], + 'circle_11_black', + 9, + '', + ], + 'icon-optional': false, + 'icon-size': 0.5, + 'text-anchor': 'bottom', + 'text-field': [ + 'coalesce', + ['get', 'name:nonlatin'], + ['get', 'name'], + ], + 'text-font': ['Noto Sans TC Bold'], + 'text-max-width': 8, + 'text-offset': [0, -0.2], + 'text-size': [ + 'interpolate', + ['exponential', 1.2], + ['zoom'], + 4, + 12, + 7, + 14, + 11, + 20, + ], + 'visibility': visible ? 'visible' : 'none', + }, + }, + { + 'id': 'osm-label_country_3', + 'type': 'symbol', + 'source': 'openmaptiles', + 'source-layer': 'place', + 'minzoom': 2, + 'maxzoom': 9, + 'filter': [ + 'all', + [ + '==', + ['get', 'class'], + 'country', + ], + [ + '>=', + ['get', 'rank'], + 3, + ], + ], + 'paint': { + 'text-color': colors.onSurface.toHexStringRGB(), + 'text-halo-blur': 1, + 'text-halo-color': colors.outlineVariant.toHexStringRGB(), + 'text-halo-width': 1, + }, + 'layout': { + 'text-field': [ + 'coalesce', + ['get', 'name:nonlatin'], + ['get', 'name'], + ], + 'text-font': ['Noto Sans TC Bold'], + 'text-max-width': 6.25, + 'text-size': [ + 'interpolate', + ['linear'], + ['zoom'], + 3, + 9, + 7, + 17, + ], + 'visibility': visible ? 'visible' : 'none', + }, + }, + { + 'id': 'osm-label_country_1', + 'type': 'symbol', + 'source': 'openmaptiles', + 'source-layer': 'place', + 'maxzoom': 9, + 'filter': [ + 'all', + [ + '==', + ['get', 'class'], + 'country', + ], + [ + '==', + ['get', 'rank'], + 1, + ], + ], + 'paint': { + 'text-color': colors.onSurface.toHexStringRGB(), + 'text-halo-blur': 1, + 'text-halo-color': colors.outlineVariant.toHexStringRGB(), + 'text-halo-width': 1, + }, + 'layout': { + 'text-field': [ + 'coalesce', + ['get', 'name:nonlatin'], + ['get', 'name'], + ], + 'text-font': ['Noto Sans TC Bold'], + 'text-max-width': 6.25, + 'text-size': [ + 'interpolate', + ['linear'], + ['zoom'], + 1, + 9, + 4, + 17, + ], + 'visibility': visible ? 'visible' : 'none', + }, + }, + ]; + + static Map googleSource() => { + 'google': { + 'type': 'raster', + 'tiles': ['https://mts1.google.com/vt/lyrs=p&hl=zh-TW&x={x}&y={y}&z={z}'], + 'tileSize': 256, + 'attribution': '© Google Maps', + 'maxzoom': 19, + }, + }; + + static List> googleLayers({bool visible = false}) => [ + { + 'id': 'google-raster', + 'type': 'raster', + 'source': 'google', + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + ]; + + static Map exptechSource() => { + 'exptech': { + 'type': 'vector', + 'url': 'https://lb.exptech.dev/api/v1/map/tiles/tiles.json', + 'tileSize': 512, + 'buffer': 64, + }, + }; + + static List> exptechLayers(ColorScheme colors, {bool visible = false}) => [ + { + 'id': BaseMapLayerIds.exptechGlobalFill, + 'type': 'fill', + 'source': 'exptech', + 'source-layer': 'global', + 'paint': {'fill-color': colors.surfaceContainer.toHexStringRGB(), 'fill-opacity': 1}, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': BaseMapLayerIds.exptechCountyFill, + 'type': 'fill', + 'source': 'exptech', + 'source-layer': 'city', + 'paint': {'fill-color': colors.surfaceContainerHigh.toHexStringRGB(), 'fill-opacity': 1}, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': BaseMapLayerIds.exptechTownFill, + 'type': 'fill', + 'source': 'exptech', + 'source-layer': 'town', + 'paint': {'fill-color': colors.surfaceContainerHigh.toHexStringRGB(), 'fill-opacity': 1}, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + { + 'id': BaseMapLayerIds.exptechCountyOutline, + 'type': 'line', + 'source': 'exptech', + 'source-layer': 'city', + 'paint': {'line-color': colors.outline.toHexStringRGB()}, + 'layout': {'visibility': visible ? 'visible' : 'none'}, + }, + ]; +} diff --git a/pubspec.lock b/pubspec.lock index a0a351cb2..762629257 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -258,7 +258,7 @@ packages: source: hosted version: "0.3.4+2" crypto: - dependency: transitive + dependency: "direct main" description: name: crypto sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" @@ -1607,6 +1607,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.0" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" + source: hosted + version: "1.1.0" xml: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 14645052e..ae9610b52 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -64,6 +64,7 @@ dependencies: ip_country_lookup: ^1.0.0 flutter_icmp_ping: ^3.1.3 geojson_vi: ^2.2.5 + crypto: ^3.0.6 dependency_overrides: intl: 0.19.0 From 78c5c0341ef9f3cbbdb4f3bfcc3ffe040b1550e3 Mon Sep 17 00:00:00 2001 From: Kamiya Date: Sun, 10 Aug 2025 23:04:06 +0800 Subject: [PATCH 2/4] chore: grass color --- lib/widgets/map/style.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/map/style.dart b/lib/widgets/map/style.dart index da84211f1..148f99555 100644 --- a/lib/widgets/map/style.dart +++ b/lib/widgets/map/style.dart @@ -161,7 +161,7 @@ class MapStyle { ['get', 'class'], 'grass', ], - 'paint': {'fill-color': '#d8e8c8', 'fill-opacity': colors.brightness == Brightness.dark ? 0.4 : 1}, + 'paint': {'fill-color': '#d2e8c2', 'fill-opacity': colors.brightness == Brightness.dark ? 0.2 : 1}, 'layout': {'visibility': visible ? 'visible' : 'none'}, }, { From c1aef91be3744c06a8bae4ccf7f6d08b4691b992 Mon Sep 17 00:00:00 2001 From: Kamiya Date: Sun, 10 Aug 2025 23:06:20 +0800 Subject: [PATCH 3/4] chore: remove unused files --- assets/sprites.json | 1 - assets/sprites.png | Bin 101784 -> 0 bytes pubspec.yaml | 2 -- 3 files changed, 3 deletions(-) delete mode 100644 assets/sprites.json delete mode 100644 assets/sprites.png diff --git a/assets/sprites.json b/assets/sprites.json deleted file mode 100644 index 8236e73b8..000000000 --- a/assets/sprites.json +++ /dev/null @@ -1 +0,0 @@ -{"intensity-7-dark":{"x":288,"y":72,"width":64,"height":64,"pixelRatio":1},"intensity-6-dark":{"x":288,"y":136,"width":64,"height":64,"pixelRatio":1},"lightning-1-10":{"x":288,"y":200,"width":64,"height":64,"pixelRatio":1},"gps":{"x":288,"y":0,"width":72,"height":72,"pixelRatio":1},"lightning-1-5":{"x":0,"y":288,"width":64,"height":64,"pixelRatio":1},"wind-high":{"x":64,"y":288,"width":64,"height":64,"pixelRatio":1},"intensity-5":{"x":128,"y":288,"width":64,"height":64,"pixelRatio":1},"intensity-4":{"x":192,"y":288,"width":64,"height":64,"pixelRatio":1},"intensity-6":{"x":256,"y":288,"width":64,"height":64,"pixelRatio":1},"lightning-0-30":{"x":360,"y":0,"width":64,"height":64,"pixelRatio":1},"intensity-7":{"x":360,"y":64,"width":64,"height":64,"pixelRatio":1},"intensity-1-dark":{"x":360,"y":128,"width":64,"height":64,"pixelRatio":1},"cross-8":{"x":0,"y":0,"width":96,"height":96,"pixelRatio":1},"intensity-3":{"x":360,"y":192,"width":64,"height":64,"pixelRatio":1},"intensity-2":{"x":360,"y":256,"width":64,"height":64,"pixelRatio":1},"cross-9":{"x":96,"y":0,"width":96,"height":96,"pixelRatio":1},"lightning-1-60":{"x":0,"y":352,"width":64,"height":64,"pixelRatio":1},"lightning-0-5":{"x":64,"y":352,"width":64,"height":64,"pixelRatio":1},"wind-low":{"x":128,"y":352,"width":64,"height":64,"pixelRatio":1},"intensity-1":{"x":192,"y":352,"width":64,"height":64,"pixelRatio":1},"cross-7":{"x":0,"y":96,"width":96,"height":96,"pixelRatio":1},"cross-6":{"x":96,"y":96,"width":96,"height":96,"pixelRatio":1},"wind-5":{"x":256,"y":352,"width":64,"height":64,"pixelRatio":1},"cross-4":{"x":192,"y":0,"width":96,"height":96,"pixelRatio":1},"lightning-0-10":{"x":320,"y":352,"width":64,"height":64,"pixelRatio":1},"cross-5":{"x":192,"y":96,"width":96,"height":96,"pixelRatio":1},"wind-middle":{"x":424,"y":0,"width":64,"height":64,"pixelRatio":1},"wind-4":{"x":424,"y":64,"width":64,"height":64,"pixelRatio":1},"cross-1":{"x":0,"y":192,"width":96,"height":96,"pixelRatio":1},"wind-1":{"x":424,"y":128,"width":64,"height":64,"pixelRatio":1},"intensity-4-dark":{"x":424,"y":192,"width":64,"height":64,"pixelRatio":1},"intensity-5-dark":{"x":424,"y":256,"width":64,"height":64,"pixelRatio":1},"wind-3":{"x":424,"y":320,"width":64,"height":64,"pixelRatio":1},"cross-2":{"x":96,"y":192,"width":96,"height":96,"pixelRatio":1},"intensity-9":{"x":0,"y":416,"width":64,"height":64,"pixelRatio":1},"intensity-8":{"x":64,"y":416,"width":64,"height":64,"pixelRatio":1},"cross-3":{"x":192,"y":192,"width":96,"height":96,"pixelRatio":1},"wind-2":{"x":128,"y":416,"width":64,"height":64,"pixelRatio":1},"intensity-9-dark":{"x":192,"y":416,"width":64,"height":64,"pixelRatio":1},"intensity-8-dark":{"x":256,"y":416,"width":64,"height":64,"pixelRatio":1},"lightning-1-30":{"x":320,"y":416,"width":64,"height":64,"pixelRatio":1},"intensity-3-dark":{"x":384,"y":416,"width":64,"height":64,"pixelRatio":1},"intensity-2-dark":{"x":488,"y":0,"width":64,"height":64,"pixelRatio":1},"lightning-0-60":{"x":488,"y":64,"width":64,"height":64,"pixelRatio":1}} \ No newline at end of file diff --git a/assets/sprites.png b/assets/sprites.png deleted file mode 100644 index cf82708f0150a205e4c99e2f735e0c237b3f2e3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101784 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 Jq-gH@{{XZrUSj|N diff --git a/pubspec.yaml b/pubspec.yaml index ae9610b52..a23675aba 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -90,5 +90,3 @@ flutter: - assets/notify_test.json - assets/time.json - assets/box.json - - assets/sprites.png - - assets/sprites.json From 7000717b8de8037db7e351567fe5232d7159465d Mon Sep 17 00:00:00 2001 From: Kamiya Date: Sun, 10 Aug 2025 23:15:22 +0800 Subject: [PATCH 4/4] chore: change google to satelite --- lib/widgets/map/style.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/map/style.dart b/lib/widgets/map/style.dart index 148f99555..9fabfd240 100644 --- a/lib/widgets/map/style.dart +++ b/lib/widgets/map/style.dart @@ -1061,7 +1061,7 @@ class MapStyle { static Map googleSource() => { 'google': { 'type': 'raster', - 'tiles': ['https://mts1.google.com/vt/lyrs=p&hl=zh-TW&x={x}&y={y}&z={z}'], + 'tiles': ['https://mt1.google.com/vt/lyrs=s&hl=zh-TW&x={x}&y={y}&z={z}'], 'tileSize': 256, 'attribution': '© Google Maps', 'maxzoom': 19,