-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Description
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 is losing precision on the given longitude. The end result is that my map markers are in the wrong location with an error of 2-10 meters.
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;
Proposed change:
What I would like to do is this: skip the normalisation if the given value is within the acceptable range.
This would allow my to avoid any unnecessary loss of precision.
This issue was original raised here: #65589
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.