public List <PhotoMapItem> GetClasteredItems(MapControl map, List <DmFile> files, double distanceRadius) { SimpleGraph graph = new SimpleGraph(EarthDistanceCalculator.Default); files.ForEach((file) => { if (file.HasGeoLocation) { graph.Vertexes.Add(CreateVertex(map, file)); } }); graph.CalculateEdges(); GraphSegmentator segmentator = new GraphSegmentator(graph); ArrayList segments = segmentator.DoSegmentation(distanceRadius); List <PhotoMapItem> items = new List <PhotoMapItem>(); foreach (SimpleSegment segment in segments) { PhotoMapItem item = new PhotoMapItem(); double x = 0.0, y = 0.0; foreach (SimpleVertex v in segment.Vertexes) { item.Files.Add((DmFile)v.Tag); x += v.X; y += v.Y; } x /= segment.Vertexes.Count; y /= segment.Vertexes.Count; item.Location = new GeoPoint(x, y); item.Image = ThumbHelper.GetIconImage(((DmFile)((SimpleVertex)segment.Vertexes[0]).Tag)); items.Add(item); } return(items); }