/* Method to a list of routing between two addresses */ public List <Routing> GetItineraryBetweenTwoAddress(string startingAddress, string destination) { Point startingAddressPoint = getCoordinatesFromAddress(startingAddress); Point destinationPoint = getCoordinatesFromAddress(destination); List <Routing> routings = new List <Routing>(); if (startingAddressPoint != null && destinationPoint != null) { WebProxyService.Station[] stations = webProxyService.GetStationsForContract(startingAddressPoint.city); Itinerary footItinerary = getFootItinerary(startingAddressPoint, destinationPoint); if (stations != null && stations.Length > 0) { GeoCoordinate startPointCoord = new GeoCoordinate(Convert.ToDouble(startingAddressPoint.latitude), Convert.ToDouble(startingAddressPoint.longitude)); GeoCoordinate endPointCoord = new GeoCoordinate(Convert.ToDouble(destinationPoint.latitude), Convert.ToDouble(destinationPoint.longitude)); WebProxyService.Station startPointNearestStation = getNearestAvailableStation(stations, startPointCoord, startingAddressPoint.city); WebProxyService.Station endPointNearestStation = getNearestAvailableStation(stations, endPointCoord, destinationPoint.city); List <Itinerary> itineraries = new List <Itinerary>(); itineraries.Add(getFootItinerary(startingAddressPoint, new Point(startPointNearestStation.position.latitude, startPointNearestStation.position.longitude))); itineraries.Add(getBikeItinerary(new Point(startPointNearestStation.position.latitude, startPointNearestStation.position.longitude), new Point(endPointNearestStation.position.latitude, endPointNearestStation.position.longitude))); itineraries.Add(getFootItinerary(new Point(endPointNearestStation.position.latitude, endPointNearestStation.position.longitude), destinationPoint)); float total_duration = 0; foreach (var itineray in itineraries) { total_duration += itineray.routes[0].duration; } if (footItinerary.routes[0].duration < total_duration) { routings.Add(createRouting("Foot", footItinerary.routes[0].duration, startingAddressPoint, destinationPoint, footItinerary.routes[0].legs[0].steps)); } else { routings.Add(createRouting("Foot", itineraries[0].routes[0].duration, startingAddressPoint, new Point(startPointNearestStation), itineraries[0].routes[0].legs[0].steps)); routings.Add(createRouting("Bike", itineraries[1].routes[0].duration, new Point(startPointNearestStation), new Point(endPointNearestStation), itineraries[1].routes[0].legs[0].steps)); routings.Add(createRouting("Foot", itineraries[2].routes[0].duration, new Point(endPointNearestStation), destinationPoint, itineraries[2].routes[0].legs[0].steps)); stationLog.AddLogForStation(startPointNearestStation.name); stationLog.AddLogForStation(endPointNearestStation.name); } } else { routings.Add(createRouting("Foot", footItinerary.routes[0].duration, startingAddressPoint, destinationPoint, footItinerary.routes[0].legs[0].steps)); } } WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*"); return(routings); }