working out distances between two points using google maps api?

后端 未结 8 1321
北海茫月
北海茫月 2021-01-03 10:39

Is it possible to send two lat long points to google to calculate the distance between the two?

相关标签:
8条回答
  • 2021-01-03 11:06

    Yes google can do this

    google api docs

    here's a piece of java script that get's the distance in km's for two points

    function initialize() {
          if (GBrowserIsCompatible()) {
              map = new GMap2(document.getElementById("map_canvas"));
              map.setCenter(new GLatLng(52.6345701, -1.1294433), 13);
              map.addControl(new GLargeMapControl());          
              map.addControl(new GMapTypeControl());
              geocoder = new GClientGeocoder();
    
              // NR14 7PZ
              var loc1 = new GLatLng(52.5773139, 1.3712427);
              // NR32 1TB
              var loc2 = new GLatLng(52.4788314, 1.7577444);          
              alert(loc2.distanceFrom(loc1) / 1000);
          }
        }
    
    
    0 讨论(0)
  • 2021-01-03 11:10

    No, but you can use Vincenty's formula, which models the shape of the Earth. It's available in Javascript here.

    A quite easy to parse web page is (e.g.): http://boulter.com/gps/distance/?from=51.5329855+-0.1303506&to=40.757584+-73.985642&units=m

    For people who only want a quick measure of distance, check out this gadget. However, it only uses the great circle calculation.


    As Rob notes, Google have added it, but they still only use the great circle formula, which can be inaccurate by 1/300.

    0 讨论(0)
  • 2021-01-03 11:13

    What you're after is the Haversine formula. You don't need Google Maps to do this, you can work it out separately. There's a script to do this (in JavaScript) here.

    0 讨论(0)
  • 2021-01-03 11:16

    Its been many years since I did this but you could use the Great Circle Distance

    0 讨论(0)
  • 2021-01-03 11:18

    If you just want to get the distance as a number, try something like this.

    function InitDistances() {
        var startLocation = new GLatLng(startLat, startLon);
        var endLocation = new GLatLng(endLat, endLon);
        var dist = startLocation .distanceFrom(endLocation);
    
        // Convert distance to miles with two decimal points precision
        return (dist / 1609.344).toFixed(2);
    }
    
    0 讨论(0)
  • 2021-01-03 11:20

    And the distance cal in c#:

    // this returns the distance in miles. for km multiply result: * 1.609344
    public static double CalculateDistance(double lat1, double lon1, double lat2, double lon2)
    {
        double t = lon1 - lon2;
        double distance = Math.Sin(Degree2Radius(lat1)) * Math.Sin(Degree2Radius(lat2)) + Math.Cos(Degree2Radius(lat1)) * Math.Cos(Degree2Radius(lat2)) * Math.Cos(Degree2Radius(t));
        distance = Math.Acos(distance);
        distance = Radius2Degree(distance);
        distance = distance * 60 * 1.1515;
    
        return distance;
    }
    
    private static double Degree2Radius(double deg)
    {
        return (deg * Math.PI / 180.0);
    }
    
    private static double Radius2Degree(double rad)
    {
        return rad / Math.PI * 180.0;
    }
    
    0 讨论(0)
提交回复
热议问题