From 22cfbda124ab25f0b6239716c7280192019d1c4a Mon Sep 17 00:00:00 2001 From: "mr.mojtaba" Date: Tue, 29 Jul 2025 12:37:17 +0330 Subject: [PATCH] feat : marker with zoom changes --- assets/icons/chicken_map_marker.svg | 36 ++++++ assets/icons/chicken_marker_location.svg | 116 ------------------ assets/vec/chicken_map_marker.svg.vec | Bin 0 -> 26397 bytes .../lib/presentation/common/assets.gen.dart | 8 ++ .../pages/inspection_map/logic.dart | 55 +++++++-- .../pages/inspection_map/view.dart | 58 +++++---- 6 files changed, 123 insertions(+), 150 deletions(-) create mode 100644 assets/icons/chicken_map_marker.svg delete mode 100644 assets/icons/chicken_marker_location.svg create mode 100644 assets/vec/chicken_map_marker.svg.vec diff --git a/assets/icons/chicken_map_marker.svg b/assets/icons/chicken_map_marker.svg new file mode 100644 index 0000000..2099322 --- /dev/null +++ b/assets/icons/chicken_map_marker.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/icons/chicken_marker_location.svg b/assets/icons/chicken_marker_location.svg deleted file mode 100644 index 6d79658..0000000 --- a/assets/icons/chicken_marker_location.svg +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/vec/chicken_map_marker.svg.vec b/assets/vec/chicken_map_marker.svg.vec new file mode 100644 index 0000000000000000000000000000000000000000..4ea6f27454ccd64278502dd679efde078006841a GIT binary patch literal 26397 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 GRsAnJf_+y2 literal 0 HcmV?d00001 diff --git a/packages/core/lib/presentation/common/assets.gen.dart b/packages/core/lib/presentation/common/assets.gen.dart index dba8dfe..b349f7c 100644 --- a/packages/core/lib/presentation/common/assets.gen.dart +++ b/packages/core/lib/presentation/common/assets.gen.dart @@ -76,6 +76,9 @@ class $AssetsIconsGen { /// File path: assets/icons/chicken.svg SvgGenImage get chicken => const SvgGenImage('assets/icons/chicken.svg'); + /// File path: assets/icons/chicken_map_marker.svg + SvgGenImage get chickenMapMarker => const SvgGenImage('assets/icons/chicken_map_marker.svg'); + /// File path: assets/icons/clipboard_eye.svg SvgGenImage get clipboardEye => const SvgGenImage('assets/icons/clipboard_eye.svg'); @@ -291,6 +294,7 @@ class $AssetsIconsGen { check, checkSquare, chicken, + chickenMapMarker, clipboardEye, clipboardTask, clock, @@ -437,6 +441,9 @@ class $AssetsVecGen { /// File path: assets/vec/chicken.svg.vec SvgGenImage get chickenSvg => const SvgGenImage.vec('assets/vec/chicken.svg.vec'); + /// File path: assets/vec/chicken_map_marker.svg.vec + SvgGenImage get chickenMapMarkerSvg => const SvgGenImage.vec('assets/vec/chicken_map_marker.svg.vec'); + /// File path: assets/vec/clipboard_eye.svg.vec SvgGenImage get clipboardEyeSvg => const SvgGenImage.vec('assets/vec/clipboard_eye.svg.vec'); @@ -652,6 +659,7 @@ class $AssetsVecGen { checkSvg, checkSquareSvg, chickenSvg, + chickenMapMarkerSvg, clipboardEyeSvg, clipboardTaskSvg, clockSvg, diff --git a/packages/inspection/lib/presentation/pages/inspection_map/logic.dart b/packages/inspection/lib/presentation/pages/inspection_map/logic.dart index ede317b..39ba16a 100644 --- a/packages/inspection/lib/presentation/pages/inspection_map/logic.dart +++ b/packages/inspection/lib/presentation/pages/inspection_map/logic.dart @@ -19,6 +19,7 @@ class InspectionMapLogic extends GetxController with GetTickerProviderStateMixin RxList markers = [].obs; + Timer? _debounceTimer; RxBool isLoading = false.obs; RxBool isSelectedDetailsLocation = false.obs; @@ -119,25 +120,59 @@ class InspectionMapLogic extends GetxController with GetTickerProviderStateMixin void debouncedUpdateVisibleMarkers({required LatLng center, required double zoom}) { _debounceTimer?.cancel(); _debounceTimer = Timer(const Duration(milliseconds: 300), () { - var raduis = getVisibleRadiusKm( + final radius = getVisibleRadiusKm( zoom: zoom, screenWidthPx: Get.width.toDouble(), latitude: center.latitude, ); + final filtered = filterNearbyMarkers( allPoultryLocation.value.data ?? [], center.latitude, center.longitude, - raduis * 1000, // Radius in meters - ); - markers.assignAll( - filtered.map( - (e) => Marker( - point: LatLng(e.lat ?? 0, e.long ?? 0), - child: Icon(Icons.location_on, color: Colors.red), - ), - ), + radius * 1000, ); + + final visibleBounds = animatedMapController.mapController.camera.visibleBounds; + final isZoomedIn = zoom > 17; + + final updatedMarkers = filtered.map((location) { + final point = LatLng(location.lat ?? 0, location.long ?? 0); + final isVisible = visibleBounds.contains(point); + + return Marker( + point: point, + width: isZoomedIn && isVisible ? 180.w : 40.h, + height: isZoomedIn && isVisible ? 50.h : 50.h, + child: isZoomedIn && isVisible + ? Container( + height: 30.h, + padding: EdgeInsets.all(5.r), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(15.r), + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.1), + blurRadius: 5, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 8, + children: [ + Assets.vec.chickenMapMarkerSvg.svg(width: 24.w, height: 24.h), + Text(location.user?.fullname ?? '',style: AppFonts.yekan12,), + ], + ), + ) + : Assets.vec.chickenMapMarkerSvg.svg(width: 24.w, height: 24.h), + ); + }).toList(); + + markers.value = updatedMarkers; }); } diff --git a/packages/inspection/lib/presentation/pages/inspection_map/view.dart b/packages/inspection/lib/presentation/pages/inspection_map/view.dart index 1d3734f..9c5a75e 100644 --- a/packages/inspection/lib/presentation/pages/inspection_map/view.dart +++ b/packages/inspection/lib/presentation/pages/inspection_map/view.dart @@ -43,7 +43,11 @@ class InspectionMapPage extends GetView { ), initialZoom: 15, onPositionChanged: (camera, hasGesture) { - controller.debouncedUpdateVisibleMarkers(center: camera.center,zoom: camera.zoom); + wLog(camera.zoom); + controller.debouncedUpdateVisibleMarkers( + center: camera.center, + zoom: camera.zoom, + ); }, ), @@ -52,29 +56,35 @@ class InspectionMapPage extends GetView { urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', userAgentPackageName: 'ir.mnpc.rasadyar', ), - MarkerClusterLayerWidget( - options: MarkerClusterLayerOptions( - maxClusterRadius: 80, - size: const Size(40, 40), - alignment: Alignment.center, - padding: const EdgeInsets.all(50), - maxZoom: 15, - markers: controller.markers, - builder: (context, markers) { - return Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20), - color: Colors.blue, - ), - child: Center( - child: Text( - markers.length.toString(), - style: const TextStyle(color: Colors.white), - ), - ), - ); - }, - ), + + ObxValue( + (markers) { + return MarkerClusterLayerWidget( + options: MarkerClusterLayerOptions( + maxClusterRadius: 80, + size: const Size(40, 40), + alignment: Alignment.center, + padding: const EdgeInsets.all(50), + maxZoom: 15, + markers: markers.value, + builder: (context, clusterMarkers) { + return Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + color: Colors.blue, + ), + child: Center( + child: Text( + clusterMarkers.length.toString(), + style: const TextStyle(color: Colors.white), + ), + ), + ); + }, + ), + ); + }, + controller.markers, ), ], );