public async Task GetEuclideanDistanceMatrix()

in Source/Requests/DistanceMatrixRequest.cs [206:261]


        public async Task<DistanceMatrix> GetEuclideanDistanceMatrix()
        {
            if(this.Origins != null && this.Origins.Count > 0)
            //Make sure all origins and destinations are geocoded.
            await GeocodeWaypoints().ConfigureAwait(false);

            var dm = new DistanceMatrix()
            {
                Origins = this.Origins
            };

            int cnt = 0;

            if (this.Destinations == null || this.Destinations.Count == 0)
            {
                dm.Destinations = this.Origins;
                dm.Results = new DistanceMatrixCell[this.Origins.Count * this.Origins.Count];

                for (var i = 0; i < Origins.Count; i++)
                {
                    for (var j = 0; j < Origins.Count; j++)
                    {
                        dm.Results[cnt] = new DistanceMatrixCell()
                        {
                            OriginIndex = i,
                            DestinationIndex = j,
                            TravelDistance = SpatialTools.HaversineDistance(Origins[i].Coordinate, Origins[j].Coordinate, DistanceUnits)
                        };

                        cnt++;
                    }
                }
            }
            else
            {
                dm.Destinations = this.Destinations;
                dm.Results = new DistanceMatrixCell[this.Origins.Count * this.Destinations.Count];

                for (var i = 0; i < Origins.Count; i++)
                {
                    for (var j = 0; j < Destinations.Count; j++)
                    {
                        dm.Results[cnt] = new DistanceMatrixCell()
                        {
                            OriginIndex = i,
                            DestinationIndex = j,
                            TravelDistance = SpatialTools.HaversineDistance(Origins[i].Coordinate, Destinations[j].Coordinate, DistanceUnits)
                        };

                        cnt++;
                    }
                }
            }

            return dm;
        }