コード例 #1
0
ファイル: PoiManager.cs プロジェクト: patel-pragnesh/KutyApp
        public async Task <List <PoiDto> > ListClosestPoisAsync(SearchPoiDto search)
        {
            if (search == null)
            {
                throw new ArgumentNullException(nameof(search));
            }

            IQueryable <Poi> query = DbContext.Pois;

            //TODO: null-t nem engedni
            IPoint location = null;

            //order by distance
            if (search.Longitude.HasValue && search.Latitude.HasValue)
            {
                location = LocationManager.GeometryFactory.CreatePoint(new GeoAPI.Geometries.Coordinate(search.Longitude.Value, search.Latitude.Value));
                //TODO: valszeg ez nem marad szimplan query
                query = query.OrderBy(p => p.Location.Distance(location));
            }

            var result = await query.Select(x => new { Poi = x, Distance = location != null ? x.Location.Distance(location) : 0 }).ToListAsync();

            var pois = Mapper.Map <List <PoiDto> >(result.Select(r => r.Poi).ToList());

            pois.ForEach(t => t.Distance = GeoCalculator.GetDistance(location.Y, location.X, t.Latitude, t.Longitude, 1, DistanceUnit.Kilometers));

            return(pois);
        }
コード例 #2
0
 public async Task <ActionResult <List <PoiDto> > > ListClosestPoisAsync(SearchPoiDto search) =>
 Result(await PoiManager.ListClosestPoisAsync(search));