public virtual IList <MapCluster> GetMapClusters(GetMapClustersParam param) { ZoomLevel = param.ZoomLevel; // var storesInBounds = param.Locations.Where(store => InBounds(param.MapBounds, store)); var context = new ClusteringContext(); foreach (var store in param.Locations) { AddToClosestCluster(context, store); } return(context.Clusters); }
protected virtual List <StoreClusterViewModel> GetMarkers(GetStoreLocatorViewModelParam param, List <Overture.ServiceModel.Customers.Stores.Store> stores, Dictionary <string, int> storeIndexes) { var getClusterParams = new GetMapClustersParam { ZoomLevel = param.ZoomLevel, SearchPoint = param.SearchPoint, Locations = stores.Select(s => new StoreGeoCoordinate(s)).Cast <IGeoCoordinate>().ToList() }; var clusters = MapClustererProvider.GetMapClusters(getClusterParams); return(clusters.Select(c => new StoreClusterViewModel { Center = c.Center, Tile = c.Tile, ItemsCount = c.ItemsCount, StoreNumber = c.StoreNumber, SearchIndex = c.ItemsCount == 1 ? storeIndexes[c.StoreNumber] : 0 }).ToList()); }