示例#1
0
        public async Task <List <MapsRoutingResult> > GetDirections(List <Tuple <Point, Point> > points)
        {
            var results = points.Select(async point =>
            {
                var request = new Google.Maps.Direction.DirectionRequest()
                {
                    Origin      = new Google.Maps.Location($"{point.Item1.Y.ToString(CultureInfo.InvariantCulture)}, {point.Item1.X.ToString(CultureInfo.InvariantCulture)}"),
                    Destination = new Google.Maps.Location($"{point.Item2.Y.ToString(CultureInfo.InvariantCulture)}, {point.Item2.X.ToString(CultureInfo.InvariantCulture)}"),
                    Mode        = TravelMode.driving,
                    //Optimize = true,
                };

                try
                {
                    return(await new Google.Maps.Direction.DirectionService().GetResponseAsync(request));
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);

                    return(null);
                }
            })
                          .ToArray();

            Task.WaitAll(results);

            var routingResults = results
                                 // TODO protect against incorrect routes
                                 .Select(i =>
            {
                if (i.Result.Status != ServiceResponseStatus.Ok)
                {
                    return(null);
                }

                var item = i.Result.Routes.First().Legs.First();

                return(new MapsRoutingResult()
                {
                    //ArrivalTime = item.ArrivalTime,
                    //DepartureTime = item.DepartureTime,
                    Distance = item.Distance.Value,
                    DistanceText = item.Distance.Text,
                    Duration = item.Duration.Value,
                    DurationText = item.Duration.Text,
                    StartAddress = item.StartAddress,
                    EndAddress = item.EndAddress,
                    //StartLocation = item.StartLocation
                    //EndLocation = item.EndLocation,
                });
            }).ToList();

            return(routingResults);
        }
        public void GetUrl_no_Destination_set()
        {
            var req = new DirectionRequest();

            //req.Origin = nothing basically;

            //act
            //assert
            Assert.Throws <InvalidOperationException>(() =>
            {
                var actual = req.ToUri();
            });
        }
        public void PartialMatchTest()
        {
            // invalid address results in partial match
            var request = new DirectionRequest
            {
                Sensor = false,
                Origin = new Location("410 Beeeeeechwood Rd, NJ 07450"),
                Destination = new Location("204 Powell Ave, CA 94523")
            };
            var response = new DirectionService().GetResponse(request);

            Assert.True(response.GeocodedWaypoints.Any(wp => wp.PartialMatch));
        }
        public void Empty_Address_Fails()
        {
            Assert.Throws <HttpRequestException>(() =>
            {
                // Arrange
                var request = new DirectionRequest {
                    Origin = ""
                };

                // Act
                var response = CreateService().GetResponse(request);
            });
        }
        public void Empty_address()
        {
            // expectations
            var expectedStatus = ServiceResponseStatus.ZeroResults;

            // test
            var request = new DirectionRequest();
            request.Sensor = false;
            request.Origin = "";
            var response = new DirectionService().GetResponse(request);

            // asserts
            Assert.AreEqual(expectedStatus, response.Status);
        }
        public void GetUrl_simplest_using_address_ex1()
        {
            //arrange
            var expected = ParseQueryString("json?origin=New York, NY&destination=Albany, NY");

            var req = new DirectionRequest();

            req.Origin      = "New York, NY";
            req.Destination = "Albany, NY";
            req.Mode        = TravelMode.driving;      //this is default, so querystring doesn't need to contain it.

            //act
            var actual = ParseQueryString(req.ToUri());

            //assert
            Assert.That(actual, Is.EquivalentTo(expected));
        }
        public void GetResultForDirections_ex1()
        {
            // Arrange
            var request = new DirectionRequest
            {
                Origin      = "21 Henr St, Bristol, UK",            // Typo intended so that it produces a partial match
                Destination = "27 Victoria Drive, Lyneham"
            };

            // Act
            var response = CreateService().GetResponse(request);

            // Assert
            if (response.Status == ServiceResponseStatus.OverQueryLimit)
            {
                Assert.Ignore("OverQueryLimit");
            }

            Assert.AreEqual(ServiceResponseStatus.Ok, response.Status, "Status");
            Assert.AreEqual(1, response.Routes.Length, "ResultCount");

            var currentLeg = response.Routes[0].Legs[0];

            Assert.AreEqual("21 Henry St, Bristol BS3 4UD, UK", currentLeg.StartAddress);
            Assert.That(currentLeg.StartLocation, Is.EqualTo(new LatLng(51.442, -2.579)).Using(LatLngComparer.Within(0.001f)));

            Assert.AreEqual("27 Victoria Dr, Lyneham, Chippenham SN15 4RA, UK", currentLeg.EndAddress);
            Assert.That(currentLeg.EndLocation, Is.EqualTo(new LatLng(51.505, -1.958)).Using(LatLngComparer.Within(0.001f)));

            Assert.That(currentLeg.Distance.Value, Is.EqualTo(53939));
            Assert.That(currentLeg.Duration.Value, Is.EqualTo(2956));

            Assert.AreEqual(19, currentLeg.Steps.Count());

            Assert.AreEqual("M4", response.Routes[0].Summary);

            Assert.AreEqual(2, response.Waypoints.Length);
            Assert.AreEqual(ServiceResponseStatus.Ok, response.Waypoints[0].Status);
            Assert.AreEqual(AddressType.StreetAddress, response.Waypoints[0].Types[0]);
            Assert.AreEqual(true, response.Waypoints[0].PartialMatch);

            Assert.AreEqual(ServiceResponseStatus.Ok, response.Waypoints[1].Status);
            Assert.AreEqual(AddressType.StreetAddress, response.Waypoints[1].Types[0]);
            Assert.AreEqual(false, response.Waypoints[1].PartialMatch);
        }
        public void GetUrl_waypoints_latlng_ex1()
        {
            //arrange
            var expected = ParseQueryString("json?origin=NY&destination=Orlando,FL&waypoints=28.452694,-80.979195");

            var req = new DirectionRequest();

            req.Origin      = "NY";
            req.Destination = "Orlando,FL";
            req.Mode        = TravelMode.driving;      //this is default, so querystring doesn't need to contain it.

            req.AddWaypoint(new LatLng(28.452694, -80.979195));

            //act
            var actual = ParseQueryString(req.ToUri());

            //assert
            Assert.That(actual, Is.EquivalentTo(expected));
        }
        public void GetUrl_waypoints_simple_ex1()
        {
            //arrange
            var expected = ParseQueryString("json?origin=NY&destination=FL&waypoints=NC");

            var req = new DirectionRequest();

            req.Origin      = "NY";
            req.Destination = "FL";
            req.Mode        = TravelMode.driving;      //this is default, so querystring doesn't need to contain it.

            req.AddWaypoint("NC");

            //act
            var actual = ParseQueryString(req.ToUri());

            //assert
            Assert.That(actual, Is.EquivalentTo(expected));
        }
        public void GetUrl_simplest_using_latlng()
        {
            //arrange
            var expected = new NameValueCollection {
                { "origin", "30.2,40.3" },
                { "destination", "50.5,60.6" }
            };

            var req = new DirectionRequest();

            req.Origin      = new LatLng(30.2, 40.3);
            req.Destination = new LatLng(50.5, 60.6);
            req.Mode        = TravelMode.driving;      //this is default, so querystring doesn't need to contain it.

            //act
            var actual = ParseQueryString(req.ToUri());

            //assert
            Assert.That(actual, Is.EquivalentTo(expected));
        }
