Fathi Sulieman
Fathi Sulieman

Reputation: 23

Check if 2 coordinates are in the same city

Basically, I have 2 LatLong values 1 for the user that keeps updating according to his current location and 1 stored on the database. How can I check if these 2 coordinates are in the same city or state. Note: I used the google maps API https://maps.googleapis.com/maps/api/geocode/json?latlng=33.26944346171845,%2035.20463784635442&sensor=true&key=KEY for both coordinates and compared strings(administrative_area_level_2) to check if the user is in the same city or not. Is there a better way to do it in Flutter? Thanks in advance!

Upvotes: 0

Views: 800

Answers (1)

Salih Can
Salih Can

Reputation: 1811

I think your method is quite reasonable. If you don't want to use API, you can calculate the distance between two coordinates with the below method. Using this, you can assume that those below a certain distance are in the same city or state.


const convertToRadian = x => x * Math.PI / 180;

function getDistanceBetween(lat1, lat2, lng1, lng2) {
    const R = 6378137; // Earth’s mean radius in meter
    const dLat = convertToRadian(lat2 - lat1);
    const dLong = convertToRadian(lng2 - lng1);
    const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(convertToRadian(lat1)) * Math.cos(convertToRadian(lat2)) * Math.sin(dLong / 2) * Math.sin(dLong / 2);
    const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    return R * c; // returns the distance in meter
}

Upvotes: 1

Related Questions