Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }