private void clusterGeocaches(bool recluster) { List <Marker> mlist = new List <Marker>(); if (Core.ApplicationData.Instance.ActiveDatabase != null && TargetGeocaches != GeocachesOnMap.Active) { double lat1 = this.tileCanvas.MapControlFactory.TileGenerator.GetLatitude(0, this.tileCanvas.Zoom); double lat2 = this.tileCanvas.MapControlFactory.TileGenerator.GetLatitude(1, this.tileCanvas.Zoom); double deltaLat = 200 * (lat1 - lat2) / 256.0; //200px double lon1 = this.tileCanvas.MapControlFactory.TileGenerator.GetLongitude(0, this.tileCanvas.Zoom); double lon2 = this.tileCanvas.MapControlFactory.TileGenerator.GetLongitude(1, this.tileCanvas.Zoom); double deltaLon = 200 * (lon2 - lon1) / 256.0; //200px if (_clusterGeocaches == null || recluster) { _clusterGeocaches = new MarkerClusterer(deltaLat, deltaLon); bool addAll = TargetGeocaches == GeocachesOnMap.All; bool doCluster = this.tileCanvas.Zoom < 12; foreach (var gc in Core.ApplicationData.Instance.ActiveDatabase.GeocacheCollection) { if (gc != Core.ApplicationData.Instance.ActiveGeocache && (addAll || gc.Selected)) { _clusterGeocaches.AddMarker(gc, doCluster); } } } //add markers foreach (var b in _clusterGeocaches.Buckets) { Marker m = new Marker(); m.Latitude = b.Latitude; m.Longitude = b.Longitude; if (b.Count == 1) { m.ImagePath = string.Format("/resources/CacheTypes/Map/{0}.png", b.Geocache.GeocacheType.ID); m.Tag = b.Geocache; } else { m.ImagePath = ""; m.Tag = b.Count; } mlist.Add(m); } } this.SetGeocacheMarkers(mlist); }
private void clusterGeocaches(bool recluster) { List <Marker> mlist = new List <Marker>(); if (_gcList != null) { double lat1 = this.tileCanvas.MapControlFactory.TileGenerator.GetLatitude(0, this.tileCanvas.Zoom); double lat2 = this.tileCanvas.MapControlFactory.TileGenerator.GetLatitude(1, this.tileCanvas.Zoom); double deltaLat = 200 * (lat1 - lat2) / 256.0; //200px double lon1 = this.tileCanvas.MapControlFactory.TileGenerator.GetLongitude(0, this.tileCanvas.Zoom); double lon2 = this.tileCanvas.MapControlFactory.TileGenerator.GetLongitude(1, this.tileCanvas.Zoom); double deltaLon = 200 * (lon2 - lon1) / 256.0; //200px if (_clusterGeocaches == null || recluster) { _clusterGeocaches = new MarkerClusterer(deltaLat, deltaLon); bool doCluster = this.tileCanvas.Zoom < 12; foreach (var gc in _gcList) { _clusterGeocaches.AddMarker(gc, doCluster); } } //add markers foreach (var b in _clusterGeocaches.Buckets) { Marker m = new Marker(); m.Latitude = b.Latitude; m.Longitude = b.Longitude; if (b.Count == 1) { m.ImagePath = string.Format("/Resources/Map/{0}.png", (from a in ApplicationData.Instance.GeocacheTypes where a.GSAK == b.Geocache.CacheType select a.ID).FirstOrDefault()); m.Tag = b.Geocache; } else { m.ImagePath = ""; m.Tag = b.Count; } mlist.Add(m); } } this.SetGeocacheMarkers(mlist); }