diff --git a/lib/widgets/map/gps_controller.dart b/lib/widgets/map/gps_controller.dart index a40fdf4..cdc67f7 100644 --- a/lib/widgets/map/gps_controller.dart +++ b/lib/widgets/map/gps_controller.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_map_animations/flutter_map_animations.dart'; import 'package:geolocator/geolocator.dart'; import 'package:latlong2/latlong.dart'; +import 'package:flutter/foundation.dart' show defaultTargetPlatform, TargetPlatform; import '../../dev_config.dart'; import '../../app_state.dart' show FollowMeMode; @@ -145,15 +146,21 @@ class GpsController { void _startPositionStream() { final followMeMode = _getCurrentFollowMeMode?.call() ?? FollowMeMode.off; final distanceFilter = followMeMode == FollowMeMode.off ? 5 : 1; // 5m normal, 1m follow-me - + debugPrint('[GpsController] Starting GPS position stream (${distanceFilter}m filter)'); - + try { _positionSub = Geolocator.getPositionStream( - locationSettings: LocationSettings( - accuracy: LocationAccuracy.high, // Request best, accept what we get - distanceFilter: distanceFilter, - ), + locationSettings: defaultTargetPlatform == TargetPlatform.android + ? AndroidSettings( + accuracy: LocationAccuracy.high, + distanceFilter: distanceFilter, + forceLocationManager: true, + ) + : LocationSettings( + accuracy: LocationAccuracy.high, + distanceFilter: distanceFilter, + ), ).listen( _onPositionReceived, onError: _onPositionError, @@ -358,4 +365,4 @@ class GpsController { _onMapMovedProgrammatically = null; _isUserInteracting = null; } -} \ No newline at end of file +}