Flutter Geolocator returns different coordinates on iOS vs Android for same physical location, causing inconsistent reverse geocoding address

3 hours ago 1
ARTICLE AD BOX

Problem

I'm using the geolocator package in Flutter to get the current location and then reverse geocode it to a display address. The same physical device location returns noticeably different coordinates on iOS and Android, which causes the geocoded address to differ between platforms.


Code

Getting current position:

dart

return await Geolocator.getCurrentPosition( desiredAccuracy: LocationAccuracy.high, );

Reverse geocoding (Google Maps Geocoding API):

dart

static Future<String> getAddressFromLatLng(String? lat, String? lng) async { final double roundedLat = double.parse(double.parse(lat!).toStringAsFixed(5)); final double roundedLng = double.parse(double.parse(lng!).toStringAsFixed(5)); final uri = Uri.parse( 'https://maps.googleapis.com/maps/api/geocode/json' '?latlng=$roundedLat,$roundedLng' '&key=$apiKey' '&language=en', ); final response = await http.get(uri); final data = json.decode(response.body); return data['results'][0]['formatted_address']; }

Logs

iOS:

Got current location: 22.685498910314223, 75.85949381064067 Rounded: 22.6855, 75.85949 Resolved address: Mangal Nagar, Indore, 452014

Android (same room, same time):

Got current location: 22.685553, 75.8595931 Rounded: 22.68555, 75.85959 Resolved address: AB Road, Vishnu Puri Colony, Indore, 452014

What I've already tried

Rounding coordinates to 5 decimal places before the API call — coordinates are still ~10–15 meters apart after rounding, enough to cross a street boundary

Switching from formatted_address to address_components — skipping street_number and route, only using sublocality, locality, postal_code — still getting different neighborhood names

Filtering result_type=neighborhood|sublocality in the geocoding request — partially helped but still inconsistent


Questions

Why does LocationAccuracy.high produce coordinates ~10–15 meters apart between iOS and Android on the same physical location?

Is there a reliable way to get consistent coordinates across both platforms using geolocator?

Should I be averaging multiple position readings to stabilize the result, and if so what is the recommended approach?


Environment

Flutter: 3.x geolocator: ^13.x Device tested: iPhone 14 (iOS 17) + Samsung Galaxy (Android 13) Same physical location, same time
Read Entire Article