Skip to content
This repository has been archived by the owner on Nov 8, 2023. It is now read-only.

Distance function returns 0 between two locations #260

Open
thamibn opened this issue Apr 24, 2020 · 4 comments
Open

Distance function returns 0 between two locations #260

thamibn opened this issue Apr 24, 2020 · 4 comments

Comments

@thamibn
Copy link

thamibn commented Apr 24, 2020

Hi,

When i use two locations taken from google maps to calculate distance it always give me 0, not sure why

here is my code example

// -26.275406, 27.811755 from google maps
      let thisLocation = new geolocation.Location();
      thisLocation.latitude = "-26.275406";
      thisLocation.longitude = "27.811755";

      //  -26.281879, 27.772300 from google maps
      let myLocation = new geolocation.Location();
      myLocation.latitude = "-26.281879";
      myLocation.longitude = "27.772300";

      let dist = Math.floor(geolocation.distance(myLocation, thisLocation));
      this.locationDistance = `DIstance is ${dist} meters away.`;

i am using nativescript vue
testing on my android device

@akarsh014
Copy link

I have faced this issue as well, i get 0 when i calculate the distance.

@justinmespel
Copy link

justinmespel commented Sep 8, 2020

I wasn't getting very accurate distances using this function either. I use this to calculate the distance in KM, then times the result by 1000

calculateKmDistance(loc1, loc2): number {

    const R = 6371.0710; // Radius of the Earth in Km
    const r1 = loc1.latitude * (Math.PI / 180); // Convert degrees to radians
    const r2 = loc2.latitude * (Math.PI / 180); // Convert degrees to radians
    const d1 = r2 - r1; // Radian difference (latitudes)
    const d2 = (loc2.longitude - loc1.longitude) * (Math.PI / 180); // Radian difference (longitudes)

    return 2 * R * Math.asin(Math.sqrt(Math.sin(d1 / 2) *
        Math.sin(d1 / 2) + Math.cos(r1) * Math.cos(r2) *
        Math.sin(d2 / 2) * Math.sin(d2 / 2)));
}

@alexonozor
Copy link

Do you still need to times the result by 1000 to get it in KM?

I wasn't getting very accurate distances using this function either. I use this to calculate the distance in KM, then times the result by 1000

calculateKmDistance(loc1, loc2): number {

    const R = 6371.0710; // Radius of the Earth in Km
    const r1 = loc1.latitude * (Math.PI / 180); // Convert degrees to radians
    const r2 = loc2.latitude * (Math.PI / 180); // Convert degrees to radians
    const d1 = r2 - r1; // Radian difference (latitudes)
    const d2 = (loc2.longitude - loc1.longitude) * (Math.PI / 180); // Radian difference (longitudes)

    return 2 * R * Math.asin(Math.sqrt(Math.sin(d1 / 2) *
        Math.sin(d1 / 2) + Math.cos(r1) * Math.cos(r2) *
        Math.sin(d2 / 2) * Math.sin(d2 / 2)));
}

@justinmespel
Copy link

@alexonozor I don't think so, it should return the result in KM. I think / 1000 to get it in meters.

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

No branches or pull requests

4 participants