/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }