Ejemplo n.º 1
0
 public IActionResult GetGoogleOptimalRoute([FromBody] MapOtimizedRouteRequest optimalRouteRequest)
 {
     if (optimalRouteRequest.Markers.Count() > 1)
     {
         if (optimalRouteRequest.Markers.Count() < 11)
         {
             var markers = markerService.MarkersBeforeRouteWork(optimalRouteRequest.Markers);
             optimalRouteRequest.Markers = markers;
             var response = routeLegService.GetGoogleOptimalRoute(optimalRouteRequest);
             markerService.UpdateMarkers(response.Markers);
             return(Json(new { success = true, otimizedRoute = response }));
         }
         else
         {
             return(Json(new
             {
                 success = false,
                 msg = "Maximum number of route points - 10. You can not build a route."
             }));
         }
     }
     else
     {
         return(Json(new
         {
             success = false,
             msg = "To build a route must be at least 2 points"
         }));
     }
 }
Ejemplo n.º 2
0
        public MapOtimizedRouteResponce GetGoogleOptimalRoute(MapOtimizedRouteRequest optimalRouteRequest)
        {
            var startPoint = optimalRouteRequest.Markers.FirstOrDefault(marker => marker.MarkerType == MarkerType.StartPoint)?.Point;
            var endPoint   = optimalRouteRequest.Markers.FirstOrDefault(marker => marker.MarkerType == MarkerType.EndPoint)?.Point;
            var wayPoints  = optimalRouteRequest.Markers.Where(marker => marker.MarkerType == MarkerType.WayPoint).Select(x => x.Point);

            string options = "&departure_time=now";

            options += "&traffic_model=" + optimalRouteRequest.OptimalRouteOption.ToString();


            var apiResponce = googleApi.GetGoogleOptimalRoute(startPoint, endPoint, wayPoints, options);


            var markers = MarkerService.MarkersWaypointsReOrder(optimalRouteRequest.Markers, apiResponce.WaypointOrder.ToList()).OrderBy(x => x.Index).ToArray();
            var legs    = apiResponce.Legs;

            for (int i = 0; i < markers.Count() - 1; i++)
            {
                legs[i].StartPoint = markers[i].PointId;
                legs[i].EndPoint   = markers[i + 1].PointId;
            }

            return(new MapOtimizedRouteResponce()
            {
                Legs = legs,
                Markers = markers,
                Polyline = apiResponce.Polyline
            });
        }