Skip to content

Google Maps Flutter: LatLng longitude loses precision in constructor #65589

@MurrayMeller

Description

@MurrayMeller

Hi,

Thanks for your time in reading this bug.

The issue i am experiencing involves the LatLng class provided by the google_maps_flutter package. The constructor.for the LatLng class seems to be losing some precision on the given longitude.

The end result is that my map markers are in the wrong location with an error of 2-10m

Steps to Reproduce

I am running my flutter application on a physical iPhone 7 with iOS 13.7.

Expected results:
When giving the marker object the coordinates: (lat: -34.509981, long: 150.792384)

I would expect the object to have lat and long values: Latlng(-34.509981, 150.792384)

Actual results:

The object has values that are close but are not precise. LatLng(-34.509981, 150.79238399999997)

After reviewing the LatLng constructor it appears the error comes from precision loss in the longitudes normalisation:

const LatLng(double latitude, double longitude)
      : assert(latitude != null),
        assert(longitude != null),
        latitude =
            (latitude < -90.0 ? -90.0 : (90.0 < latitude ? 90.0 : latitude)),
        longitude = (longitude + 180.0) % 360.0 - 180.0;
Logs
[✓] Flutter (Channel stable, 1.20.2, on Mac OS X 10.15.5 19F101, locale en-AU)
    • Flutter version 1.20.2 at /Users/murray/dev/flutter
    • Framework revision bbfbf1770c (4 weeks ago), 2020-08-13 08:33:09 -0700
    • Engine revision 9d5b21729f
    • Dart version 2.9.1

 
[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at <USER_DIR>/Library/Android/sdk
    • Platform android-29, build-tools 29.0.2
    • Java binary at: <USER_DIR>/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/193.6626763/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses

[✓] Xcode - develop for iOS and macOS (Xcode 11.7)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.7, Build version 11E801a
    • CocoaPods version 1.9.3

[✓] Android Studio (version 4.0)
    • Android Studio at <USER_DIR>/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/193.6626763/Android Studio.app/Contents
    • Flutter plugin version 36.1.1
    • Dart plugin version 183.6270
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[!] VS Code (version 1.44.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[!] Connected device
    • Error: <User's> iPhone is not connected. Xcode will continue when <User's> iPhone is connected. (code -13)

! Doctor found issues in 3 categories.

Metadata

Metadata

Assignees

No one assigned

    Labels

    found in release: 2.3Found to occur in 2.3has reproducible stepsThe issue has been confirmed reproducible and is ready to work onp: mapsGoogle Maps pluginpackageflutter/packages repository. See also p: labels.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions