Ejemplo n.º 1
0
        /// <summary>
        /// Handler for zoom level change.
        /// This handler will deal with overlays visibility, change MARKERS images according to zoom level.
        /// </summary>
        /// <param name="gmap">Map control</param>
        public static void OnMapZoomChanged(GMapControl gmap)
        {
            gmap.HoldInvalidation = true;
            int         iz      = GMapMarkerImages.ReturnImageLevelFromZoom(gmap.Zoom);
            GMapOverlay overlay = gmap.Overlays[GMapWrapper.MARKERS];

            foreach (GMapMarker m in overlay.Markers)
            {
                GMapMarkerImages.ChangeImageAccordingToZoom((GMapMarkerImages)m, iz);
            }
            gmap.Refresh();

            // on désactive pour les zoom très éloignés certains overlay
            GMapWrapper.HandleOverlaysVisibility(gmap, iz, gmap.Zoom);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Create a GMapMarkerImages (marker with several possible images)
        /// This marker will render a different image for each predefined zoom level:
        /// </summary>
        /// <param name="markersOverlay">Associated overlay</param>
        /// <param name="liste">Image list</param>
        /// <param name="indexZoomMicro">Value for Micro zoom</param>
        /// <param name="indexZoomMin">Value for Minimum zoom</param>
        /// <param name="indexZoomMed">Value for Medium zoom</param>
        /// <param name="indexZoomHigh">Value for High zoom</param>
        /// <param name="lat">Marker latitude</param>
        /// <param name="lon">Marker longitude</param>
        /// <param name="tooltip">Marker tooltip</param>
        /// <returns>Created GMapMarkerImage</returns>
        static public GMapMarkerImages gmapMarkerWithImages(GMapOverlay markersOverlay, List <Image> liste, int indexZoomMicro, int indexZoomMin, int indexZoomMed, int indexZoomHigh, double lat, double lon, String tooltip)
        {
            GMapMarkerImages marker = new GMapMarkerImages(liste, indexZoomMicro, indexZoomMin, indexZoomMed, indexZoomHigh, new PointLatLng(lat, lon), null);

            if (tooltip != "")
            {
                marker.ToolTipMode = MarkerTooltipMode.OnMouseOver;
                marker.ToolTipText = tooltip;
            }
            try
            {
                markersOverlay.Markers.Add(marker);
            }
            catch (Exception)
            {
                // Peut être un problème de provider ?
                marker = null;
            }
            return(marker);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Create a GMapMarkerImages (marker with several possible images)
        /// This marker will render a different image for each predefined zoom level:
        /// </summary>
        /// <param name="markersOverlay">Associated overlay</param>
        /// <param name="liste">Image list</param>
        /// <param name="indexZoomMicro">Value for Micro zoom</param>
        /// <param name="indexZoomMin">Value for Minimum zoom</param>
        /// <param name="indexZoomMed">Value for Medium zoom</param>
        /// <param name="indexZoomHigh">Value for High zoom</param>
        /// <param name="lat">Marker latitude</param>
        /// <param name="lon">Marker longitude</param>
        /// <param name="geo">Associated geocache</param>
        /// <param name="daddy">Reference to main window (MainWindow instance), used for callback purposes</param>
        /// <returns>Created GMapMarkerImages</returns>
        static public GMapMarkerImages gmapMarkerWithImages(GMapOverlay markersOverlay, List <Image> liste, int indexZoomMicro, int indexZoomMin, int indexZoomMed, int indexZoomHigh, double lat, double lon, Geocache geo, MainWindow daddy)
        {
            GMapMarkerImages  marker  = new GMapMarkerImages(liste, indexZoomMicro, indexZoomMin, indexZoomMed, indexZoomHigh, new PointLatLng(lat, lon), geo);
            GMapToolTipCustom tooltip = new GMapToolTipCustom(daddy, geo, marker);

            marker.ToolTip     = tooltip;
            marker.ToolTipMode = MarkerTooltipMode.OnMouseOver;
            marker.ToolTipText = "empty";

            try
            {
                markersOverlay.Markers.Add(marker);
            }
            catch (Exception)
            {
                // Peut être un problème de provider ?
                marker = null;
            }
            return(marker);
        }
Ejemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="stm"></param>
        /// <param name="dbname"></param>
        /// <param name="updatedaddy"></param>
        /// <returns></returns>
        public List <Geocache> PerformSelect(String stm, String dbname, bool updatedaddy = true)
        {
            //stm = "SELECT * FROM GeocacheFull";// WHERE Code LIKE 'GC51R62'";
            GMapOverlay overlaybigview = _daddy._cacheDetail._gmap.Overlays[GMapWrapper.MARKERS];
            String      owner          = ConfigurationManager.AppSettings["owner"].ToLower();

            List <Geocache> caches = new List <Geocache>();

            // On fait le boulot dans le worker
            try
            {
                // On requête depuis la DB
                string cs = _dbpath;
                using (SQLiteConnection con = new SQLiteConnection(cs))
                {
                    con.Open();

                    using (SQLiteCommand cmd = new SQLiteCommand(con))
                    {
                        // retrieve values
                        using (SQLiteCommand cmd2 = new SQLiteCommand(stm, con))
                        {
                            using (SQLiteDataReader rdr = cmd2.ExecuteReader())
                            {
                                while (rdr.Read())
                                {
                                    Geocache geo  = null;
                                    String   code = rdr["Code"] as String;
                                    if (!updatedaddy || ((_daddy._caches.ContainsKey(code) == false) || ((_daddy._caches[code]._origin.Count == 1) && (_daddy._caches[code]._origin.Contains("CACHECACHE")))))
                                    {
                                        geo = FillGeocache(_daddy, owner, dbname, code, rdr, con);

                                        // On le rajoute aux données de MGM s'il n'est pas à ignorer
                                        if (updatedaddy)
                                        {
                                            if (_daddy._ignoreList.ContainsKey(geo._Code) == false)
                                            {
                                                // Ajoute à la liste générale
                                                if (_daddy._caches.ContainsKey(code))
                                                {
                                                    _daddy._caches[code] = geo;
                                                }
                                                else
                                                {
                                                    _daddy._caches.Add(geo._Code, geo);
                                                }


                                                // On met à jour le status de la cache
                                                _daddy.ChangeCacheStatusBasedonMGM(geo);

                                                // On affiche sur la cache
                                                GMapMarkerImages[] createdmarkers = _daddy.DisplayCacheOnMaps(geo, null, overlaybigview, null);

                                                // On adapte le niveau de zoom au markere créé
                                                int iz = GMapMarkerImages.ReturnImageLevelFromZoom(_daddy._cacheDetail._gmap.Zoom);
                                                GMapMarkerImages.ChangeImageAccordingToZoom((GMapMarkerImages)(createdmarkers[1]), iz);
                                            }
                                            else
                                            {
                                                // La cache était dans Daddy, c'est sûrement mieux
                                                geo = _daddy._caches[code];
                                            }
                                        }
                                        // on ajoute à la liste à afficher
                                        caches.Add(geo);
                                    }
                                }
                            }
                        }
                    }
                    con.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }

            return(caches);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Hide overlays of a map control if needed.
        /// Some overlays will be hiden for low zoom levels
        /// Zoom level will be automatically retrieved from map control
        /// </summary>
        /// <param name="gmap">Map control</param>
        public static void HandleOverlaysVisibility(GMapControl gmap)
        {
            int iz = GMapMarkerImages.ReturnImageLevelFromZoom(gmap.Zoom);

            GMapWrapper.HandleOverlaysVisibility(gmap, iz, gmap.Zoom);
        }