Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

It updates a location that is several kilometers away from the actual position #1387

Open
naeemtariq6600 opened this issue Nov 29, 2024 · 4 comments

Comments

@naeemtariq6600
Copy link

Your Environment

  • Plugin version: flutter_background_geolocation: ^4.16.3

  • Platform: iOS or Android : IOS

  • OS version: 18

  • Device manufacturer / model: Apple

  • Flutter info (flutter doctor):
    [!] Flutter (Channel [user-branch], 3.22.0, on macOS 13.6.9 22G830 darwin-x64, locale en-GB)
    ! Flutter version 3.22.0 on channel [user-branch] at /Users/naeemtariq/Desktop/Developer/flutter
    Currently on an unknown channel. Run flutter channel to switch to an official channel.
    If that doesn't fix the issue, reinstall Flutter by following instructions at https://flutter.dev/docs/get-started/install.
    ! Upstream repository unknown source is not a standard remote.
    Set environment variable "FLUTTER_GIT_URL" to unknown source to dismiss this error.
    [✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    [✓] Xcode - develop for iOS and macOS (Xcode 15.2)
    [✓] Chrome - develop for the web
    [✓] Android Studio (version 2023.1)
    [✓] VS Code (version 1.64.2)
    [✓] VS Code (version 1.94.0)
    [✓] Connected device (1 available)
    [✓] Network resources

  • Plugin config:

    bg.BackgroundGeolocation.ready(bg.Config(
            url:  'Url', 
            desiredAccuracy: bg.Config.DESIRED_ACCURACY_HIGH,
            // enableHeadless: true,
            // disableStopDetection: true,
            stopOnTerminate: false,
            startOnBoot: true,
            stopOnStationary: false,
            debug: false,
            foregroundService: true,
            heartbeatInterval: 20,
            stationaryRadius: Platform.isAndroid ? 0 : 25,
            distanceFilter: Platform.isAndroid ? 0 : 25,
            locationUpdateInterval: 11000,
            fastestLocationUpdateInterval: 11000,
            maxRecordsToPersist: 800,
            allowIdenticalLocations: true,
            enableHeadless: true,
            maxDaysToPersist: 1,
            pausesLocationUpdatesAutomatically: false,
            preventSuspend: true,
            activityType: bg.Config.ACTIVITY_TYPE_AUTOMOTIVE_NAVIGATION,
            locationTemplate:
                '{"driver_lat":<%= latitude %>,"driver_lan":<%= longitude %>,"event":"<%= event %>","driver_id":$driverId,"loc_time":"<%= timestamp %>","orders":${[]}}',
            headers: {
              "Content-Type": "application/json; charset=UTF-8",
              "Authorization": 'Bearer $token'
            },
            notificationPriority: Platform.isAndroid ? 0 : -2,
            logLevel: Platform.isAndroid
                ? bg.Config.LOG_LEVEL_VERBOSE
                : bg.Config.LOG_LEVEL_OFF))
        .then((bg.State state) {
      if (!state.enabled) {
        bg.BackgroundGeolocation.start();
      }
    });

Expected Behavior

Plugin should post the accurate location on server.

Actual Behavior

Sometimes, it sends the correct location. However, within the next minute, it updates a location that is several kilometers away from the actual position. This behavior is causing inconsistencies in the location data we store.

Context

We are updating drivers' locations to our server. Based on these locations, we need to draw a route on the map. However, while the plugin updates the locations correctly, it sometimes starts sending inaccurate, far-off locations.

Debug logs

Logs
PASTE_YOUR_LOGS_HERE
@christocracy
Copy link
Member

christocracy commented Nov 29, 2024

The plugin does not manufacture location data. It receives the best available location provided by the native Location API at that time, in the current environment.

Yes, sometimes a poor location can be provided by the native location API.

Location accuracy is affected by physical obstructions and GPS works only while outdoors. While indoors, the location will come from Wifi / Cellular.

You are expected to filter your own data (see location.coords.accuracy).

@christocracy
Copy link
Member

In my daily testing, I rarely see inaccurate locations. Accuracy issues are not related to the plugin. They are due to the device and/or environment.

Screenshot 2024-11-29 at 10 52 34 AM

@naeemtariq6600
Copy link
Author

Is our configuration correct? Is there any issue in it that might be causing this problem?

@christocracy
Copy link
Member

Is our configuration correct?

yes.

Is there any issue in it that might be causing this problem?

The device and/or environment (ie: physical obstructions: tall building, bridges, tunnels).

It's up to you to filter your data as-desired. see location.coords.accuracy. A location is not a simple point in space — it's a circle of radius location.coords.accuracy. The real device position is something within that circle.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants