public OperationResult <OpenElevationResponseDto> GetElevationList(OpenElevationRequestDto request)
        {
            var countlist         = request.CoordinateList.Count();
            var response          = new OperationResult <OpenElevationResponseDto>();
            var responseServiceOk = new OpenElevationResponseDto()
            {
                ResultList = new List <Shared.Dto.ElevationDto>()
            };
            var count = 0;
            var ok    = true;

            while ((count <= countlist) && countlist >= 1 && ok)
            {
                var sendList = request.CoordinateList.Where((x, y) => y >= count && y < count + 51).ToList();

                var newReq = new OpenElevationRequestDto()
                {
                    CoordinateList = sendList
                };
                var responseService = service.CallServicePost <OpenElevationRequestDto, OpenElevationResponseDto>(newReq, string.Empty);//"api/v1/lookup");
                if (responseService.Failure)
                {
                    response = responseService;
                    ok       = false;
                }
                responseServiceOk.ResultList.AddRange(responseService.Result.ResultList);
                count = count + 51;
            }
            return(response);
            //return service.CallServicePost<OpenElevationRequestDto, OpenElevationResponseDto>(request, string.Empty);//"api/v1/lookup");
        }
Ejemplo n.º 2
0
        public OperationResult <OpenElevationResponseDto> GetElevationList(OpenElevationRequestDto request)
        {
            var countlist         = request.CoordinateList.Count();
            var response          = new OperationResult <OpenElevationResponseDto>();
            var responseServiceOk = new OpenElevationResponseDto()
            {
                ResultList = new List <Shared.Dto.ElevationDto>()
            };
            var count = 0;
            var ok    = true;

            while ((count <= countlist) && countlist >= 1 && ok)
            {
                var sendList = request.CoordinateList.Where((x, y) => y >= count && y < count + 98).ToList();

                if (sendList.Any())
                {
                    var newUrl    = url + "/nzdem8m,mapzen?locations=";
                    var locations = sendList.Select(x => x.Latitude.ToString() + "," + x.Longitude.ToString())
                                    .Aggregate((x, y) => x + "|" + y);

                    newUrl = newUrl + locations;

                    var responseService = service.CallServiceGet <OpoElevationResponseDto>(newUrl);
                    if (responseService.Failure)
                    {
                        response = new OperationResult <OpenElevationResponseDto>(responseService.ErrorList);
                        ok       = false;
                    }

                    if (responseService.Result.Status != "OK")
                    {
                        response = new OperationResult <OpenElevationResponseDto>(ErrorDto.BuildTechnical(responseService.Result.Status));
                        ok       = false;
                    }
                    var resulConvertList = responseService.Result.ResultList.Select(x => new Shared.Dto.ElevationDto()
                    {
                        Latitude  = x.Location.Latitude,
                        Longitude = x.Location.Longitude,
                        Elevation = x.Elevation
                    });
                    responseServiceOk.ResultList.AddRange(resulConvertList);
                }
                count = count + 98;
            }
            return(new OperationResult <OpenElevationResponseDto>(responseServiceOk));
        }