Beispiel #1
0
        PureImage PureImageCache.GetImageFromCache(int type, GPoint pos, int zoom)
        {
            PureImage ret = null;

            try
            {
                string file = CacheLocation + Path.DirectorySeparatorChar + GMapProviders.TryGetProvider(type).Name + Path.DirectorySeparatorChar + zoom + Path.DirectorySeparatorChar + pos.Y + Path.DirectorySeparatorChar + pos.X + ".jpg";
                if (File.Exists(file))
                {
                    using (BinaryReader sr = new BinaryReader(File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read)))
                    {
                        byte[] tile = sr.ReadBytes((int)sr.BaseStream.Length);

                        MemoryStream stm = new MemoryStream(tile, 0, tile.Length, false, true);

                        ret = GMapImageProxy.Instance.FromStream(stm);
                        if (ret != null)
                        {
                            ret.Data = stm;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
#if MONO
                Console.WriteLine("GetImageFromCache: " + ex.ToString());
#endif
                Debug.WriteLine("GetImageFromCache: " + ex.ToString());
                ret = null;
            }

            return(ret);
        }
Beispiel #2
0
        void ProcessRequest(object p)
        {
            try
            {
                using (var c = p as TcpClient)
                {
                    using (var s = c.GetStream())
                    {
                        using (var r = new StreamReader(s, Encoding.UTF8))
                        {
                            string request = r.ReadLine();

                            if (!string.IsNullOrEmpty(request) && request.StartsWith("GET"))
                            {
                                //Debug.WriteLine("TileHttpHost: " + request);

                                // http://localhost:88/88888/5/15/11
                                // GET /8888888888/5/15/11 HTTP/1.1

                                var rq = request.Split(' ');
                                if (rq.Length >= 2)
                                {
                                    var ids = rq[1].Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
                                    if (ids.Length == 4)
                                    {
                                        int dbId = int.Parse(ids[0]);
                                        int zoom = int.Parse(ids[1]);
                                        int x    = int.Parse(ids[2]);
                                        int y    = int.Parse(ids[3]);

                                        var pr = GMapProviders.TryGetProvider(dbId);
                                        if (pr != null)
                                        {
                                            Exception ex;
                                            var       img = GMaps.Instance.GetImageFrom(pr, new GPoint(x, y), zoom, out ex);
                                            if (img != null)
                                            {
                                                using (img)
                                                {
                                                    s.Write(responseHeaderBytes, 0, responseHeaderBytes.Length);
                                                    img.Data.WriteTo(s);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    c.Close();
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("TileHttpHost, ProcessRequest: " + ex);
            }

            //Debug.WriteLine("disconnected");
        }
Beispiel #3
0
 // Methods
 static TencentTerrainMapAnnoProvider()
 {
     //UrlFormat = "http://rt{0}.map.gtimg.com/realtimerender?z={1}&x={2}&y={3}&type=vector&style=1&v=1.1";
     UrlFormat = "https://rt{0}.map.gtimg.com/tile?z={1}&x={2}&y={3}&type=vector&styleid=3&version=597"; //地形路网用
     Instance  = new TencentTerrainMapAnnoProvider();
     GMapProviders.AddMapProvider(Instance);
 }
Beispiel #4
0
        bool PureImageCache.PutImageToCache(byte[] tile, int type, GPoint pos, int zoom)
        {
            bool ret = true;

            if (Created)
            {
                try
                {
                    string file = CacheLocation + Path.DirectorySeparatorChar + GMapProviders.TryGetProvider(type).Name + Path.DirectorySeparatorChar + zoom + Path.DirectorySeparatorChar + pos.Y + Path.DirectorySeparatorChar + pos.X + ".jpg";
                    string dir  = Path.GetDirectoryName(file);
                    Directory.CreateDirectory(dir);
                    using (BinaryWriter sw = new BinaryWriter(File.OpenWrite(file)))
                    {
                        sw.Write(tile.ToArray());
                    }
                }
                catch (Exception ex)
                {
#if MONO
                    Console.WriteLine("PutImageToCache: " + ex.ToString());
#endif
                    Debug.WriteLine("PutImageToCache: " + ex.ToString());
                    ret = false;
                }
            }
            return(ret);
        }
Beispiel #5
0
        int PureImageCache.DeleteOlderThan(DateTime date, int?type)
        {
            int affectedRows = 0;

            if (!type.HasValue)
            {
                return(0);
            }

            string file = CacheLocation + Path.DirectorySeparatorChar + GMapProviders.TryGetProvider(type.Value).Name +
                          Path.DirectorySeparatorChar;

            if (!Directory.Exists(file))
            {
                return(0);
            }

            string[] files = Directory.GetFiles(file, "*.jpg", SearchOption.AllDirectories);

            foreach (var filen in files)
            {
                try
                {
                    var fi = new FileInfo(filen);
                    if (fi.CreationTime < date)
                    {
                        File.Delete(filen);
                        affectedRows++;
                    }
                }
                catch
                {
                }
            }

            files = Directory.GetFiles(file, "*.png", SearchOption.AllDirectories);

            foreach (var filen in files)
            {
                try
                {
                    var fi = new FileInfo(filen);
                    if (fi.CreationTime < date)
                    {
                        File.Delete(filen);
                        affectedRows++;
                    }
                }
                catch
                {
                }
            }

            return(affectedRows);
        }
        public PureImage GetImageFromCache(int type, GPoint pos, int zoom)
        {
            if (!_地图字典.ContainsKey(type))
            {
                _地图字典[type] = GMapProviders.TryGetProvider(type);
            }
            var __地图 = _地图字典[type];
            var url  = string.Format("{0}/{1}/{2}/{3}/{4}", _host, __地图.Name, zoom, pos.X, pos.Y);

            return(GetTileImageUsingHttp(url));
        }
Beispiel #7
0
        private void MainDlg_Load(object sender, EventArgs e)
        {
            // start minimized if enabled
            if (Properties.Settings.Default.Windows_Startup_Minimized)
            {
                WindowState = FormWindowState.Minimized;
            }
            else
            {
                WindowState = FormWindowState.Normal;
            }
            // reset FirstRun flag
            Properties.Settings.Default.Application_FirstRun = false;

            // set initial settings for CoverageMap
            // setting User Agent to fix Open Street Map issue 2016-09-20
            GMap.NET.MapProviders.GMapProvider.UserAgent = "AirScout";
            // clearing referrer URL issue 2019-12-14
            gm_Planes_Coverage.MapProvider.RefererUrl   = "";
            gm_Planes_Coverage.MapProvider              = GMapProviders.Find(Properties.Settings.Default.Planes_MapProvider);
            gm_Planes_Coverage.IgnoreMarkerOnMouseWheel = true;
            gm_Planes_Coverage.MinZoom             = 0;
            gm_Planes_Coverage.MaxZoom             = 20;
            gm_Planes_Coverage.Zoom                = 6;
            gm_Planes_Coverage.DragButton          = System.Windows.Forms.MouseButtons.Left;
            gm_Planes_Coverage.CanDragMap          = true;
            gm_Planes_Coverage.ScalePen            = new Pen(Color.Black, 3);
            gm_Planes_Coverage.HelperLinePen       = null;
            gm_Planes_Coverage.SelectionPen        = null;
            gm_Planes_Coverage.MapScaleInfoEnabled = true;
            gm_Planes_Coverage.Overlays.Add(gmo_Planes_Coverage);

            // keep startup time
            StartupTime = DateTime.UtcNow;

            // start database

            // enable/disable functions
            cb_WebFeed1_Active_CheckedChanged(this, null);
            cb_WebFeed2_Active_CheckedChanged(this, null);
            cb_WebFeed3_Active_CheckedChanged(this, null);
            cb_Log_Active_CheckedChanged(this, null);
            cb_Server_Active_CheckedChanged(this, null);

            // start timer
            ti_Main.Enabled = true;
            ti_Main.Start();

            // start background workers
            bw_JSONWriter.RunWorkerAsync();
            bw_DatabaseUpdater.RunWorkerAsync();
        }
Beispiel #8
0
        public TrafficDlg()
        {
            InitializeComponent();

            // set initial settings for Map
            gm_Options_Traffic.MapProvider = GMapProviders.Find(Properties.Settings.Default.Map_Provider);
            gm_Options_Traffic.IgnoreMarkerOnMouseWheel = true;
            gm_Options_Traffic.MinZoom             = 0;
            gm_Options_Traffic.MaxZoom             = 20;
            gm_Options_Traffic.Zoom                = 6;
            gm_Options_Traffic.DragButton          = System.Windows.Forms.MouseButtons.Left;
            gm_Options_Traffic.CanDragMap          = true;
            gm_Options_Traffic.ScalePen            = new Pen(Color.Black, 3);
            gm_Options_Traffic.HelperLinePen       = null;
            gm_Options_Traffic.SelectionPen        = null;
            gm_Options_Traffic.MapScaleInfoEnabled = true;
            gm_Options_Traffic.Overlays.Add(Coveragepolygons);
            gm_Options_Traffic.Overlays.Add(routes);

            // add tile to map polygons
            List <PointLatLng> l = new List <PointLatLng>();

            l.Add(new PointLatLng(Properties.Settings.Default.MinLat, Properties.Settings.Default.MinLon));
            l.Add(new PointLatLng(Properties.Settings.Default.MinLat, Properties.Settings.Default.MaxLon));
            l.Add(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MaxLon));
            l.Add(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon));
            GMapPolygon p = new GMapPolygon(l, "Coverage");

            p.Stroke = new Pen(Color.FromArgb(255, Color.Magenta), 3);
            p.Fill   = new SolidBrush(Color.FromArgb(0, Color.Magenta));
            Coveragepolygons.Polygons.Add(p);
            // zoom the map
            gm_Options_Traffic.SetZoomToFitRect(RectLatLng.FromLTRB(Properties.Settings.Default.MinLon - 1, Properties.Settings.Default.MaxLat + 1, Properties.Settings.Default.MaxLon + 1, Properties.Settings.Default.MinLat - 1));

            try
            {
                dtp_Options_Traffic_Start.Value = AircraftPositionData.Database.AircraftPositionOldestEntry();
                dtp_Options_Traffic_Stop.Value  = AircraftPositionData.Database.AircraftPositionYoungestEntry();
            }
            catch
            {
                dtp_Options_Traffic_Start.Value = DateTime.UtcNow;
                dtp_Options_Traffic_Stop.Value  = DateTime.UtcNow;
            }
        }
Beispiel #9
0
 private void readJsonMap()
 {
     using (StreamReader reader = new StreamReader("Maps.json"))
     {
         string json = reader.ReadToEnd();
         JArray list = JArray.Parse(json);
         foreach (JObject data in list.Children())
         {
             mapModes.Add(new MapMode
             {
                 Name           = (string)data["Name"],
                 MapProvider    = GMapProviders.TryGetProvider((string)data["Type"]),
                 MainMapMinZoom = (int)data["MainMapMinZoom"],
                 MainMapMaxZoom = (int)data["MainMapMaxZoom"],
                 MiniMapMinZoom = (int)data["MiniMapMinZoom"],
                 MiniMapMaxZoom = (int)data["MiniMapMaxZoom"]
             });
         }
     }
 }
 public void ChangeMapType(string id)
 {
     mainMap.MapProvider = GMapProviders.TryGetProvider(new Guid(id));
 }
Beispiel #11
0
        public MainWindow()
        {
            InitializeComponent();

            // add your custom map db provider
            //MySQLPureImageCache ch = new MySQLPureImageCache();
            //ch.ConnectionString = @"server=sql2008;User Id=trolis;Persist Security Info=True;database=gmapnetcache;password=trolis;";
            //MainMap.Manager.SecondaryCache = ch;

            // set your proxy here if need
            //GMapProvider.IsSocksProxy = true;
            //GMapProvider.WebProxy = new WebProxy("127.0.0.1", 1080);
            //GMapProvider.WebProxy.Credentials = new NetworkCredential("*****@*****.**", "bilgeada");
            // or
            //GMapProvider.WebProxy = WebRequest.DefaultWebProxy;
            //

            // set cache mode only if no internet avaible
            if (!Stuff.PingNetwork("pingtest.com"))
            {
                MainMap.Manager.Mode = AccessMode.CacheOnly;
                MessageBox.Show("No internet connection available, going to CacheOnly mode.", "GMap.NET - Demo.WindowsPresentation", MessageBoxButton.OK, MessageBoxImage.Warning);
            }

            // config map
            GMapProviders.AddProvider(new OpenStreetMapPrivateProvider("tileserver", "http://tileserver/osm_tiles/{0}/{1}/{2}.png"));
            MainMap.MapProvider = GMapProviders.OpenStreetMap;
            MainMap.Position    = new PointLatLng(54.6961334816182, 25.2985095977783);

            //MainMap.ScaleMode = ScaleModes.Dynamic;

            // map events
            MainMap.OnPositionChanged   += new PositionChanged(MainMap_OnCurrentPositionChanged);
            MainMap.OnTileLoadComplete  += new TileLoadComplete(MainMap_OnTileLoadComplete);
            MainMap.OnTileLoadStart     += new TileLoadStart(MainMap_OnTileLoadStart);
            MainMap.OnMapTypeChanged    += new MapTypeChanged(MainMap_OnMapTypeChanged);
            MainMap.MouseMove           += new System.Windows.Input.MouseEventHandler(MainMap_MouseMove);
            MainMap.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(MainMap_MouseLeftButtonDown);
            MainMap.MouseEnter          += new MouseEventHandler(MainMap_MouseEnter);

            // get map types
            comboBoxMapType.ItemsSource       = GMapProviders.List;
            comboBoxMapType.DisplayMemberPath = "Name";
            comboBoxMapType.SelectedItem      = MainMap.MapProvider;

            // acccess mode
            comboBoxMode.ItemsSource  = Enum.GetValues(typeof(AccessMode));
            comboBoxMode.SelectedItem = MainMap.Manager.Mode;

            // get cache modes
            checkBoxCacheRoute.IsChecked = MainMap.Manager.UseRouteCache;
            checkBoxGeoCache.IsChecked   = MainMap.Manager.UseGeocoderCache;

            // setup zoom min/max
            sliderZoom.Maximum = MainMap.MaxZoom;
            sliderZoom.Minimum = MainMap.MinZoom;

            // get position
            textBoxLat.Text = MainMap.Position.Lat.ToString(CultureInfo.InvariantCulture);
            textBoxLng.Text = MainMap.Position.Lng.ToString(CultureInfo.InvariantCulture);

            // get marker state
            checkBoxCurrentMarker.IsChecked = true;

            // can drag map
            checkBoxDragMap.IsChecked = MainMap.CanDragMap;

#if DEBUG
            checkBoxDebug.IsChecked = true;
#endif

            //validator.Window = this;

            // set current marker
            currentMarker = new GMapMarker(MainMap.Position);
            {
                currentMarker.Shape  = new CustomMarkerRed(this, currentMarker, "custom position marker");
                currentMarker.Offset = new System.Windows.Point(-15, -15);
                currentMarker.ZIndex = int.MaxValue;
                MainMap.Markers.Add(currentMarker);
            }

            //if(false)
            {
                // add my city location for demo
                GeoCoderStatusCode status = GeoCoderStatusCode.Unknow;

                PointLatLng?city = GMapProviders.GoogleMap.GetPoint("Lithuania, Vilnius", out status);
                if (city != null && status == GeoCoderStatusCode.G_GEO_SUCCESS)
                {
                    GMapMarker it = new GMapMarker(city.Value);
                    {
                        it.ZIndex = 55;
                        it.Shape  = new CustomMarkerDemo(this, it, "Welcome to Lithuania! ;}");
                    }
                    MainMap.Markers.Add(it);

                    #region -- add some markers and zone around them --
                    //if(false)
                    {
                        List <PointAndInfo> objects = new List <PointAndInfo>();
                        {
                            string      area = "Antakalnis";
                            PointLatLng?pos  = GMapProviders.GoogleMap.GetPoint("Lithuania, Vilnius, " + area, out status);
                            if (pos != null && status == GeoCoderStatusCode.G_GEO_SUCCESS)
                            {
                                objects.Add(new PointAndInfo(pos.Value, area));
                            }
                        }
                        {
                            string      area = "Senamiestis";
                            PointLatLng?pos  = GMapProviders.GoogleMap.GetPoint("Lithuania, Vilnius, " + area, out status);
                            if (pos != null && status == GeoCoderStatusCode.G_GEO_SUCCESS)
                            {
                                objects.Add(new PointAndInfo(pos.Value, area));
                            }
                        }
                        {
                            string      area = "Pilaite";
                            PointLatLng?pos  = GMapProviders.GoogleMap.GetPoint("Lithuania, Vilnius, " + area, out status);
                            if (pos != null && status == GeoCoderStatusCode.G_GEO_SUCCESS)
                            {
                                objects.Add(new PointAndInfo(pos.Value, area));
                            }
                        }
                        AddDemoZone(8.8, city.Value, objects);
                    }
                    #endregion
                }

                if (MainMap.Markers.Count > 1)
                {
                    MainMap.ZoomAndCenterMarkers(null);
                }
            }

            // perfromance test
            timer.Interval = TimeSpan.FromMilliseconds(44);
            timer.Tick    += new EventHandler(timer_Tick);

            // transport demo
            transport.DoWork                    += new DoWorkEventHandler(transport_DoWork);
            transport.ProgressChanged           += new ProgressChangedEventHandler(transport_ProgressChanged);
            transport.WorkerSupportsCancellation = true;
            transport.WorkerReportsProgress      = true;
        }
Beispiel #12
0
        private void changeMapProvider(string mapName)
        {
            if (mapName.StartsWith("AMap") ||
                mapName.StartsWith("Baidu") ||
                mapName.StartsWith("Sohu") ||
                mapName.StartsWith("SoSo")
                )
            {
                if (mapName.Equals("AMap", StringComparison.CurrentCultureIgnoreCase))
                {
                    gMap.MapProvider = AMap;
                }
                else if (mapName.Equals("AMapSatelite", StringComparison.CurrentCultureIgnoreCase))
                {
                    gMap.MapProvider = AMapSatelite;
                }
                else if (mapName.Equals("BaiduMap", StringComparison.CurrentCultureIgnoreCase))
                {
                    gMap.MapProvider = BaiduMap;
                }
                else if (mapName.Equals("BaiduSateliteMap", StringComparison.CurrentCultureIgnoreCase))
                {
                    gMap.MapProvider = BaiduSateliteMap;
                }
                else if (mapName.Equals("SohuMap", StringComparison.CurrentCultureIgnoreCase))
                {
                    gMap.MapProvider = SogouMap;
                }
                else if (mapName.Equals("SohuSateliteMap", StringComparison.CurrentCultureIgnoreCase))
                {
                    gMap.MapProvider = SogouSateliteMap;
                }
                else if (mapName.Equals("SosoMap", StringComparison.CurrentCultureIgnoreCase))
                {
                    gMap.MapProvider = SosoMap;
                }
                else if (mapName.Equals("SoSoSateliteMap", StringComparison.CurrentCultureIgnoreCase))
                {
                    gMap.MapProvider = SosoSateliteMap;
                }
                gMap.MaxZoom             = 18;
                gMap.MapProvider.MaxZoom = gMap.MaxZoom;
                trackZoom.Maximum        = gMap.MaxZoom;
            }
            else
            {
                gMap.MapProvider         = GMapProviders.TryGetProvider(mapSource[mapName]);
                gMap.MaxZoom             = 20;
                gMap.MapProvider.MaxZoom = gMap.MaxZoom;
            }

            trackZoom.Maximum = gMap.MaxZoom;
            if (gMap.Zoom > gMap.MaxZoom)
            {
                gMap.Zoom = gMap.MaxZoom;
            }

            lastMapProvider = gMap.MapProvider.Name;
            Tag             = lastMapProvider;

            if (mapName.StartsWith("Open", StringComparison.CurrentCultureIgnoreCase))
            {
                chkMapShift.Checked = false;
            }
            else
            {
                chkMapShift.Checked = true;
            }
            tsmiShiftMap.Checked = chkMapShift.Checked;
            MapShift             = chkMapShift.Checked;
            //gMap.BoundsOfMap = latlng;
        }
Beispiel #13
0
 // Methods
 static BaiduHybridMapProvider()
 {
     HybridUrlFormat = "http://online{0}.map.bdimg.com/tile/?qt=tile&x={1}&y={2}&z={3}&styles=sl&v={4}&udt=20140314";
     Instance        = new BaiduHybridMapProvider();
     GMapProviders.AddMapProvider(Instance);
 }
Beispiel #14
0
 // Methods
 static BaiduMapProvider()
 {
     Instance = new BaiduMapProvider();
     GMapProviders.AddMapProvider(Instance);
 }
 static SosoMapHybridProvider()
 {
     Instance = new SosoMapHybridProvider();
     GMapProviders.AddMapProvider(Instance);
 }
 static TencentMapSateliteProvider()
 {
     Instance = new TencentMapSateliteProvider();
     GMapProviders.AddMapProvider(Instance);
 }
Beispiel #17
0
            protected override void OnDoWork(DoWorkEventArgs e)
            {
                BACKGROUNDUPDATERSTARTOPTIONS Options = (BACKGROUNDUPDATERSTARTOPTIONS)e.Argument;

                // name the thread for debugging
                if (String.IsNullOrEmpty(Thread.CurrentThread.Name))
                {
                    Thread.CurrentThread.Name = this.Name + "_" + this.GetType().Name;
                }
                this.ReportProgress(0, this.Name + " started.");
                Log.WriteMessage(this.Name + " started.");
                // get update interval
                int interval = (int)Properties.Settings.Default.Background_Update_Period * 60;

                // get mpst simple elevation model
                if (Properties.Settings.Default.Elevation_GLOBE_Enabled)
                {
                    Model = ELEVATIONMODEL.GLOBE;
                }
                else if (Properties.Settings.Default.Elevation_SRTM3_Enabled)
                {
                    Model = ELEVATIONMODEL.SRTM3;
                }
                else if (Properties.Settings.Default.Elevation_SRTM1_Enabled)
                {
                    Model = ELEVATIONMODEL.SRTM1;
                }
                // return if no elevation model selected
                if (Model == ELEVATIONMODEL.NONE)
                {
                    return;
                }
                // setting User Agent to fix Open Street Map issue 2016-09-20
                GMap.NET.MapProviders.GMapProvider.UserAgent = "AirScout";
                // clearing referrer URL issue 2019-12-14
                gm_Map.MapProvider.RefererUrl = "";
                // set initial settings for main map
                gm_Map.MapProvider = GMapProviders.Find(Properties.Settings.Default.Map_Provider);
                gm_Map.MinZoom     = 0;
                gm_Map.MaxZoom     = 20;
                // get database filename
                int i     = 0;
                int count = 0;
                int total = 0;

                do
                {
                    i     = 0;
                    count = 0;
                    total = 0;
                    // checks if elevation database is complete
                    try
                    {
                        this.ReportProgress(0, this.Name + " getting tiles from database.");
                        int zmin = 5;
                        int zmax = 11;
                        List <MapPreloaderTile> l = new List <MapPreloaderTile>();
                        for (int z = zmin; z <= zmax; z++)
                        {
                            int xmin = long2tilex(Properties.Settings.Default.MinLon, z);
                            int xmax = long2tilex(Properties.Settings.Default.MaxLon, z);
                            int ymin = lat2tiley(Properties.Settings.Default.MaxLat, z);
                            int ymax = lat2tiley(Properties.Settings.Default.MinLat, z);
                            for (int x = xmin; x <= xmax; x++)
                            {
                                for (int y = ymin; y <= ymax; y++)
                                {
                                    // check if tile already in database --> add it to list to get it from the web
                                    if (!MapData.Database.TileExists(x, y, z, gm_Map.MapProvider.DbId))
                                    {
                                        MapPreloaderTile t = new MapPreloaderTile(x, y, z, gm_Map.MapProvider.DbId);
                                        l.Add(t);
                                    }
                                    total++;
                                    if (this.CancellationPending)
                                    {
                                        break;
                                    }
                                }
                                if (this.CancellationPending)
                                {
                                    break;
                                }
                            }
                            if (this.CancellationPending)
                            {
                                break;
                            }
                        }
                        if (this.CancellationPending)
                        {
                            break;
                        }
                        count = l.Count();
                        Random rng = new Random();
                        // shuffle the list
                        int n = l.Count;
                        while (n > 1)
                        {
                            n--;
                            int k = rng.Next(n + 1);
                            MapPreloaderTile value = l[k];
                            l[k] = l[n];
                            l[n] = value;
                        }
                        n = 0;
                        foreach (MapPreloaderTile t in l)
                        {
                            Exception ex = null;
                            this.ReportProgress(0, "Preloading " + "/" + t.Z.ToString() + "/" + t.X.ToString() + "/" + t.Y.ToString() + ".png");
                            try
                            {
                                // try to donwload from www.airscout.eu first
                                if (gm_Map.MapProvider.GetType() == typeof(OpenStreetMapProvider))
                                {
                                    LoadOSM(t.X, t.Y, t.Z);
                                }
                                else
                                {
                                    PureImage img = gm_Map.Manager.GetImageFrom(gm_Map.MapProvider, new GPoint(t.X, t.Y), t.Z, out ex);
                                    // wait until cache is written to database
                                }
                                if (ex == null)
                                {
                                    Console.WriteLine("Preload tile [" + i.ToString() + " of " + count.ToString() + "] x=" + t.X + ", y=" + t.Y + ", z=" + t.Z + ": OK");
                                }
                                else
                                {
                                    Console.WriteLine("Preload tile [" + i.ToString() + " of " + count.ToString() + "] x=" + t.X + ", y=" + t.Y + ", z=" + t.Z + ": " + ex.ToString());
                                }
                            }
                            catch (Exception e1)
                            {
                                Console.WriteLine(this.Name + ": " + e1.ToString());
                            }
                            Thread.Sleep(100);
                            i++;
                            n++;
                            if (n > 100)
                            {
                                while (GMaps.Instance.tileCacheQueue.Count > 0)
                                {
                                    Application.DoEvents();
                                    if (this.CancellationPending)
                                    {
                                        break;
                                    }
                                }
                                n = 0;
                            }
                            if (this.CancellationPending)
                            {
                                break;
                            }
                        }
                        if (this.CancellationPending)
                        {
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        this.ReportProgress(-1, ex.ToString());
                    }

                    // sleep when running periodically
                    if (Options == BACKGROUNDUPDATERSTARTOPTIONS.RUNPERIODICALLY)
                    {
                        int l = 0;
                        while (!this.CancellationPending && (l < interval))
                        {
                            Thread.Sleep(1000);
                            l++;
                        }
                    }
                    if (this.CancellationPending)
                    {
                        break;
                    }
                }while (Options == BACKGROUNDUPDATERSTARTOPTIONS.RUNPERIODICALLY);
                if (this.CancellationPending)
                {
                    this.ReportProgress(0, Name + " cancelled.");
                    Log.WriteMessage(Name + " cancelled.");
                }
                else
                {
                    this.ReportProgress(0, Name + " finished, total  " + total.ToString() + " tile(s), " + (count - i).ToString() + " left.");
                    Log.WriteMessage(Name + " finished, total  " + total.ToString() + " tile(s), " + (count - i).ToString() + " left.");
                }
            }
 // Methods
 static TencentTerrainMapAnnoProvider()
 {
     UrlFormat = "http://rt{0}.map.gtimg.com/realtimerender?z={1}&x={2}&y={3}&type=vector&style=1&v=1.1";
     Instance  = new TencentTerrainMapAnnoProvider();
     GMapProviders.AddMapProvider(Instance);
 }
 // Methods
 static TencentTerrainMapProvider()
 {
     UrlFormat = "http://p{0}.map.gtimg.com/{1}/{2}.{3}";
     Instance  = new TencentTerrainMapProvider();
     GMapProviders.AddMapProvider(Instance);
 }
Beispiel #20
0
        public HorizonDlg(string call, double lat, double lon, LocalObstructionDesignator localobstruction)
        {
            InitializeComponent();
            Location         = StationData.Database.LocationFindOrCreate(call, MaidenheadLocator.LocFromLatLon(lat, lon, false, 3));
            QRV              = StationData.Database.QRVFindOrCreateDefault(call, MaidenheadLocator.LocFromLatLon(lat, lon, false, 3), Properties.Settings.Default.Band);
            LocalObstruction = localobstruction;
            Elevation        = ElevationData.Database[Location.Lat, Location.Lon, Properties.Settings.Default.ElevationModel];
            AntennaHeight    = (QRV.AntennaHeight != 0) ? QRV.AntennaHeight : StationData.Database.QRVGetDefaultAntennaHeight(Properties.Settings.Default.Band);
            NumberFormatInfo provider = new NumberFormatInfo();

            provider.NumberDecimalSeparator = ".";
            provider.NumberGroupSeparator   = ",";
            tb_Horizon_Lat.Text             = Location.Lat.ToString("F8", provider);
            tb_Horizon_Lon.Text             = Location.Lon.ToString("F8", provider);
            tb_Horizon_Elevation.Text       = ElevationData.Database[Location.Lat, Location.Lon, Properties.Settings.Default.ElevationModel].ToString("F0", provider);
            tb_Horizon_Height.Text          = AntennaHeight.ToString("F0", provider);
            tb_Horizon_K_Factor.Text        = Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].K_Factor.ToString("F2", provider);
            tb_Horizon_QRG.Text             = Bands.GetStringValue(Properties.Settings.Default.Band);
            tb_Horizon_F1_Clearance.Text    = Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].F1_Clearance.ToString("F2", provider);
            tb_Horizon_ElevationModel.Text  = Properties.Settings.Default.ElevationModel.ToString();
            // setting User Agent to fix Open Street Map issue 2016-09-20
            GMap.NET.MapProviders.GMapProvider.UserAgent = "AirScout";
            // clearing referrer URL issue 2019-12-14
            gm_Horizon.MapProvider.RefererUrl = "";
            // set initial settings for main map
            gm_Horizon.MapProvider = GMapProviders.Find(Properties.Settings.Default.Map_Provider);
            gm_Horizon.IgnoreMarkerOnMouseWheel = true;
            gm_Horizon.MinZoom             = 0;
            gm_Horizon.MaxZoom             = 20;
            gm_Horizon.Zoom                = 8;
            gm_Horizon.DragButton          = System.Windows.Forms.MouseButtons.Left;
            gm_Horizon.CanDragMap          = true;
            gm_Horizon.ScalePen            = new Pen(Color.Black, 3);
            gm_Horizon.MapScaleInfoEnabled = true;
            gm_Horizon.Overlays.Add(horizons);
            GMarkerGoogle gm = new GMarkerGoogle(new PointLatLng(Location.Lat, Location.Lon), GMarkerGoogleType.red_dot);

            gm.ToolTipText = Location.Call;
            horizons.Markers.Add(gm);
            horizon.Stroke = new Pen(Color.Red, 3);
            horizons.Routes.Add(horizon);
            this.Text = "Radio Horizon of " + Location.Call;
            // initialize charts
            InitializeCharts();
            // activate Polar if nothing checked
            if (!Properties.Settings.Default.Horizon_Plot_Polar && !Properties.Settings.Default.Horizon_Plot_Cartesian && !Properties.Settings.Default.Horizon_Plot_Map)
            {
                Properties.Settings.Default.Horizon_Plot_Polar = true;
            }
            // show according child windows
            UpdateCharts();
            // create ToolTip on this window
            TT       = new ToolTip();
            OwnerWin = gm_Horizon;
            HorizonDlg_SizeChanged(this, null);
            // set map bounds
            Map_Left   = Location.Lon;
            Map_Right  = Location.Lon;
            Map_Top    = Location.Lat;
            Map_Bottom = Location.Lat;
        }
 static SosoMapSateliteProvider()
 {
     Instance = new SosoMapSateliteProvider();
     GMapProviders.AddMapProvider(Instance);
 }
 static TencentMapHybridProvider()
 {
     Instance = new TencentMapHybridProvider();
     GMapProviders.AddMapProvider(Instance);
 }
Beispiel #23
0
 static AMapProvider()
 {
     Instance = new AMapProvider();
     GMapProviders.AddMapProvider(Instance);
 }
Beispiel #24
0
 // Methods
 static BaiduSatelliteMapProvider()
 {
     UrlFormat = "http://shangetu{0}.map.bdimg.com/it/u=x={1};y={2};z={3};v={4};type={5}&fm={6}&udt=20140929";
     Instance  = new BaiduSatelliteMapProvider();
     GMapProviders.AddMapProvider(Instance);
 }