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)); }
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) }); }
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"); }
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)); }