示例#11
0
        public PathRequestResponce GetBestPath(string destination, string travelMode)
        {
            var request = new Google.Maps.Direction.DirectionRequest();

            string parsedOrigin      = GetExactParsedLocation(string.Join(", ", new string[] { "Universytetska street", CITY }));
            string parsedDestination = GetExactParsedLocation(string.Join(", ", new string[] { destination, CITY }));

            request.Origin      = new Google.Maps.Location(parsedOrigin);
            request.Destination = new Google.Maps.Location(parsedDestination);
            request.Mode        = ParseTravelMode(travelMode);
            request.Sensor      = false;
            request.Language    = "en";
            request.Region      = "UA";

            var response = new DirectionService().GetResponse(request);

            return(new PathRequestResponce
            {
                PathInsructions = ParseRoute(response.Routes[0].Legs[0].Steps)
            });
        }
示例#12
0
        public DirectionResponse GetResponse(DirectionRequest request)
        {
            var url = new Uri(this.BaseUri, request.ToUri());

            return(Internal.Http.Get(url).As <DirectionResponse>());
        }
		public DirectionResponse GetResponse(DirectionRequest request)
		{
			var url = new Uri(this.BaseUri, request.ToUri());
			return Internal.Http.Get(url).As<DirectionResponse>();
		}
        public void GetResultForDirections_ex1()
        {
            // expectations
            var expectedStatus = ServiceResponseStatus.Ok;
            var expectedRoutesCount = 1;

            var expectedEndAddress = "Montreal, QC, Canada";
            var expectedEndLocation = new LatLng(45.508570, -73.553770);

            var expectedStartAddress = "Toronto, ON, Canada";
            var expectedStartLocation = new LatLng(43.653310, -79.382770);

            var expectedBounds = new Viewport(
                northEast: new LatLng(45.51048, -73.55332),
                southWest: new LatLng(43.65331, -79.38373)
            );

            var expectedDistance = new ValueText() { Text = "542 km", Value = "542382" };
            var expectedDuration = new ValueText() { Text = "5 hours 27 mins", Value = "19608" };

            var expectedSteps = 13;

            var expectedSummary = "ON-401 E";

            // test
            var request = new DirectionRequest();
            request.Origin = "Toronto";
            request.Destination = "Montreal";
            request.Sensor = false;

            var response = new DirectionService().GetResponse(request);

            // asserts
            Assert.AreEqual(expectedStatus, response.Status, "Status");
            Assert.AreEqual(expectedRoutesCount, response.Routes.Length, "ResultCount");

            var currentLeg = response.Routes[0].Legs[0];

            Assert.That(expectedStartAddress, Is.EqualTo(currentLeg.StartAddress), "Leg.StartAddress");
            Assert.That(expectedStartLocation, Is.EqualTo(currentLeg.StartLocation).Using(LatLngComparer.Within(0.000001f)), "Leg.StartLocation");

            Assert.That(expectedEndAddress, Is.EqualTo(currentLeg.EndAddress), "Leg.EndAddress");
            Assert.That(expectedEndLocation, Is.EqualTo(currentLeg.EndLocation).Using(LatLngComparer.Within(0.000001f)), "Leg.EndLocation");

            Assert.That(expectedDistance, Is.EqualTo(currentLeg.Distance).Using(new ValueTextComparer(StringComparer.InvariantCultureIgnoreCase)));
            Assert.That(expectedDuration, Is.EqualTo(currentLeg.Duration).Using(new ValueTextComparer(StringComparer.InvariantCultureIgnoreCase)));

            Assert.That(expectedSteps, Is.EqualTo(currentLeg.Steps.Count()), "Leg.Steps");

            Assert.That(expectedSummary, Is.EqualTo(response.Routes[0].Summary), "Route.Summary");
        }
示例#15
0
 public Uri GetRequestUriWithBaseUri(DirectionRequest request)
 {
     return(new Uri(this.BaseUri, request.ToUri()));
 }
        public async Task <DirectionResponse> GetResponseAsync(DirectionRequest request)
        {
            var url = new Uri(baseUri, request.ToUri());

            return(await http.GetAsync <DirectionResponse>(url));
        }
        public DirectionResponse GetResponse(DirectionRequest request)
        {
            var url = new Uri(baseUri, request.ToUri());

            return(http.Get <DirectionResponse>(url));
        }