diff --git a/.gitignore b/.gitignore index 3e759b7..c172344 100644 --- a/.gitignore +++ b/.gitignore @@ -328,3 +328,7 @@ ASALocalRun/ # MFractors (Xamarin productivity tool) working folder .mfractor/ + +# Secret +/DemoApp/Properties/Secrets.resx +/DemoApp/Properties/Secrets.Designer.cs diff --git a/DemoApp/App.config b/DemoApp/App.config index 9c05822..4bfa005 100644 --- a/DemoApp/App.config +++ b/DemoApp/App.config @@ -1,6 +1,6 @@ - + - + - \ No newline at end of file + diff --git a/DemoApp/DemoApp.csproj b/DemoApp/DemoApp.csproj index 82a0a0f..f42aa9d 100644 --- a/DemoApp/DemoApp.csproj +++ b/DemoApp/DemoApp.csproj @@ -8,10 +8,11 @@ WinExe DemoApp DemoApp - v4.5.1 + v4.8 512 true true + AnyCPU @@ -68,10 +69,19 @@ True + + ResXFileCodeGenerator + Secrets.Designer.cs + SettingsSingleFileGenerator Settings.Designer.cs + + True + True + Secrets.resx + True Settings.settings diff --git a/DemoApp/FormMain.Designer.cs b/DemoApp/FormMain.Designer.cs index 2e63a90..ecede93 100644 --- a/DemoApp/FormMain.Designer.cs +++ b/DemoApp/FormMain.Designer.cs @@ -35,13 +35,23 @@ private void InitializeComponent() this.cmbExample = new System.Windows.Forms.ComboBox(); this.lblExample = new System.Windows.Forms.Label(); this.lblTileServer = new System.Windows.Forms.Label(); + this.cbxMarkerLayer = new System.Windows.Forms.CheckBox(); + this.cbxTrackLayer = new System.Windows.Forms.CheckBox(); + this.cbxPolygonLayer = new System.Windows.Forms.CheckBox(); + this.cbxEllipseLayer = new System.Windows.Forms.CheckBox(); + this.btnAddDynamicEllipse = new System.Windows.Forms.Button(); + this.cbxDynamicEllipseLayer = new System.Windows.Forms.CheckBox(); + this.btnZoomEllipseLayer = new System.Windows.Forms.Button(); this.mapControl = new System.Windows.Forms.MapControl(); + this.btnZoomPolygonLayer = new System.Windows.Forms.Button(); + this.btnZoomSampleLayerGroup1 = new System.Windows.Forms.Button(); + this.btnZoomBerlin = new System.Windows.Forms.Button(); this.SuspendLayout(); // // btnClearCache // this.btnClearCache.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnClearCache.Location = new System.Drawing.Point(599, 5); + this.btnClearCache.Location = new System.Drawing.Point(633, 5); this.btnClearCache.Name = "btnClearCache"; this.btnClearCache.Size = new System.Drawing.Size(75, 23); this.btnClearCache.TabIndex = 1; @@ -56,7 +66,7 @@ private void InitializeComponent() this.cmbTileServers.DisplayMember = "Name"; this.cmbTileServers.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cmbTileServers.FormattingEnabled = true; - this.cmbTileServers.Location = new System.Drawing.Point(381, 6); + this.cmbTileServers.Location = new System.Drawing.Point(415, 6); this.cmbTileServers.Name = "cmbTileServers"; this.cmbTileServers.Size = new System.Drawing.Size(210, 21); this.cmbTileServers.TabIndex = 2; @@ -87,12 +97,98 @@ private void InitializeComponent() // this.lblTileServer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lblTileServer.AutoSize = true; - this.lblTileServer.Location = new System.Drawing.Point(316, 10); + this.lblTileServer.Location = new System.Drawing.Point(350, 10); this.lblTileServer.Name = "lblTileServer"; this.lblTileServer.Size = new System.Drawing.Size(59, 13); this.lblTileServer.TabIndex = 5; this.lblTileServer.Text = "Tile server:"; // + // cbxMarkerLayer + // + this.cbxMarkerLayer.AutoSize = true; + this.cbxMarkerLayer.Checked = true; + this.cbxMarkerLayer.CheckState = System.Windows.Forms.CheckState.Checked; + this.cbxMarkerLayer.Location = new System.Drawing.Point(13, 44); + this.cbxMarkerLayer.Name = "cbxMarkerLayer"; + this.cbxMarkerLayer.Size = new System.Drawing.Size(115, 17); + this.cbxMarkerLayer.TabIndex = 6; + this.cbxMarkerLayer.Text = "Show MarkerLayer"; + this.cbxMarkerLayer.UseVisualStyleBackColor = true; + this.cbxMarkerLayer.CheckedChanged += new System.EventHandler(this.cbxMarkerLayer_CheckedChanged); + // + // cbxTrackLayer + // + this.cbxTrackLayer.AutoSize = true; + this.cbxTrackLayer.Checked = true; + this.cbxTrackLayer.CheckState = System.Windows.Forms.CheckState.Checked; + this.cbxTrackLayer.Location = new System.Drawing.Point(134, 44); + this.cbxTrackLayer.Name = "cbxTrackLayer"; + this.cbxTrackLayer.Size = new System.Drawing.Size(110, 17); + this.cbxTrackLayer.TabIndex = 7; + this.cbxTrackLayer.Text = "Show TrackLayer"; + this.cbxTrackLayer.UseVisualStyleBackColor = true; + this.cbxTrackLayer.CheckedChanged += new System.EventHandler(this.cbxTrackLayer_CheckedChanged); + // + // cbxPolygonLayer + // + this.cbxPolygonLayer.AutoSize = true; + this.cbxPolygonLayer.Checked = true; + this.cbxPolygonLayer.CheckState = System.Windows.Forms.CheckState.Checked; + this.cbxPolygonLayer.Location = new System.Drawing.Point(250, 44); + this.cbxPolygonLayer.Name = "cbxPolygonLayer"; + this.cbxPolygonLayer.Size = new System.Drawing.Size(120, 17); + this.cbxPolygonLayer.TabIndex = 8; + this.cbxPolygonLayer.Text = "Show PolygonLayer"; + this.cbxPolygonLayer.UseVisualStyleBackColor = true; + this.cbxPolygonLayer.CheckedChanged += new System.EventHandler(this.cbxPolygonLayer_CheckedChanged); + // + // cbxEllipseLayer + // + this.cbxEllipseLayer.AutoSize = true; + this.cbxEllipseLayer.Checked = true; + this.cbxEllipseLayer.CheckState = System.Windows.Forms.CheckState.Checked; + this.cbxEllipseLayer.Location = new System.Drawing.Point(376, 44); + this.cbxEllipseLayer.Name = "cbxEllipseLayer"; + this.cbxEllipseLayer.Size = new System.Drawing.Size(112, 17); + this.cbxEllipseLayer.TabIndex = 9; + this.cbxEllipseLayer.Text = "Show EllipseLayer"; + this.cbxEllipseLayer.UseVisualStyleBackColor = true; + this.cbxEllipseLayer.CheckedChanged += new System.EventHandler(this.cbxEllipseLayer_CheckedChanged); + // + // btnAddDynamicEllipse + // + this.btnAddDynamicEllipse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnAddDynamicEllipse.Location = new System.Drawing.Point(633, 40); + this.btnAddDynamicEllipse.Name = "btnAddDynamicEllipse"; + this.btnAddDynamicEllipse.Size = new System.Drawing.Size(75, 23); + this.btnAddDynamicEllipse.TabIndex = 10; + this.btnAddDynamicEllipse.Text = "Dyn Ellipse"; + this.btnAddDynamicEllipse.UseVisualStyleBackColor = true; + this.btnAddDynamicEllipse.Click += new System.EventHandler(this.btnAddDynamicEllipse_Click); + // + // cbxDynamicEllipseLayer + // + this.cbxDynamicEllipseLayer.AutoSize = true; + this.cbxDynamicEllipseLayer.Checked = true; + this.cbxDynamicEllipseLayer.CheckState = System.Windows.Forms.CheckState.Checked; + this.cbxDynamicEllipseLayer.Location = new System.Drawing.Point(494, 44); + this.cbxDynamicEllipseLayer.Name = "cbxDynamicEllipseLayer"; + this.cbxDynamicEllipseLayer.Size = new System.Drawing.Size(131, 17); + this.cbxDynamicEllipseLayer.TabIndex = 11; + this.cbxDynamicEllipseLayer.Text = "Show DynEllipseLayer"; + this.cbxDynamicEllipseLayer.UseVisualStyleBackColor = true; + this.cbxDynamicEllipseLayer.CheckedChanged += new System.EventHandler(this.cbxDynamicEllipseLayer_CheckedChanged); + // + // btnZoomEllipseLayer + // + this.btnZoomEllipseLayer.Location = new System.Drawing.Point(134, 67); + this.btnZoomEllipseLayer.Name = "btnZoomEllipseLayer"; + this.btnZoomEllipseLayer.Size = new System.Drawing.Size(115, 23); + this.btnZoomEllipseLayer.TabIndex = 12; + this.btnZoomEllipseLayer.Text = "Zoom EllipseLayer"; + this.btnZoomEllipseLayer.UseVisualStyleBackColor = true; + this.btnZoomEllipseLayer.Click += new System.EventHandler(this.btnZoomEllipseLayer_Click); + // // mapControl // this.mapControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) @@ -101,26 +197,71 @@ private void InitializeComponent() this.mapControl.BackColor = System.Drawing.Color.White; this.mapControl.Cursor = System.Windows.Forms.Cursors.Cross; this.mapControl.ErrorColor = System.Drawing.Color.Red; + this.mapControl.FitToBounds = true; this.mapControl.ForeColor = System.Drawing.Color.Black; - this.mapControl.Location = new System.Drawing.Point(0, 34); + this.mapControl.Location = new System.Drawing.Point(0, 107); this.mapControl.Name = "mapControl"; this.mapControl.ShowThumbnails = true; - this.mapControl.Size = new System.Drawing.Size(684, 328); + this.mapControl.Size = new System.Drawing.Size(718, 256); this.mapControl.TabIndex = 0; this.mapControl.ThumbnailBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); this.mapControl.ThumbnailForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(176)))), ((int)(((byte)(176))))); this.mapControl.ThumbnailText = "Downloading..."; + this.mapControl.TileImageAttributes = null; this.mapControl.ZoomLevel = 0; this.mapControl.DrawMarker += new System.EventHandler(this.mapControl_DrawMarker); + this.mapControl.ElementClick += new System.EventHandler(this.mapControl_ElementClick); + this.mapControl.ElementEnter += new System.EventHandler(this.mapControl_ElementEnter); + this.mapControl.ElementLeave += new System.EventHandler(this.mapControl_ElementLeave); this.mapControl.DoubleClick += new System.EventHandler(this.mapControl_DoubleClick); this.mapControl.MouseMove += new System.Windows.Forms.MouseEventHandler(this.mapControl_MouseMove); this.mapControl.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.mapControl_MouseWheel); // + // btnZoomPolygonLayer + // + this.btnZoomPolygonLayer.Location = new System.Drawing.Point(12, 67); + this.btnZoomPolygonLayer.Name = "btnZoomPolygonLayer"; + this.btnZoomPolygonLayer.Size = new System.Drawing.Size(115, 23); + this.btnZoomPolygonLayer.TabIndex = 13; + this.btnZoomPolygonLayer.Text = "Zoom PolygonLayer"; + this.btnZoomPolygonLayer.UseVisualStyleBackColor = true; + this.btnZoomPolygonLayer.Click += new System.EventHandler(this.btnZoomPolygonLayer_Click); + // + // btnZoomSampleLayerGroup1 + // + this.btnZoomSampleLayerGroup1.Location = new System.Drawing.Point(255, 67); + this.btnZoomSampleLayerGroup1.Name = "btnZoomSampleLayerGroup1"; + this.btnZoomSampleLayerGroup1.Size = new System.Drawing.Size(149, 23); + this.btnZoomSampleLayerGroup1.TabIndex = 14; + this.btnZoomSampleLayerGroup1.Text = "Zoom SampleLayerGroup1"; + this.btnZoomSampleLayerGroup1.UseVisualStyleBackColor = true; + this.btnZoomSampleLayerGroup1.Click += new System.EventHandler(this.btnZoomSampleLayerGroup1_Click); + // + // btnZoomBerlin + // + this.btnZoomBerlin.Location = new System.Drawing.Point(410, 67); + this.btnZoomBerlin.Name = "btnZoomBerlin"; + this.btnZoomBerlin.Size = new System.Drawing.Size(115, 23); + this.btnZoomBerlin.TabIndex = 15; + this.btnZoomBerlin.Text = "Zoom Berlin"; + this.btnZoomBerlin.UseVisualStyleBackColor = true; + this.btnZoomBerlin.Click += new System.EventHandler(this.btnZoomBerlin_Click); + // // FormMain // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(684, 362); + this.ClientSize = new System.Drawing.Size(718, 362); + this.Controls.Add(this.btnZoomBerlin); + this.Controls.Add(this.btnZoomSampleLayerGroup1); + this.Controls.Add(this.btnZoomPolygonLayer); + this.Controls.Add(this.btnZoomEllipseLayer); + this.Controls.Add(this.cbxDynamicEllipseLayer); + this.Controls.Add(this.btnAddDynamicEllipse); + this.Controls.Add(this.cbxEllipseLayer); + this.Controls.Add(this.cbxPolygonLayer); + this.Controls.Add(this.cbxTrackLayer); + this.Controls.Add(this.cbxMarkerLayer); this.Controls.Add(this.lblTileServer); this.Controls.Add(this.lblExample); this.Controls.Add(this.cmbExample); @@ -143,6 +284,16 @@ private void InitializeComponent() private ComboBox cmbExample; private Label lblExample; private Label lblTileServer; + private CheckBox cbxMarkerLayer; + private CheckBox cbxTrackLayer; + private CheckBox cbxPolygonLayer; + private CheckBox cbxEllipseLayer; + private Button btnAddDynamicEllipse; + private CheckBox cbxDynamicEllipseLayer; + private Button btnZoomEllipseLayer; + private Button btnZoomPolygonLayer; + private Button btnZoomSampleLayerGroup1; + private Button btnZoomBerlin; } } diff --git a/DemoApp/FormMain.cs b/DemoApp/FormMain.cs index c98dbff..b508498 100644 --- a/DemoApp/FormMain.cs +++ b/DemoApp/FormMain.cs @@ -1,22 +1,35 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Globalization; +using System; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.Globalization; using System.IO; -using System.Linq; +using System.Linq; using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace DemoApp -{ - public partial class FormMain : Form - { - private Image imageMarker = Image.FromStream(System.Reflection.Assembly.GetEntryAssembly().GetManifestResourceStream($"DemoApp.Marker.png")); - +using System.Text; +using System.Windows.Forms; +using System.Windows.Forms.Maps.Common; +using System.Windows.Forms.Maps.Elements; +using System.Windows.Forms.Maps.Layers; + +namespace DemoApp +{ + public partial class FormMain : Form + { + private Image imageMarker = Image.FromStream(System.Reflection.Assembly.GetEntryAssembly().GetManifestResourceStream($"DemoApp.Marker.png")); + + private MarkerLayer markerLayer = new MarkerLayer(3); + private TrackLayer trackLayer = new TrackLayer(2); + private PolygonLayer polygonLayer = new PolygonLayer(1); + private EllipseLayer ellipseLayer = new EllipseLayer(4); + private EllipseLayer dynamicEllipseLayer = new EllipseLayer(0); + + private LayerGroup sample1LayerGroup = new LayerGroup(); + private LayerGroup sample2LayerGroup = new LayerGroup(); + private LayerGroup sample3LayerGroup = new LayerGroup(); + private LayerGroup sample4LayerGroup = new LayerGroup(); + public class Sample { public string Title { get; private set; } @@ -27,79 +40,159 @@ public Sample(string title, Action initAction) Title = title; InitAction = initAction; } - } - + } + private void Sample0() { + trackLayer.Clear(); + markerLayer.Clear(); + polygonLayer.Clear(); + ellipseLayer.Clear(); + + dynamicEllipseLayer.Clear(); + } - } - private void Sample1() { - var centralLine = new Track(new TrackStyle(new Pen(Color.Red) { DashStyle = System.Drawing.Drawing2D.DashStyle.Dot })); + var centralLine = new Track(new TrackStyle(new Pen(Color.Red) { DashStyle = System.Drawing.Drawing2D.DashStyle.Dot })); centralLine.AddRange(ReadPointsFromResource("CentralLine.txt")); - var penumbraLimit = new Track(new TrackStyle(new Pen(Color.Orange, 2))); + var penumbraLimit = new Track(new TrackStyle(new Pen(Color.Orange, 2), new Pen(Color.Orange, 5), 4)); penumbraLimit.AddRange(ReadPointsFromResource("PenumbraLimit.txt")); - var riseSetCurves = new Track(new TrackStyle(new Pen(Color.Orange, 2))); + var riseSetCurves = new Track(new TrackStyle(new Pen(Color.Orange, 2), new Pen(Color.Orange, 5), 4)); riseSetCurves.AddRange(ReadPointsFromResource("RiseSetCurves.txt")); - var shadowPath = new Polygon(new PolygonStyle(new SolidBrush(Color.FromArgb(100, Color.Black)), Pens.Black)); + var shadowPath = new Polygon(new PolygonStyle(new SolidBrush(Color.FromArgb(100, Color.Black)), Pens.Black)); shadowPath.AddRange(ReadPointsFromResource("ShadowPath.txt")); - mapControl.Tracks.Add(centralLine); - mapControl.Tracks.Add(riseSetCurves); - mapControl.Tracks.Add(penumbraLimit); - mapControl.Polygons.Add(shadowPath); - } - + trackLayer.Clear(); + trackLayer.AddTrack(centralLine); + trackLayer.AddTrack(riseSetCurves); + trackLayer.AddTrack(penumbraLimit); + + polygonLayer.Clear(); + polygonLayer.AddPolygon(shadowPath); + + sample1LayerGroup.Visible = true; + sample2LayerGroup.Visible = false; + sample3LayerGroup.Visible = false; + sample4LayerGroup.Visible = false; + } + private void Sample2() { - var magellanTraveling = new Track(TrackStyle.Default); - magellanTraveling.AddRange(ReadPointsFromResource("MagellanExpedition.txt")); - mapControl.Tracks.Add(magellanTraveling); - } - + var magellanTraveling = new Track(TrackStyle.Default); + magellanTraveling.AddRange(ReadPointsFromResource("MagellanExpedition.txt")); + + trackLayer.Clear(); + trackLayer.AddTrack(magellanTraveling); + + sample1LayerGroup.Visible = false; + sample2LayerGroup.Visible = true; + sample3LayerGroup.Visible = false; + sample4LayerGroup.Visible = false; + } + private void Sample3() { var cities = ReadCities(); + + markerLayer.Clear(); foreach (var city in cities) { - mapControl.Markers.Add(city); + markerLayer.AddMarker(city); } - } - - public FormMain() - { + + sample1LayerGroup.Visible = false; + sample2LayerGroup.Visible = false; + sample3LayerGroup.Visible = true; + sample4LayerGroup.Visible = false; + } + + private void Sample4() + { + ellipseLayer.Clear(); + + ellipseLayer.AddEllipse(new Ellipse(new GeoPoint(13.376935f, 52.516181f), new EllipseStyle(50, 50, new SolidBrush(Color.FromArgb(80, Color.Blue)), Pens.Blue, EllipseStyle.Unit.METERS))); + ellipseLayer.AddEllipse(new Ellipse(new GeoPoint(8.702953f, 48.890885f), new EllipseStyle(50, 50, new SolidBrush(Color.FromArgb(80, Color.Blue)), Pens.Blue, EllipseStyle.Unit.METERS))); + ellipseLayer.AddEllipse(new Ellipse(new GeoPoint(8.682092f, 50.110644f), new EllipseStyle(50, 50, new SolidBrush(Color.FromArgb(80, Color.Blue)), Pens.Blue, EllipseStyle.Unit.METERS))); + ellipseLayer.AddEllipse(new Ellipse(new GeoPoint(8.043878f, 52.846134f), new EllipseStyle(50, 50, new SolidBrush(Color.FromArgb(80, Color.Blue)), Pens.Blue, EllipseStyle.Unit.METERS))); + + sample1LayerGroup.Visible = false; + sample2LayerGroup.Visible = false; + sample3LayerGroup.Visible = false; + sample4LayerGroup.Visible = true; + } + + private void Sample5() + { + mapControl.ClearElements(); + mapControl.AddMarker(new Marker(new GeoPoint(0, 0))); + + mapControl.Center = new GeoPoint(0, 0); + mapControl.ZoomLevel = 15; + } + + public FormMain() + { InitializeComponent(); mapControl.CacheFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "MapControl"); + + // group layers together + sample1LayerGroup.AddLayer(trackLayer); + sample1LayerGroup.AddLayer(polygonLayer); + + sample2LayerGroup.AddLayer(trackLayer); + + sample3LayerGroup.AddLayer(markerLayer); + + sample4LayerGroup.AddLayer(ellipseLayer); + + // add layers to map + mapControl.AddLayer(sample1LayerGroup); + mapControl.AddLayer(sample2LayerGroup); + mapControl.AddLayer(sample3LayerGroup); + mapControl.AddLayer(sample4LayerGroup); + mapControl.AddLayer(dynamicEllipseLayer); cmbExample.Items.AddRange(new Sample[] { new Sample("Empty Map", Sample0), new Sample("Map of Solar Eclipse 11 Aug 1999", Sample1), new Sample("Magellan's Circumnavigation Map", Sample2), - new Sample("World Greatest Cities", Sample3) - }); - - ITileServer[] tileServers = new ITileServer[] - { - new OpenStreetMapTileServer(userAgent: "DemoApp for WinFormsMapControl 1.0 contact example@example.com"), - new StamenTerrainTileServer(), - new OpenTopoMapServer(), - new OfflineTileServer(), - new BingMapsAerialTileServer(), - new BingMapsRoadsTileServer(), - new BingMapsHybridTileServer(), - }; - - cmbTileServers.Items.AddRange(tileServers); + new Sample("World Greatest Cities", Sample3), + new Sample("Some Ellipses with 50m Diameter", Sample4), + new Sample("Center Marker directly in map", Sample5), + }); + + CustomTileServer customTileServer = new CustomTileServer( + Properties.Secrets.MapServerURL, + Properties.Secrets.MapServerUsername, + Properties.Secrets.MapServerPassword + ); + + customTileServer.UserAgent = "WinFormsMapControl - DemoApp"; + + // ZipTileServer zipTileServer = new ZipTileServer("default.zip"); + + ITileServer[] tileServers = new ITileServer[] + { + new OpenStreetMapTileServer(userAgent: "DemoApp for WinFormsMapControl 1.0 contact example@example.com"), + new StamenTerrainTileServer(), + new OpenTopoMapServer(), + new BingMapsAerialTileServer(), + new BingMapsRoadsTileServer(), + new BingMapsHybridTileServer(), + customTileServer + }; + + cmbTileServers.Items.AddRange(tileServers); cmbTileServers.SelectedIndex = 0; - cmbExample.SelectedIndex = 0; - } - + cmbExample.SelectedIndex = 0; + } + private ICollection ReadCities() { using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream($"DemoApp.MapObjects.Cities.txt")) @@ -118,8 +211,8 @@ private ICollection ReadCities() return markers; } - } - + } + private ICollection ReadPointsFromResource(string resourceName) { using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream($"DemoApp.MapObjects.{resourceName}")) @@ -135,52 +228,98 @@ private ICollection ReadPointsFromResource(string resourceName) } return points; } - } - + } + private void UpdateWindowTitle() { - GeoPoint g = mapControl.Mouse; + GeoPoint g = mapControl.Mouse; this.Text = $"Mouse = {g} / Zoom = {mapControl.ZoomLevel} / Bounding Box = TL:{mapControl.TopLeft}, TR:{mapControl.TopRight}, BR:{mapControl.BottomRight}, BL:{mapControl.BottomLeft}"; - } - - private void mapControl_MouseMove(object sender, MouseEventArgs e) - { + } + + private void mapControl_MouseMove(object sender, MouseEventArgs e) + { UpdateWindowTitle(); } private void mapControl_MouseWheel(object sender, MouseEventArgs e) { UpdateWindowTitle(); - } - - private void btnClearCache_Click(object sender, EventArgs e) - { - mapControl.ClearCache(true); - ActiveControl = mapControl; - } - - private void cmbTileServers_SelectedIndexChanged(object sender, EventArgs e) - { - mapControl.TileServer = cmbTileServers.SelectedItem as ITileServer; - ActiveControl = mapControl; - } + } + + private void btnClearCache_Click(object sender, EventArgs e) + { + mapControl.ClearCache(true); + ActiveControl = mapControl; + } + + private void cmbTileServers_SelectedIndexChanged(object sender, EventArgs e) + { + mapControl.TileServer = cmbTileServers.SelectedItem as ITileServer; + ActiveControl = mapControl; + } private void cmbExample_SelectedIndexChanged(object sender, EventArgs e) { ActiveControl = mapControl; - mapControl.ClearAll(); + mapControl.ClearElements(); var sample = cmbExample.SelectedItem as Sample; sample.InitAction(); } + private void cbxMarkerLayer_CheckedChanged(object sender, EventArgs e) + { + markerLayer.Visible = cbxMarkerLayer.Checked; + } + + private void cbxTrackLayer_CheckedChanged(object sender, EventArgs e) + { + trackLayer.Visible = cbxTrackLayer.Checked; + } + + private void cbxPolygonLayer_CheckedChanged(object sender, EventArgs e) + { + polygonLayer.Visible = cbxPolygonLayer.Checked; + } + + private void cbxEllipseLayer_CheckedChanged(object sender, EventArgs e) + { + ellipseLayer.Visible = cbxEllipseLayer.Checked; + } + + private void cbxDynamicEllipseLayer_CheckedChanged(object sender, EventArgs e) + { + dynamicEllipseLayer.Visible = cbxDynamicEllipseLayer.Checked; + } + + private void btnAddDynamicEllipse_Click(object sender, EventArgs e) + { + dynamicEllipseLayer.AddEllipse(new Ellipse(new GeoPoint(13.376935f, 52.516181f), new EllipseStyle(500, 300, new SolidBrush(Color.FromArgb(80, Color.Red)), Pens.Red, EllipseStyle.Unit.METERS))); + } + + private void btnZoomPolygonLayer_Click(object sender, EventArgs e) + { + mapControl.ZoomTo(polygonLayer); + } + + private void btnZoomEllipseLayer_Click(object sender, EventArgs e) + { + mapControl.ZoomTo(ellipseLayer); + } + + private void btnZoomSampleLayerGroup1_Click(object sender, EventArgs e) + { + mapControl.ZoomTo(sample1LayerGroup); + } + + private void btnZoomBerlin_Click(object sender, EventArgs e) + { + mapControl.ZoomLevel = 10; + mapControl.Center = new GeoPoint(13.376935f, 52.516181f); + } + private void mapControl_DrawMarker(object sender, DrawMarkerEventArgs e) { - e.Handled = true; - e.Graphics.DrawImage(imageMarker, new Rectangle( (int)e.Point.X - 12, (int)e.Point.Y - 24, 24, 24 )); - if (mapControl.ZoomLevel >= 5) - { - e.Graphics.DrawString(e.Marker.Label, SystemFonts.DefaultFont, Brushes.Red, new PointF(e.Point.X, e.Point.Y + 5), new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Near }); - } + //e.Handled = true; } private void mapControl_DoubleClick(object sender, EventArgs e) @@ -190,5 +329,20 @@ private void mapControl_DoubleClick(object sender, EventArgs e) sb.AppendLine($"Location: {coord}"); MessageBox.Show(sb.ToString(), "Info"); } - } -} + + private void mapControl_ElementClick(object sender, MapControlElementEventArgs e) + { + Debug.WriteLine(e.Element.GetType().Name + " clicked!"); + } + + private void mapControl_ElementEnter(object sender, MapControlElementEventArgs e) + { + Debug.WriteLine(e.Element.GetType().Name + " entered!"); + } + + private void mapControl_ElementLeave(object sender, MapControlElementEventArgs e) + { + Debug.WriteLine(e.Element.GetType().Name + " leaved!"); + } + } +} diff --git a/DemoApp/Properties/Resources.Designer.cs b/DemoApp/Properties/Resources.Designer.cs index 0bf23ff..683cbae 100644 --- a/DemoApp/Properties/Resources.Designer.cs +++ b/DemoApp/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ @@ -13,13 +13,13 @@ namespace DemoApp.Properties { /// - /// A strongly-typed resource class, for looking up localized strings, etc. + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -33,7 +33,7 @@ internal Resources() { } /// - /// Returns the cached ResourceManager instance used by this class. + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ internal Resources() { } /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { diff --git a/DemoApp/Properties/Settings.Designer.cs b/DemoApp/Properties/Settings.Designer.cs index c2b808f..15f5f93 100644 --- a/DemoApp/Properties/Settings.Designer.cs +++ b/DemoApp/Properties/Settings.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ @@ -12,7 +12,7 @@ namespace DemoApp.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/Docs/CustomData.md b/Docs/CustomData.md index 7123916..43a42aa 100644 --- a/Docs/CustomData.md +++ b/Docs/CustomData.md @@ -1,8 +1,9 @@ # Displaying Custom Data -There are three different types of objects used to display data on the map control: +There are four different types of objects used to display data on the map control: * `Marker` - for displaying single-point objects; * `Track` - for displaying multiline objects (set of connected points); * `Polygon` - for displaying area objects. +* `Ellipse` - for displaying an ellipse around a center point with size in meters, yards or pixels. Map control has correspoding properties to add these objects, i.e.: @@ -15,6 +16,24 @@ public ICollection Tracks { get; } ```csharp public ICollection Polygons { get; } ``` +```csharp +public ICollection Ellipses { get; } +``` + +To redraw the map after adding an element automatically use the `Add` methods like this: + +```csharp +mapControl.AddMarker(new Marker(...)); +``` +```csharp +mapControl.AddTrack(new Track(...)); +``` +```csharp +mapControl.AddPolygon(new Polygon(...)); +``` +```csharp +mapControl.AddEllipse(new Ellipse(...)); +``` ## Markers @@ -29,7 +48,7 @@ var point = new GeoPoint(44.0, 56.3333); var marker = new Marker(point, MarkerStyle.Default, "Some label"); // Add marker to the map -mapControl.Markers.Add(marker); +mapControl.AddMarker(marker); ``` You can customize the marker drawing style by: @@ -42,28 +61,15 @@ var style = new MarkerStyle(3, Brushes.Red, Pens.Blue, Brushes.Black, SystemFont var marker = new Marker(point, style, "Some label"); ``` -Also you can override drawing the marker with handling `DrawMarker` event. -For example, to draw a 24x24 image instead of marker circle, do the following: +To draw an image instead of a point for a marker, use the image in marker style: ```csharp -// Subscribe to DrawMarker event -mapControl.DrawMarker += new EventHandler(mapControl_DrawMarker); - // Create marker image Image imageMarker = Image.FromFile("Path/to/image.png"); -// Event handler -private void mapControl_DrawMarker(object sender, DrawMarkerEventArgs e) -{ - // Important: set flag to override drawing - e.Handled = true; +var style = new MarkerStyle(imageMarker); - // Draw image - e.Graphics.DrawImage(imageMarker, new Rectangle((int)e.Point.X - 12, (int)e.Point.Y - 24, 24, 24)); - - // And label - e.Graphics.DrawString(e.Marker.Label, SystemFonts.DefaultFont, Brushes.Red, new PointF(e.Point.X, e.Point.Y + 5), new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Near }); -} +var marker = new Marker(point, style, "Some label"); ``` You can use different images for markers. To distinguish markers, use `Data` property of the `Marker` class. It can be any object you want, for example, marker unique identifier. @@ -83,7 +89,7 @@ var track = new Track(TrackStyle.Default); track.AddRange(points); // Add track to the map -mapControl.Tracks.Add(track); +mapControl.AddTrack(track); ``` Track style is also customizable: @@ -95,6 +101,19 @@ var style = new TrackStyle(new Pen(Color.Blue) { DashStyle = System.Drawing.Draw var track = new Track(style); ``` +Optionally, you can specify a separate pen used for drawing a direction indicator. A direction indicator is a simple triangle drawn in a solid color of the specified pen pointing into the direction of the track. The size of the pen is used to define the size of the direction indicator. +```csharp +// Define custom track style with direction marker pen +var style = new TrackStyle(new Pen(Color.Blue, 2), new Pen(Color.Blue, 2)); +``` + +You can specificy a minimum zoom level required to show direction indicators as follows: +```csharp +// Define custom track style with direction marker pen and minimum required zoom level +var style = new TrackStyle(new Pen(Color.Blue, 2), new Pen(Color.Blue, 2), 4); +``` +Default value for minimum zoom level is 12. + ## Polygons Working with polygons is similar to deal with tracks. To create a new area object to the map, do something like: @@ -107,7 +126,7 @@ var polygon = new Polygon(PolygonStyle.Default); polygon.AddRange(points); // Add it to the map -mapControl.Polygons.Add(polygon); +mapControl.AddPolygon(polygon); ``` Again, if you need to customize style of the polygon: @@ -124,3 +143,26 @@ var style = new PolygonStyle(brush, pen); // Make styled polygon var polygon = new Polygon(style); ``` +## Ellipses + +Default size unit for ellipses are pixels. You can add an ellipse to your map using the following code: + +```csharp +// Create ellipses's location point +var point = new GeoPoint(44.0, 56.3333); + +// Create ellpise instance: specify location on the map and drawing style +var ellipse = new Ellipse(point, EllipseStyle.Default); + +// Add marker to the map +mapControl.AddEllipse(ellipse); +``` + +Ellipse style is also customizable: +```csharp +// Define custom ellipse style +var style = new EllipseStyle(500, 500, Brush.Blue, Pen.Blue, EllipseStyle.Unit.METERS); + +// Assign style to the ellipse +var ellipse = new Ellipse(style); +``` \ No newline at end of file diff --git a/Docs/Demo.png b/Docs/Demo.png deleted file mode 100644 index 86b8f34..0000000 Binary files a/Docs/Demo.png and /dev/null differ diff --git a/Docs/Event.md b/Docs/Event.md new file mode 100644 index 0000000..df4e8a8 --- /dev/null +++ b/Docs/Event.md @@ -0,0 +1,45 @@ +# React to events +By using events you can add a tooltip when a polygon is entered by mouse or show a message box when a marker is clicked. Elements are considered in the order they're displayed in the map. That means if a marker is displayed on top of a polygon, only the marker will trigger an event! + +## Layers +Each layer requires a z-index in constructor. A higher z-index will show a layer before other layers with a lower z-index. +To create a new layer on the map: + +```csharp +// add enter event handler +mapControl.ElementEnter += new EventHandler(mapControl_ElementEnter); + +// enter event handler +private void mapControl_ElementEnter(object sender, MapControlElementEventArgs e) +{ + // access element which has been entered ... + Polygon polygon = e.Element as Polygon; + + // do your stuff here ... +} + +// add click event handler +mapControl.ElementClick += new EventHandler(mapControl_ElementClick); + +// click event handler +private void mapControl_ElementClick(object sender, MapControlElementEventArgs e) +{ + // access element which has been clicked ... + Polygon polygon = e.Element as Polygon; + + // do your stuff here ... +} + +// add click event handler +mapControl.ElementLeave += new EventHandler(mapControl_ElementLeave); + +// click event handler +private void mapControl_ElementLeave(object sender, MapControlElementEventArgs e) +{ + // access element which has been leaved ... + Polygon polygon = e.Element as Polygon; + + // do your stuff here ... +} + +``` diff --git a/Docs/Index.md b/Docs/Index.md index f1a2579..305b8e2 100644 --- a/Docs/Index.md +++ b/Docs/Index.md @@ -52,7 +52,13 @@ You may also need to change values of following properties to customize the map Other properties are also available, see documenation comments. ## Custom data -[See here](/Docs/CustomData.md) how to add markers, tracks and polygons on the map. +[See here](/Docs/CustomData.md) how to add markers, tracks, polygons and ellipses on the map. + +## Layers +[See here](/Docs/Layer.md) how to use layers in the map. + +## Events +[See how](/Docs/Event.md) to react to basic events on elements. ## Custom tile servers -[Instruction](/Docs/TileServer.md) how to create own tile server. \ No newline at end of file +[Instruction](/Docs/TileServer.md) how to create own tile server or how to use offline map sources [offline map sources](/Docs/OfflineMaps.md) \ No newline at end of file diff --git a/Docs/Layer.md b/Docs/Layer.md new file mode 100644 index 0000000..92be748 --- /dev/null +++ b/Docs/Layer.md @@ -0,0 +1,71 @@ +# Using Layers and LayerGroups +Layers enable you to group elements like markers, polygons (...) in logical units. Advantages of using layers: +* Group elements in logical units +* Show / hide a layer in map control +* Order different layers by their z-index +* Zoom map to fit data of a whole layer + +## Layers +Each layer requires a z-index in constructor. A higher z-index will show a layer before other layers with a lower z-index. +To create a new layer on the map: + +```csharp +// create new layer instance +var layer = MarkerLayer(0); + +// Add layer to the map +mapControl.Layers.Add(layer); + +// ... or +mapControl.AddLayer(layer); + +// ... + +// Add a new marker to the layer which will be displayed on the map +layer.AddMarker(new Marker(...)); + +// ... + +// Clear the whole layer +layer.Clear(); +``` + +Note that elements which are added to the map control directly without a layer will displayed always in front of all layers! + +To change visibility or z-index of a layer in the map, simply change the corresponding property: + +```csharp +// Change visibility +layer.Visible = false; +layer.Visible = true; + +// Change z-index (level) +layer.Level = 0; +layer.Level = 1; +// ... +``` + +## LayerGroups +Even layers can be grouped together in layers by using a `LayerGroup`. Layer groups do not require an z-index, but can be used with one. Layer groups without having a z-index specified will be drawn in the order that they were added to the layer list of the map. To create a new layer group: + +```csharp +// Create layer group +var layerGroup = new LayerGroup(); + +// Add layer group to map +mapControl.AddLayer(layerGroup); + +// Add layers to layer group +layerGroup.AddLayer(layer1); +layerGroup.AddLayer(layer2); +``` +Everything other works like with an ordinary layer. + +## Zoom to layers +In some cases you might want to zoom the map control to a set of elements. To achieve this, group them together in a layer, add the layer to the map and then use: + +```csharp +mapControl.ZoomTo(groupLayer); +``` + +to let the map display the elements of the layer. diff --git a/Docs/OfflineMaps.md b/Docs/OfflineMaps.md new file mode 100644 index 0000000..56c12ce --- /dev/null +++ b/Docs/OfflineMaps.md @@ -0,0 +1,33 @@ +# Using Offline Maps + +You can use offline tiles located in a ZIP archive by using the class `ZipTileServer` as follows + +```csharp +ZipTileServer tileServer = new ZipTileServer("your/path/to/zip/file.zip") +``` + +or + +```csharp +ZipTileServer tileServer = new ZipTileServer("your/path/to/zip/file.zip", "myFancyMapStyle") +``` + +Only requirement is that you have your tiles located in a ZIP archive with following structure: + +``` +/file.zip + ./default/ + ./info.txt + ./0/0/0.jpg + ./1/1/0.jpg + ... + ./myFancyMapStyle/ + ./info.txt + ./0/0/0.jpg + ./1/1/0.jpg + ... +``` + +By using this structure, several map styles can be obtained using one single ZIP archive. The `info.txt` file contains three lines with min zoom level (1st line), max zoom level (2nd line) and image file extension (3rd line). The `ZipTileServer` uses this file to determine a valid map data archive and auto-detect required meta information. You can find a sample python script creating such ZIP archives in [this gist](https://gist.github.com/sebastianknopf/d1d1819181240e17b6c16ba44f3d6c11). + +Please note that offline maps like this have a very high storage consumtion increased with each zoom level. The higher the zoom level contained in the archive, the higher the required storage. Use [this tool of Geofabrik](https://tools.geofabrik.de/calc/#type=geofabrik_standard&bbox=8.5429,48.349,9.8395,49.1504) to see how many storage you would need to render your desired map. \ No newline at end of file diff --git a/MapControl.sln b/MapControl.sln index 4b1a8ee..e3d47ae 100644 --- a/MapControl.sln +++ b/MapControl.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30406.217 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.2017 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DemoApp", "DemoApp\DemoApp.csproj", "{4E8D95A5-2836-4C63-98FC-3F8A3B1BEA0C}" EndProject @@ -16,8 +16,10 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{676CD423-E06A-45D0-AAC7-52D04DF8A8E8}" ProjectSection(SolutionItems) = preProject Docs\CustomData.md = Docs\CustomData.md - Docs\Demo.png = Docs\Demo.png + Docs\Event.md = Docs\Event.md Docs\Index.md = Docs\Index.md + Layer.md = Layer.md + Docs\OfflineMaps.md = Docs\OfflineMaps.md Docs\TileServer.md = Docs\TileServer.md EndProjectSection EndProject diff --git a/MapControl/GeoPoint.cs b/MapControl/Common/GeoPoint.cs similarity index 67% rename from MapControl/GeoPoint.cs rename to MapControl/Common/GeoPoint.cs index 61e9d28..67c16b6 100644 --- a/MapControl/GeoPoint.cs +++ b/MapControl/Common/GeoPoint.cs @@ -1,26 +1,26 @@ -using System.Globalization; - -namespace System.Windows.Forms +using System.Globalization; + +namespace System.Windows.Forms.Maps.Common { - /// - /// Represents point on the Earth surface with geographical coordinates + /// + /// Represents point on the Earth surface with geographical coordinates /// public struct GeoPoint { - /// - /// Longitude of the point, in degrees, from 0 to ±180, positive East, negative West. 0 is a point on prime meridian. + /// + /// Longitude of the point, in degrees, from 0 to ±180, positive East, negative West. 0 is a point on prime meridian. /// public float Longitude { get; set; } - /// - /// Latitude of the point, in degrees, from +90 (North pole) to -90 (South Pole). 0 is a point on equator. + /// + /// Latitude of the point, in degrees, from +90 (North pole) to -90 (South Pole). 0 is a point on equator. /// public float Latitude { get; set; } - /// - /// Creates new instance of and initializes it with longitude and latitude values. - /// - /// Longitude of the point, in degrees, from 0 to ±180, positive East, negative West. 0 is a point on prime meridian. + /// + /// Creates new instance of and initializes it with longitude and latitude values. + /// + /// Longitude of the point, in degrees, from 0 to ±180, positive East, negative West. 0 is a point on prime meridian. /// Latitude of the point, in degrees, from +90 (North pole) to -90 (South Pole). 0 is a point on equator. public GeoPoint(float longitude, float latitude) { @@ -29,26 +29,51 @@ public GeoPoint(float longitude, float latitude) } /// - public override string ToString() - { - return $"{DegreeToString(Longitude, "W", "E")}, {DegreeToString(Latitude, "S", "N")}"; + public override string ToString() + { + return $"{DegreeToString(Longitude, "W", "E")}, {DegreeToString(Latitude, "S", "N")}"; + } + + /// + /// Calculates the distance in meters to a reference + /// + /// Reference geo point + /// + public double GetDistanceTo(GeoPoint reference) + { + var baseRad = Math.PI * Latitude / 180; + var referenceRad = Math.PI * reference.Latitude / 180; + var theta = Longitude - reference.Longitude; + var thetaRad = Math.PI * theta / 180; + + double distance = + Math.Sin(baseRad) * Math.Sin(referenceRad) + Math.Cos(baseRad) * + Math.Cos(referenceRad) * Math.Cos(thetaRad); + + distance = Math.Acos(distance); + + distance = distance * 180 / Math.PI; // rad2deg + distance = distance * 60 * 1.1515 * 1.609344; // to kilometers + distance = distance * 1000; + + return distance; } - private static string DegreeToString(double coordinate, string negativeSym, string positiveSym) - { - string sym = coordinate < 0d ? negativeSym : positiveSym; - coordinate = Math.Abs(coordinate); - double d = Math.Floor(coordinate); - coordinate -= d; - coordinate *= 60; - double m = Math.Floor(coordinate); - coordinate -= m; - coordinate *= 60; - double s = coordinate; - string dd = d.ToString(); - string mm = m.ToString().PadLeft(2, '0'); - string ss = s.ToString("00.00", CultureInfo.InvariantCulture); - return $"{dd}° {mm}' {ss}\" {sym}"; + private static string DegreeToString(double coordinate, string negativeSym, string positiveSym) + { + string sym = coordinate < 0d ? negativeSym : positiveSym; + coordinate = Math.Abs(coordinate); + double d = Math.Floor(coordinate); + coordinate -= d; + coordinate *= 60; + double m = Math.Floor(coordinate); + coordinate -= m; + coordinate *= 60; + double s = coordinate; + string dd = d.ToString(); + string mm = m.ToString().PadLeft(2, '0'); + string ss = s.ToString("00.00", CultureInfo.InvariantCulture); + return $"{dd}° {mm}' {ss}\" {sym}"; } } } diff --git a/MapControl/GraphicsExtensions.cs b/MapControl/Common/GraphicsExtensions.cs similarity index 99% rename from MapControl/GraphicsExtensions.cs rename to MapControl/Common/GraphicsExtensions.cs index f681c09..13dcd7e 100644 --- a/MapControl/GraphicsExtensions.cs +++ b/MapControl/Common/GraphicsExtensions.cs @@ -3,7 +3,7 @@ using System.Drawing.Drawing2D; using System.Linq; -namespace System.Windows.Forms +namespace System.Windows.Forms.Maps.Common { /// /// Set of useful graphics extensions @@ -164,26 +164,26 @@ private static PointF[] FindClipBoundsIntersections(this Graphics g, PointF p1, return null; } - /// - /// Multiplies two vectors defined by coordinates - /// - /// - /// - /// - /// + /// + /// Multiplies two vectors defined by coordinates + /// + /// + /// + /// + /// /// private static float VectorMult(float ax, float ay, float bx, float by) { return ax * by - bx * ay; } - /// - /// Calculates constants of a line equation by two points lie on that line. - /// - /// First point lies on the line - /// Second point lies on the line - /// A-constant - /// B-constant + /// + /// Calculates constants of a line equation by two points lie on that line. + /// + /// First point lies on the line + /// Second point lies on the line + /// A-constant + /// B-constant /// C-constant private static void LineEquation(PointF p1, PointF p2, ref float A, ref float B, ref float C) { diff --git a/MapControl/HtmlLinkLabel.cs b/MapControl/Common/HtmlLinkLabel.cs similarity index 97% rename from MapControl/HtmlLinkLabel.cs rename to MapControl/Common/HtmlLinkLabel.cs index 3238ad1..32ff027 100644 --- a/MapControl/HtmlLinkLabel.cs +++ b/MapControl/Common/HtmlLinkLabel.cs @@ -2,7 +2,7 @@ using System.Text; using System.Text.RegularExpressions; -namespace System.Windows.Forms +namespace System.Windows.Forms.Maps.Common { /// /// Extended control with auto-parsing of HTML links in the property. diff --git a/MapControl/Tile.cs b/MapControl/Common/Tile.cs similarity index 91% rename from MapControl/Tile.cs rename to MapControl/Common/Tile.cs index 096acbd..89bf6a6 100644 --- a/MapControl/Tile.cs +++ b/MapControl/Common/Tile.cs @@ -1,82 +1,77 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Drawing; -namespace System.Windows.Forms +namespace System.Windows.Forms.Maps.Common { - /// - /// Used to store tile image in memory + /// + /// Used to store tile image in memory /// internal class Tile { - /// - /// X-index of the tile image + /// + /// X-index of the tile image /// public int X { get; } - /// - /// Y-index of the tile image + /// + /// Y-index of the tile image /// public int Y { get; } - /// - /// Zoom level of the tile image + /// + /// Zoom level of the tile image /// public int Z { get; } - /// - /// Tile server name + /// + /// Tile server name /// public string TileServer { get; } - /// - /// Tile image + /// + /// Tile image /// public Image Image { get; set; } - /// - /// Error message that should be displayed if tile does not exist by some reason (incorrect X/Y indices, zoom level, server unavailable etc.). + /// + /// Error message that should be displayed if tile does not exist by some reason (incorrect X/Y indices, zoom level, server unavailable etc.). /// - public string ErrorMessage { get; set; } - - /// - /// Flag indicating image recently used (requested to be drawn on the map). + public string ErrorMessage { get; set; } + + /// + /// Flag indicating image recently used (requested to be drawn on the map). /// public bool Used { get; set; } - /// - /// Creates new tile with X/Y indices, zoom level, and tileServer name. - /// - /// X-index of the tile. - /// Y-index of the tile. - /// Zoom level. + /// + /// Creates new tile with X/Y indices, zoom level, and tileServer name. + /// + /// X-index of the tile. + /// Y-index of the tile. + /// Zoom level. /// Tile server name. - public Tile(int x, int y, int z, string tileServer) - { - X = x; - Y = y; - Z = z; - TileServer = tileServer; + public Tile(int x, int y, int z, string tileServer) + { + X = x; + Y = y; + Z = z; + TileServer = tileServer; } - /// - /// Creates new tile with image, X/Y indices, zoom level, and tileServer name. - /// - /// Tile image - /// X-index of the tile. - /// Y-index of the tile. - /// Zoom level. + /// + /// Creates new tile with image, X/Y indices, zoom level, and tileServer name. + /// + /// Tile image + /// X-index of the tile. + /// Y-index of the tile. + /// Zoom level. /// Tile server name. - public Tile(Image image, int x, int y, int z, string tileServer) - { - Image = image; - X = x; - Y = y; - Z = z; - TileServer = tileServer; + public Tile(Image image, int x, int y, int z, string tileServer) + { + Image = image; + X = x; + Y = y; + Z = z; + TileServer = tileServer; } } } diff --git a/MapControl/Elements/Ellipse.cs b/MapControl/Elements/Ellipse.cs new file mode 100644 index 0000000..d08e20f --- /dev/null +++ b/MapControl/Elements/Ellipse.cs @@ -0,0 +1,45 @@ +using System.Windows.Forms.Maps.Common; + +namespace System.Windows.Forms.Maps.Elements +{ + /// + /// Represents ellipse on the map. + /// + public class Ellipse : IElement + { + /// + /// Ellipse coordinates. + /// + public GeoPoint Point { get; set; } + + /// + /// Style to draw the ellipse. + /// + public EllipseStyle Style { get; set; } = EllipseStyle.Default; + + /// + /// Custom data associated with the ellipse. + /// + public object Data { get; set; } + + /// + /// Creates new object with specified coordinates. + /// + /// Coordinates of the ellipse. + public Ellipse(GeoPoint point) + { + Point = point; + } + + /// + /// Creates new object with specified coordinates and style. + /// + /// Coordinates of the ellipse. + /// Ellipse style. + public Ellipse(GeoPoint point, EllipseStyle style) + { + Point = point; + Style = style; + } + } +} diff --git a/MapControl/Elements/EllipseStyle.cs b/MapControl/Elements/EllipseStyle.cs new file mode 100644 index 0000000..fd7efd9 --- /dev/null +++ b/MapControl/Elements/EllipseStyle.cs @@ -0,0 +1,93 @@ +using System.Drawing; + +namespace System.Windows.Forms.Maps.Elements +{ + /// + /// Defines visual style of the . + /// + public class EllipseStyle + { + /// + /// Pen to draw ellipse outline. + /// + public Pen EllipsePen { get; set; } + + /// + /// Brush to fill ellipse interior. + /// + public Brush EllipseBrush { get; set; } + + /// + /// Width of the ellipse circle in specified unit. + /// + public float EllipseWidth { get; set; } + + /// + /// Height of the ellipse circle in specified unit. + /// + public float EllipseHeight { get; set; } + + /// + /// Unit for width and height. Default is PIXELS. + /// + public Unit EllipseUnit { get; set; } = Unit.PIXELS; + + /// + /// Creates new ellipse style. + /// + public EllipseStyle() : this(Default.EllipseWidth, Default.EllipseHeight, Default.EllipseBrush, Default.EllipsePen, Default.EllipseUnit) { } + + /// + /// Creates new ellipse style. + /// + /// Width of the ellipse circle. + public EllipseStyle(float ellipseCircleWidth) : this(ellipseCircleWidth, ellipseCircleWidth, Default.EllipseBrush, Default.EllipsePen, Default.EllipseUnit) { } + + /// + /// Creates new ellipse style. + /// + /// Width of the ellipse circle. + /// Height of the ellipse circle. + public EllipseStyle(float ellipseWidth, float ellipseHeight) : this(ellipseWidth, ellipseHeight, Default.EllipseBrush, Default.EllipsePen, Default.EllipseUnit) { } + + /// + /// Creates new ellipse style. + /// + /// Width of the ellipse circle. + /// Height of the ellipse circle. + /// Brush to fill ellipse interior. + public EllipseStyle(float ellipseWidth, float ellipseHeight, Brush ellipseBrush) : this(ellipseWidth, ellipseHeight, ellipseBrush, Default.EllipsePen, Default.EllipseUnit) { } + + /// + /// Creates new ellipse style. + /// + /// Width of the ellipse circle. + /// Height of the ellipse circle. + /// Brush to fill ellipse interior. + /// Pen to draw ellipse outline. + /// Unit to measure ellipse outline. + public EllipseStyle(float ellipseWidth, float ellipseHeight, Brush ellipseBrush, Pen ellipsePen, Unit ellipseUnit) + { + EllipsePen = ellipsePen; + EllipseBrush = ellipseBrush; + EllipseWidth = ellipseWidth; + EllipseHeight = ellipseHeight; + EllipseUnit = ellipseUnit; + } + + /// + /// Default ellipse style. + /// + public static EllipseStyle Default = new EllipseStyle(20, 20, Brushes.Red, null, Unit.PIXELS); + + /// + /// Unit enumeration defining units for width and height. + /// + public enum Unit + { + PIXELS, + METERS, + YARDS + } + } +} diff --git a/MapControl/Elements/IElement.cs b/MapControl/Elements/IElement.cs new file mode 100644 index 0000000..f542a16 --- /dev/null +++ b/MapControl/Elements/IElement.cs @@ -0,0 +1,9 @@ +namespace System.Windows.Forms.Maps.Elements +{ + /// + /// Iterface for map elements. + /// + public interface IElement + { + } +} diff --git a/MapControl/Marker.cs b/MapControl/Elements/Marker.cs similarity index 91% rename from MapControl/Marker.cs rename to MapControl/Elements/Marker.cs index 42ab2f6..01a6088 100644 --- a/MapControl/Marker.cs +++ b/MapControl/Elements/Marker.cs @@ -1,72 +1,74 @@ -namespace System.Windows.Forms -{ - /// - /// Represents marker point on the map. - /// - public class Marker - { - /// - /// Marker coordinates. - /// - public GeoPoint Point { get; set; } - - /// - /// Style to draw the marker. - /// - public MarkerStyle Style { get; set; } - - /// - /// Marker label. - /// - public string Label { get; set; } - - /// - /// Custom data associated with the marker. - /// - public object Data { get; set; } - - /// - /// Creates new object with specified coordinates. - /// - /// Coordinates of the marker. - public Marker(GeoPoint point) - { - Point = point; - } - - /// - /// Creates new object with specified coordinates and style. - /// - /// Coordinates of the marker. - /// Marker style. - public Marker(GeoPoint point, MarkerStyle style) - { - Point = point; - Style = style; - } - - /// - /// Creates new object with specified coordinates and label. - /// - /// Coordinates of the marker. - /// Marker label. - public Marker(GeoPoint point, string label) - { - Point = point; - Label = label; - } - - /// - /// Creates new object with specified coordinates, style and label. - /// - /// Coordinates of the marker. - /// Marker style. - /// Marker label. - public Marker(GeoPoint point, MarkerStyle style, string label) - { - Point = point; - Style = style; - Label = label; - } - } -} +using System.Windows.Forms.Maps.Common; + +namespace System.Windows.Forms.Maps.Elements +{ + /// + /// Represents marker point on the map. + /// + public class Marker : IElement + { + /// + /// Marker coordinates. + /// + public GeoPoint Point { get; set; } + + /// + /// Style to draw the marker. + /// + public MarkerStyle Style { get; set; } = MarkerStyle.Default; + + /// + /// Marker label. + /// + public string Label { get; set; } + + /// + /// Custom data associated with the marker. + /// + public object Data { get; set; } + + /// + /// Creates new object with specified coordinates. + /// + /// Coordinates of the marker. + public Marker(GeoPoint point) + { + Point = point; + } + + /// + /// Creates new object with specified coordinates and style. + /// + /// Coordinates of the marker. + /// Marker style. + public Marker(GeoPoint point, MarkerStyle style) + { + Point = point; + Style = style; + } + + /// + /// Creates new object with specified coordinates and label. + /// + /// Coordinates of the marker. + /// Marker label. + public Marker(GeoPoint point, string label) + { + Point = point; + Label = label; + } + + /// + /// Creates new object with specified coordinates, style and label. + /// + /// Coordinates of the marker. + /// Marker style. + /// Marker label. + public Marker(GeoPoint point, MarkerStyle style, string label) + { + Point = point; + Style = style; + Label = label; + } + } +} diff --git a/MapControl/MarkerStyle.cs b/MapControl/Elements/MarkerStyle.cs similarity index 62% rename from MapControl/MarkerStyle.cs rename to MapControl/Elements/MarkerStyle.cs index 30fac33..7989493 100644 --- a/MapControl/MarkerStyle.cs +++ b/MapControl/Elements/MarkerStyle.cs @@ -1,87 +1,94 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Drawing; -namespace System.Windows.Forms +namespace System.Windows.Forms.Maps.Elements { - /// - /// Defines visual style of the . + /// + /// Defines visual style of the . /// public class MarkerStyle { - /// - /// Pen to draw marker outline. + /// + /// Pen to draw marker outline. /// public Pen MarkerPen { get; set; } - /// - /// Brush to fill marker interior. + /// + /// Brush to fill marker interior. /// public Brush MarkerBrush { get; set; } - /// - /// Width of the marker circle, in pixels. + /// + /// Image to draw the marker alternatively. + /// + public Image MarkerImage { get; set; } + + /// + /// Width of the marker circle, in pixels. /// public float MarkerWidth { get; set; } - /// - /// Brush to draw marker label. + /// + /// Brush to draw marker label. /// public Brush LabelBrush { get; set; } - /// - /// Font used to draw marker label. + /// + /// Font used to draw marker label. /// public Font LabelFont { get; set; } - /// - /// String format used to draw marker label. + /// + /// String format used to draw marker label. /// public StringFormat LabelFormat { get; set; } - /// - /// Creates new marker style. + /// + /// Creates new marker style. /// - public MarkerStyle() : this(Default.MarkerWidth, Default.MarkerBrush, Default.MarkerPen, Default.LabelBrush, Default.LabelFont, Default.LabelFormat) { } + public MarkerStyle() : this(Default.MarkerImage, Default.MarkerWidth, Default.MarkerBrush, Default.MarkerPen, Default.LabelBrush, Default.LabelFont, Default.LabelFormat) { } - /// - /// Creates new marker style. + /// + /// Creates new marker style. /// /// Width of the marker circle, in pixels. - public MarkerStyle(float markerWidth) : this(markerWidth, Default.MarkerBrush, Default.MarkerPen, Default.LabelBrush, Default.LabelFont, Default.LabelFormat) { } + public MarkerStyle(float markerWidth) : this(Default.MarkerImage, markerWidth, Default.MarkerBrush, Default.MarkerPen, Default.LabelBrush, Default.LabelFont, Default.LabelFormat) { } - /// - /// Creates new marker style. + /// + /// Creates new marker style. /// /// Width of the marker circle, in pixels. /// /// Brush to fill marker interior. - public MarkerStyle(float markerWidth, Brush markerBrush) : this(markerWidth, markerBrush, Default.MarkerPen, Default.LabelBrush, Default.LabelFont, Default.LabelFormat) { } + public MarkerStyle(float markerWidth, Brush markerBrush) : this(Default.MarkerImage, markerWidth, markerBrush, Default.MarkerPen, Default.LabelBrush, Default.LabelFont, Default.LabelFormat) { } + + /// + /// Creates a new marker style from image. + /// + /// Image to be drawn as marker. + public MarkerStyle(Image markerImage) : this(markerImage, markerImage.Width, Default.MarkerBrush, Default.MarkerPen, Default.LabelBrush, Default.LabelFont, Default.LabelFormat) { } - /// - /// Creates new marker style. - /// - /// Width of the marker circle, in pixels. - /// Brush to fill marker interior. - /// Pen to draw marker outline. - /// Brush to draw marker label. - /// Font used to draw marker label. + /// + /// Creates new marker style. + /// + /// Width of the marker circle, in pixels. + /// Brush to fill marker interior. + /// Pen to draw marker outline. + /// Brush to draw marker label. + /// Font used to draw marker label. /// String format used to draw marker label. - public MarkerStyle(float markerWidth, Brush markerBrush, Pen markerPen, Brush labelBrush, Font labelFont, StringFormat labelFormat) + public MarkerStyle(Image markerImage, float markerWidth, Brush markerBrush, Pen markerPen, Brush labelBrush, Font labelFont, StringFormat labelFormat) { + MarkerImage = markerImage; MarkerPen = markerPen; LabelBrush = labelBrush; MarkerBrush = markerBrush; MarkerWidth = markerWidth; LabelFont = labelFont; LabelFormat = labelFormat; - } - - /// - /// Default marker style. - /// - public static MarkerStyle Default = new MarkerStyle(3, Brushes.Red, null, Brushes.Black, SystemFonts.DefaultFont, StringFormat.GenericDefault); + } + + /// + /// Default marker style. + /// + public static MarkerStyle Default = new MarkerStyle(null, 3, Brushes.Red, null, Brushes.Black, SystemFonts.DefaultFont, StringFormat.GenericDefault); } } diff --git a/MapControl/Polygon.cs b/MapControl/Elements/Polygon.cs similarity index 68% rename from MapControl/Polygon.cs rename to MapControl/Elements/Polygon.cs index a8802ce..1bfdfb2 100644 --- a/MapControl/Polygon.cs +++ b/MapControl/Elements/Polygon.cs @@ -1,21 +1,17 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Collections.Generic; +using System.Windows.Forms.Maps.Common; -namespace System.Windows.Forms +namespace System.Windows.Forms.Maps.Elements { /// /// Represents filled closed area on the map. /// - public class Polygon : List + public class Polygon : List, IElement { /// /// Gets or sets polygon style. /// - public PolygonStyle Style { get; set; } + public PolygonStyle Style { get; set; } = PolygonStyle.Default; /// diff --git a/MapControl/PolygonStyle.cs b/MapControl/Elements/PolygonStyle.cs similarity index 89% rename from MapControl/PolygonStyle.cs rename to MapControl/Elements/PolygonStyle.cs index da05a92..d987125 100644 --- a/MapControl/PolygonStyle.cs +++ b/MapControl/Elements/PolygonStyle.cs @@ -1,11 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Drawing; -namespace System.Windows.Forms +namespace System.Windows.Forms.Maps.Elements { /// /// Defines drawing style for object. @@ -49,12 +44,12 @@ public PolygonStyle(Brush brush, Pen pen) { Brush = brush; Pen = pen; - } - - - /// - /// Default polygon style. - /// + } + + + /// + /// Default polygon style. + /// public static PolygonStyle Default = new PolygonStyle(new SolidBrush(Color.FromArgb(100, Color.Black)), new Pen(Color.Black) { Width = 2 }); } } diff --git a/MapControl/Track.cs b/MapControl/Elements/Track.cs similarity index 65% rename from MapControl/Track.cs rename to MapControl/Elements/Track.cs index a682793..4c23b7a 100644 --- a/MapControl/Track.cs +++ b/MapControl/Elements/Track.cs @@ -1,34 +1,30 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace System.Windows.Forms -{ - /// - /// Represents track (collection of connected points). - /// - public class Track : List - { - /// - /// Style to draw the track - /// - public TrackStyle Style { get; set; } - - /// - /// Custom data associated with the marker - /// - public object Data { get; set; } - - /// - /// Creates a track with specified style - /// - /// - public Track(TrackStyle style) - { - Style = style; - } - } -} +using System.Collections.Generic; +using System.Windows.Forms.Maps.Common; + +namespace System.Windows.Forms.Maps.Elements +{ + /// + /// Represents track (collection of connected points). + /// + public class Track : List, IElement + { + /// + /// Style to draw the track + /// + public TrackStyle Style { get; set; } = TrackStyle.Default; + + /// + /// Custom data associated with the marker + /// + public object Data { get; set; } + + /// + /// Creates a track with specified style + /// + /// + public Track(TrackStyle style) + { + Style = style; + } + } +} diff --git a/MapControl/Elements/TrackStyle.cs b/MapControl/Elements/TrackStyle.cs new file mode 100644 index 0000000..0ee5091 --- /dev/null +++ b/MapControl/Elements/TrackStyle.cs @@ -0,0 +1,74 @@ +using System.Drawing; + +namespace System.Windows.Forms.Maps.Elements +{ + /// + /// Defines visual style of the . + /// + public class TrackStyle + { + /// + /// Pen used to draw track path. + /// + public Pen Pen { get; set; } + + /// + /// Indicator for drawing the direction indicator. + /// + public Pen DirectionIndicatorPen { get; set; } + + /// + /// Minimum required zoom level vor showing up an direction indicator. + /// + public int DirectionIndicatorMinimumZoomLevel { get; set; } + + /// + /// Creates new . + /// + public TrackStyle() + { + + } + + /// + /// Creates new . + /// + /// Pen used to draw track path. + public TrackStyle(Pen pen) + { + Pen = pen; + DirectionIndicatorPen = null; + DirectionIndicatorMinimumZoomLevel = 12; + } + + /// + /// Creates new with a direction indicator drawn by the second pen passed. + /// + /// Pen used to draw track path. + /// Pen used to draw the direction indicator. + public TrackStyle(Pen pen, Pen directionIndicatorPen) + { + Pen = pen; + DirectionIndicatorPen = directionIndicatorPen; + DirectionIndicatorMinimumZoomLevel = 12; + } + + /// + /// Creates new with a direction indicator drawn by the second pen passed. + /// + /// Pen used to draw track path. + /// Pen used to draw the direction indicator. + /// Minimum zoom level to show up a direction indicator. + public TrackStyle(Pen pen, Pen directionIndicatorPen, int directionIndicatorMinimumZoomLevel) + { + Pen = pen; + DirectionIndicatorPen = directionIndicatorPen; + DirectionIndicatorMinimumZoomLevel = directionIndicatorMinimumZoomLevel; + } + + /// + /// Default track style. + /// + public static TrackStyle Default = new TrackStyle(new Pen(Color.Blue) { DashStyle = System.Drawing.Drawing2D.DashStyle.Dash }); + } +} diff --git a/MapControl/Events/DrawEllipseEventArgs.cs b/MapControl/Events/DrawEllipseEventArgs.cs new file mode 100644 index 0000000..7d17512 --- /dev/null +++ b/MapControl/Events/DrawEllipseEventArgs.cs @@ -0,0 +1,26 @@ +using System.Drawing; +using System.Windows.Forms.Maps.Elements; + +namespace System.Windows.Forms +{ + /// + /// Provides data for event. + /// + public class DrawEllipseEventArgs : MapControlDrawEventArgs + { + /// + /// instance to be drawn. + /// + public Ellipse Ellipse { get; internal set; } + + /// + /// Coordinates of the marker on the map. + /// + public PointF Point { get; internal set; } + + /// + /// Creates new instance of . + /// + internal DrawEllipseEventArgs() { } + } +} diff --git a/MapControl/Events/DrawMarkerEventArgs.cs b/MapControl/Events/DrawMarkerEventArgs.cs index c9e78e1..49b858d 100644 --- a/MapControl/Events/DrawMarkerEventArgs.cs +++ b/MapControl/Events/DrawMarkerEventArgs.cs @@ -1,4 +1,5 @@ using System.Drawing; +using System.Windows.Forms.Maps.Elements; namespace System.Windows.Forms { diff --git a/MapControl/Events/DrawPolygonEventArgs.cs b/MapControl/Events/DrawPolygonEventArgs.cs index 9f0b067..6dc68e1 100644 --- a/MapControl/Events/DrawPolygonEventArgs.cs +++ b/MapControl/Events/DrawPolygonEventArgs.cs @@ -1,4 +1,5 @@ using System.Drawing.Drawing2D; +using System.Windows.Forms.Maps.Elements; namespace System.Windows.Forms { diff --git a/MapControl/Events/DrawTrackEventArgs.cs b/MapControl/Events/DrawTrackEventArgs.cs index ade27bc..e65ebc9 100644 --- a/MapControl/Events/DrawTrackEventArgs.cs +++ b/MapControl/Events/DrawTrackEventArgs.cs @@ -1,4 +1,5 @@ using System.Drawing; +using System.Windows.Forms.Maps.Elements; namespace System.Windows.Forms { diff --git a/MapControl/Events/MapControlElementEventArgs.cs b/MapControl/Events/MapControlElementEventArgs.cs new file mode 100644 index 0000000..47dc0b1 --- /dev/null +++ b/MapControl/Events/MapControlElementEventArgs.cs @@ -0,0 +1,31 @@ +using System.Windows.Forms.Maps.Elements; +using System.Windows.Forms.Maps.Layers; + +namespace System.Windows.Forms +{ + /// + /// Represents class for map element events. + /// + public class MapControlElementEventArgs + { + /// + /// Cursor X position. + /// + public int X { get; internal set; } + + /// + /// Cursor Y position. + /// + public int Y { get; internal set; } + + /// + /// insance containing the element. + /// + public Layer Layer { get; internal set; } + + /// + /// instance which has been clicked. + /// + public IElement Element { get; internal set; } + } +} diff --git a/MapControl/Layers/EllipseLayer.cs b/MapControl/Layers/EllipseLayer.cs new file mode 100644 index 0000000..3cf3e2e --- /dev/null +++ b/MapControl/Layers/EllipseLayer.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Windows.Forms.Maps.Elements; + +namespace System.Windows.Forms.Maps.Layers +{ + /// + /// Represents a collection of ellipses grouped together into a layer. + /// + public class EllipseLayer : Layer + { + /// + /// List of ellipses + /// + public List Ellipses { get; set; } = new List(); + + /// + /// Creates an ellipse layer with specified level + /// + /// + public EllipseLayer(int level) : base(level) + { + } + + public void AddEllipse(Ellipse ellipse) + { + Ellipses.Add(ellipse); + RaiseLayerPropertyChangedEvent(this, EventArgs.Empty); + } + + public void Clear() + { + Ellipses.Clear(); + RaiseLayerPropertyChangedEvent(this, EventArgs.Empty); + } + } +} diff --git a/MapControl/Layers/Layer.cs b/MapControl/Layers/Layer.cs new file mode 100644 index 0000000..df22602 --- /dev/null +++ b/MapControl/Layers/Layer.cs @@ -0,0 +1,106 @@ +namespace System.Windows.Forms.Maps.Layers +{ + /// + /// Represents an abstract base class for layers of each type. + /// + public abstract class Layer : IEquatable + { + /// + /// Internal GUID to uniquely identify an layer. + /// + private Guid _id; + + /// + /// Informational name of the layer. + /// + public string Name { get; set; } + + /// + /// Backing field for property. + /// + private int _Level = 0; + + /// + /// Level of the layer, decides whether a layer is displayed above / below another one + /// + public int Level + { + get => _Level; + set + { + _Level = value; + LayerPropertyChanged?.Invoke(this, new EventArgs()); + } + } + + /// + /// Backing field for property. + /// + private bool _Visible = true; + + /// + /// Enables visibility of an layer + /// + public bool Visible + { + get => _Visible; + set + { + _Visible = value; + LayerPropertyChanged?.Invoke(this, new EventArgs()); + } + } + + /// + /// Returns or sets whether the elements of the layer are hoverable or not. + /// + public bool Hoverable { get; set; } = true; + + /// + /// Returns or sets whether the elements of the layer are clickable or not. + /// + public bool Clickable { get; set; } = true; + + /// + /// Raised when property value is changed. + /// + public event EventHandler LayerPropertyChanged; + + /// + /// Creates a layer with specified level + /// + /// + public Layer(int level) + { + Level = level; + Visible = true; + + _id = Guid.NewGuid(); + } + + /// + /// Raises in base class. + /// + /// Sender object which raised the event. + /// Event arguments. + protected void RaiseLayerPropertyChangedEvent(object sender, EventArgs args) + { + LayerPropertyChanged?.Invoke(sender, args); + } + + /// + /// Compares two layers. + /// + /// Layer to compare + /// Whether the layers are equal + public bool Equals(Layer other) + { + if (other == null) + { + return false; + } + + return _id.Equals(other._id); + } + } +} diff --git a/MapControl/Layers/LayerGroup.cs b/MapControl/Layers/LayerGroup.cs new file mode 100644 index 0000000..b395790 --- /dev/null +++ b/MapControl/Layers/LayerGroup.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; + +namespace System.Windows.Forms.Maps.Layers +{ + /// + /// Represents a layer grouping other layers together. + /// + public class LayerGroup : Layer + { + /// + /// List of layers + /// + public List Layers { get; set; } = new List(); + + /// + /// Creates a layer group with level 0 + /// + public LayerGroup(): base(0) + { + } + + /// + /// Creates a layer group with specified level + /// + /// + public LayerGroup(int level) : base(level) + { + } + + /// + /// Adds a layer into layer group. + /// + /// Layer to add into group. + public void AddLayer(Layer layer) + { + layer.LayerPropertyChanged += HandleLayerPropertyChanged; + + Layers.Add(layer); + RaiseLayerPropertyChangedEvent(this, EventArgs.Empty); + } + + /// + /// Cleas all subsequent layers. + /// + public void Clear() + { + Layers.Clear(); + RaiseLayerPropertyChangedEvent(this, EventArgs.Empty); + } + + /// + /// Handles event from subsequent layers. + /// + /// The layer which raised the event. + /// Event arguments. + private void HandleLayerPropertyChanged(object sender, EventArgs args) + { + RaiseLayerPropertyChangedEvent((Layer)sender, args); + } + } +} diff --git a/MapControl/Layers/MarkerLayer.cs b/MapControl/Layers/MarkerLayer.cs new file mode 100644 index 0000000..fd301b8 --- /dev/null +++ b/MapControl/Layers/MarkerLayer.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Windows.Forms.Maps.Elements; + +namespace System.Windows.Forms.Maps.Layers +{ + /// + /// Represents a collection of markers grouped together into a layer. + /// + public class MarkerLayer : Layer + { + /// + /// List of markers + /// + public List Markers { get; set; } = new List(); + + /// + /// Creates a marker layer with specified level + /// + /// + public MarkerLayer(int level): base(level) + { + } + + public void AddMarker(Marker marker) + { + Markers.Add(marker); + RaiseLayerPropertyChangedEvent(this, EventArgs.Empty); + } + + public void Clear() + { + Markers.Clear(); + RaiseLayerPropertyChangedEvent(this, EventArgs.Empty); + } + } +} diff --git a/MapControl/Layers/PolygonLayer.cs b/MapControl/Layers/PolygonLayer.cs new file mode 100644 index 0000000..150c663 --- /dev/null +++ b/MapControl/Layers/PolygonLayer.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Windows.Forms.Maps.Elements; + +namespace System.Windows.Forms.Maps.Layers +{ + /// + /// Represents a collection of polygons grouped together into a layer. + /// + public class PolygonLayer : Layer + { + /// + /// List of polygons + /// + public List Polygons { get; set; } = new List(); + + /// + /// Creates a polygon layer with specified level + /// + /// + public PolygonLayer(int level) : base(level) + { + } + + public void AddPolygon(Polygon polygon) + { + Polygons.Add(polygon); + RaiseLayerPropertyChangedEvent(this, EventArgs.Empty); + } + + public void Clear() + { + Polygons.Clear(); + RaiseLayerPropertyChangedEvent(this, EventArgs.Empty); + } + } +} diff --git a/MapControl/Layers/TrackLayer.cs b/MapControl/Layers/TrackLayer.cs new file mode 100644 index 0000000..c518532 --- /dev/null +++ b/MapControl/Layers/TrackLayer.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Windows.Forms.Maps.Elements; + +namespace System.Windows.Forms.Maps.Layers +{ + /// + /// Represents a collection of tracks grouped together into a layer. + /// + public class TrackLayer : Layer + { + /// + /// List of tracks + /// + public List Tracks { get; set; } = new List(); + + /// + /// Creates a track layer with specified level + /// + /// + public TrackLayer(int level) : base(level) + { + } + + public void AddTrack(Track track) + { + Tracks.Add(track); + RaiseLayerPropertyChangedEvent(this, EventArgs.Empty); + } + + public void Clear() + { + Tracks.Clear(); + RaiseLayerPropertyChangedEvent(this, EventArgs.Empty); + } + } +} diff --git a/MapControl/MapControl.cs b/MapControl/MapControl.cs index f61c51e..27d67ec 100644 --- a/MapControl/MapControl.cs +++ b/MapControl/MapControl.cs @@ -1,42 +1,82 @@ -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.ComponentModel; -using System.Diagnostics; -using System.Drawing; -using System.Drawing.Drawing2D; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Drawing2D; using System.Drawing.Imaging; -using System.IO; -using System.Linq; +using System.IO; +using System.Linq; using System.Threading; +using System.Windows.Forms.Maps.Common; +using System.Windows.Forms.Maps.Elements; +using System.Windows.Forms.Maps.Layers; -namespace System.Windows.Forms -{ +namespace System.Windows.Forms +{ /// /// Map control for displaying online and offline maps. - /// - [DesignerCategory("code")] + /// + [DesignerCategory("code")] public partial class MapControl : Control - { - /// - /// Tile size, in pixels. - /// - private const int TILE_SIZE = 256; - - /// - /// First tile offset. - /// - private Point _Offset = new Point(); - + { + #region Private Properties + + /// + /// Tile size, in pixels. + /// + private const int TILE_SIZE = 256; + + /// + /// Layer for markers added directly to the map. + /// + private MarkerLayer _BaseMarkerLayer = new MarkerLayer(Int32.MaxValue) { Name = "BaseMarkerLayer" }; + + /// + /// Layer for tracks added directly to the map. + /// + private TrackLayer _BaseTrackLayer = new TrackLayer(Int32.MaxValue) { Name = "BaseTrackLayer" }; + + /// + /// Layer for polgons added directly to the map. + /// + private PolygonLayer _BasePolygonLayer = new PolygonLayer(Int32.MaxValue) { Name = "BasePolygonLayer" }; + + /// + /// Layer for ellipses added directly to the map. + /// + private EllipseLayer _BaseEllipseLayer = new EllipseLayer(Int32.MaxValue) { Name = "BaseEllipseLayer" }; + + /// + /// First tile offset. + /// + private Point _Offset = new Point(); + /// /// Flag indicating thar mouse is captured. - /// - private bool _MouseCaptured = false; - + /// + private bool _MouseCaptured = false; + + /// + /// Last element used to send an enter, leave or click event. + /// + private IElement _LastElement = null; + + /// + /// Last layer in which an element for enter, leave or click event has been found. + /// + private Layer _LastLayer = null; + /// /// Last known mouse position. - /// + /// private Point _LastMouse = new Point(); + /// + /// Last known center point before resizing. + /// + private GeoPoint _LastCenter = new GeoPoint(); + /// /// Cache used to store tile images in memory. /// @@ -44,17 +84,17 @@ public partial class MapControl : Control /// /// Pool of tiles to be requested from the server. - /// + /// private ConcurrentBag _RequestPool = new ConcurrentBag(); /// /// Worker thread to process tile requests to the server. - /// - private Thread _Worker = null; - + /// + private Thread _Worker = null; + /// /// Event handle to stop/resume requests processing. - /// + /// private EventWaitHandle _WorkerWaitHandle = new EventWaitHandle(false, EventResetMode.ManualReset); /// @@ -67,270 +107,262 @@ public partial class MapControl : Control /// private HtmlLinkLabel _LinkLabel; - /// - /// Gets size of map in tiles. - /// - private int FullMapSizeInTiles => 1 << ZoomLevel; - - /// - /// Gets maps size in pixels. - /// - private int FullMapSizeInPixels => FullMapSizeInTiles * TILE_SIZE; - - /// - /// Backing field for property. - /// + /// + /// Gets size of map in tiles. + /// + private int FullMapSizeInTiles => 1 << ZoomLevel; + + /// + /// Gets maps size in pixels. + /// + private int FullMapSizeInPixels => FullMapSizeInTiles * TILE_SIZE; + + #endregion + + #region Public Properties + + /// + /// Backing field for property. + /// private int _ZoomLevel = 0; - /// - /// Map zoom level. - /// - [Description("Map zoom level"), Category("Behavior")] - public int ZoomLevel - { - get => _ZoomLevel; - set - { - if (value < 0 || value > 19) - throw new ArgumentException($"{value} is an incorrect value for {nameof(ZoomLevel)} property. Value should be in range from 0 to 19."); - + /// + /// Map zoom level. + /// + [Description("Map zoom level"), Category("Behavior")] + public int ZoomLevel + { + get => _ZoomLevel; + set + { + if (value < 0 || value > 19) + throw new ArgumentException($"{value} is an incorrect value for {nameof(ZoomLevel)} property. Value should be in range from 0 to 19."); + SetZoomLevel(value, new Point(Width / 2, Height / 2)); - CenterChanged?.Invoke(this, EventArgs.Empty); - } - } - + CenterChanged?.Invoke(this, EventArgs.Empty); + } + } + /// /// Backing field for property. - /// + /// private string _CacheFolder = null; /// /// Path to tile cache folder. Should be set if tile server supports file system caching. - /// - [Browsable(false)] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public string CacheFolder - { - get => _CacheFolder; + /// + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public string CacheFolder + { + get => _CacheFolder; set - { - if (string.IsNullOrEmpty(value)) - throw new ArgumentException($"{nameof(CacheFolder)} property value should not be empty."); - - if (value.IndexOfAny(Path.GetInvalidPathChars()) != -1) - throw new ArgumentException($"{value} is an incorrect value for {nameof(CacheFolder)} property."); - - _CacheFolder = value; - } - } - - /// - /// Backing field for property. - /// + { + if (string.IsNullOrEmpty(value)) + throw new ArgumentException($"{nameof(CacheFolder)} property value should not be empty."); + + if (value.IndexOfAny(Path.GetInvalidPathChars()) != -1) + throw new ArgumentException($"{value} is an incorrect value for {nameof(CacheFolder)} property."); + + _CacheFolder = value; + } + } + + /// + /// Backing field for property. + /// private int _MinZoomLevel = 0; - /// - /// Gets or sets minimal zoom level. - /// + /// + /// Gets or sets minimal zoom level. + /// [Description("Minimal zoom level"), Category("Behavior")] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public int MinZoomLevel - { - get => _MinZoomLevel; - set - { - if (value < 0 || value > 19) - throw new ArgumentException($"{value} is an incorrect value for {nameof(MinZoomLevel)} property. Value should be in range from 0 to 19."); - - _MinZoomLevel = value; - Invalidate(); - } - } - - /// - /// Backing field for property. - /// - private int _MaxZoomLevel = 19; - - /// - /// Gets or sets maximal zoom level. - /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public int MinZoomLevel + { + get => _MinZoomLevel; + set + { + if (value < 0 || value > 19) + throw new ArgumentException($"{value} is an incorrect value for {nameof(MinZoomLevel)} property. Value should be in range from 0 to 19."); + + _MinZoomLevel = value; + Invalidate(); + } + } + + /// + /// Backing field for property. + /// + private int _MaxZoomLevel = 19; + + /// + /// Gets or sets maximal zoom level. + /// [Description("Maximal zoom level"), Category("Behavior")] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public int MaxZoomLevel - { - get => _MaxZoomLevel; - set - { - if (value < 0 || value > 19) - throw new ArgumentException($"{value} is an incorrect value for {nameof(MaxZoomLevel)} property. Value should be in range from 0 to 19."); - - _MaxZoomLevel = value; - Invalidate(); - } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public int MaxZoomLevel + { + get => _MaxZoomLevel; + set + { + if (value < 0 || value > 19) + throw new ArgumentException($"{value} is an incorrect value for {nameof(MaxZoomLevel)} property. Value should be in range from 0 to 19."); + + _MaxZoomLevel = value; + Invalidate(); + } } /// /// Backing field for property. - /// - private ITileServer _TileServer; - + /// + private ITileServer _TileServer; + /// /// Gets or sets tile server instance used to obtain map tiles. - /// + /// [Browsable(false)] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public ITileServer TileServer - { - get => _TileServer; - set - { - _TileServer = value; - _LinkLabel.Links.Clear(); - _LinkLabel.Visible = false; - - if (value != null) - { - _Cache = new ConcurrentBag(); - - if (_TileServer.AttributionText != null) - { - _LinkLabel.Text = _TileServer.AttributionText; - _LinkLabel.Visible = true; - OnSizeChanged(new EventArgs()); - } - - if (ZoomLevel > TileServer.MaxZoomLevel) - ZoomLevel = TileServer.MaxZoomLevel; - - if (ZoomLevel < TileServer.MinZoomLevel) - ZoomLevel = TileServer.MinZoomLevel; - } - + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public ITileServer TileServer + { + get => _TileServer; + set + { + _TileServer = value; + _LinkLabel.Links.Clear(); + _LinkLabel.Visible = false; + + if (value != null) + { + _Cache = new ConcurrentBag(); + + if (_TileServer.AttributionText != null) + { + _LinkLabel.Text = _TileServer.AttributionText; + _LinkLabel.Visible = true; + OnSizeChanged(new EventArgs()); + } + + if (ZoomLevel > TileServer.MaxZoomLevel) + ZoomLevel = TileServer.MaxZoomLevel; + + if (ZoomLevel < TileServer.MinZoomLevel) + ZoomLevel = TileServer.MinZoomLevel; + } + Invalidate(); - TileServerChanged?.Invoke(this, EventArgs.Empty); - } - } - - /// - /// Gets or sets geographical coordinates of the map center. - /// + TileServerChanged?.Invoke(this, EventArgs.Empty); + } + } + + /// + /// Gets or sets geographical coordinates of the map center. + /// [Browsable(false)] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public GeoPoint Center - { - get - { + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public GeoPoint Center + { + get + { float x = NormalizeTileNumber(-(float)(_Offset.X - Width / 2) / TILE_SIZE); float y = -(float)(_Offset.Y - Height / 2) / TILE_SIZE; - return TileToWorldPos(x, y); - } - set - { - var center = WorldToTilePos(value); - _Offset.X = -(int)(center.X * TILE_SIZE) + Width / 2; - _Offset.Y = -(int)(center.Y * TILE_SIZE) + Height / 2; - _Offset.X = (int)(_Offset.X % FullMapSizeInPixels); - Invalidate(); - CenterChanged?.Invoke(this, EventArgs.Empty); - } - } - - /// - /// Gets geographical coordinates of the current position of mouse. - /// - [Browsable(false)] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public GeoPoint Mouse - { - get - { - float x = NormalizeTileNumber(-(float)(_Offset.X - _LastMouse.X) / TILE_SIZE); - float y = -(float)(_Offset.Y - _LastMouse.Y) / TILE_SIZE; - return TileToWorldPos(x, y); - } - } + return TileToWorldPos(x, y); + } + set + { + _LastCenter = value; - /// - /// Gets geographical coordinates of the top left point of the map - /// - [Browsable(false)] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public GeoPoint TopLeft - { - get - { - float x = NormalizeTileNumber(-(float)(_Offset.X) / TILE_SIZE); - float y = -(float)(_Offset.Y) / TILE_SIZE; - return TileToWorldPos(x, y); - } + var center = WorldToTilePos(value); + _Offset.X = -(int)(center.X * TILE_SIZE) + Width / 2; + _Offset.Y = -(int)(center.Y * TILE_SIZE) + Height / 2; + _Offset.X = (int)(_Offset.X % FullMapSizeInPixels); + Invalidate(); + CenterChanged?.Invoke(this, EventArgs.Empty); + } } - /// - /// Gets geographical coordinates of the top right point of the map - /// + /// + /// Gets geographical coordinates of the current position of mouse. + /// [Browsable(false)] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public GeoPoint TopRight - { - get - { - float x = NormalizeTileNumber(-(float)(_Offset.X - Width) / TILE_SIZE); - float y = -(float)(_Offset.Y) / TILE_SIZE; - return TileToWorldPos(x, y); - } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public GeoPoint Mouse + { + get + { + float x = NormalizeTileNumber(-(float)(_Offset.X - _LastMouse.X) / TILE_SIZE); + float y = -(float)(_Offset.Y - _LastMouse.Y) / TILE_SIZE; + return TileToWorldPos(x, y); + } } - /// - /// Gets geographical coordinates of the bottom left point of the map - /// + /// + /// Gets geographical coordinates of the top left point of the map + /// [Browsable(false)] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public GeoPoint BottomLeft - { - get + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public GeoPoint TopLeft + { + get { - float x = NormalizeTileNumber(-(float)(_Offset.X) / TILE_SIZE); - float y = -(float)(_Offset.Y - Height) / TILE_SIZE; - return TileToWorldPos(x, y); - } + float x = NormalizeTileNumber(-(float)(_Offset.X) / TILE_SIZE); + float y = -(float)(_Offset.Y) / TILE_SIZE; + return TileToWorldPos(x, y); + } } - /// - /// Gets geographical coordinates of the bottom right point of the map - /// + /// + /// Gets geographical coordinates of the top right point of the map + /// [Browsable(false)] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public GeoPoint BottomRight - { - get + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public GeoPoint TopRight + { + get { - float x = NormalizeTileNumber(-(float)(_Offset.X - Width) / TILE_SIZE); - float y = -(float)(_Offset.Y - Height) / TILE_SIZE; - return TileToWorldPos(x, y); - } + float x = NormalizeTileNumber(-(float)(_Offset.X - Width) / TILE_SIZE); + float y = -(float)(_Offset.Y) / TILE_SIZE; + return TileToWorldPos(x, y); + } } /// - /// Gets collection of markers to be displayed on the map. + /// Gets geographical coordinates of the bottom left point of the map /// [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public ICollection Markers { get; } = new List(); + public GeoPoint BottomLeft + { + get + { + float x = NormalizeTileNumber(-(float)(_Offset.X) / TILE_SIZE); + float y = -(float)(_Offset.Y - Height) / TILE_SIZE; + return TileToWorldPos(x, y); + } + } /// - /// Gets collection of tracks to be displayed on the map. + /// Gets geographical coordinates of the bottom right point of the map /// [Browsable(false)] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public ICollection Tracks { get; } = new List(); + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public GeoPoint BottomRight + { + get + { + float x = NormalizeTileNumber(-(float)(_Offset.X - Width) / TILE_SIZE); + float y = -(float)(_Offset.Y - Height) / TILE_SIZE; + return TileToWorldPos(x, y); + } + } /// - /// Gets collection of polygons to be displayed on the map. + /// Gets collection of layers to be displayed on the map. /// [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public ICollection Polygons { get; } = new List(); + public ICollection Layers { get; } = new List(); /// /// Backing field for property. @@ -401,20 +433,44 @@ public override Color ForeColor [Description("Image attributes to be applied to a tile image when drawing."), Category("Appearance")] public ImageAttributes TileImageAttributes { get; set; } = null; + #endregion + + #region Public Events + /// /// Raised when marker is drawn on the map. - /// - public event EventHandler DrawMarker; - + /// + public event EventHandler DrawMarker; + /// /// Raised when track is drawn on the map. - /// + /// public event EventHandler DrawTrack; /// /// Raised when polygon is drawn on the map. - /// - public event EventHandler DrawPolygon; + /// + public event EventHandler DrawPolygon; + + /// + /// Raised when ellipse is drawn on the map. + /// + public event EventHandler DrawEllipse; + + /// + /// Raised when of an layer has been clicked. + /// + public event EventHandler ElementClick; + + /// + /// Raised when of an layer is entered. + /// + public event EventHandler ElementEnter; + + /// + /// Raised when of an layer is leaved. + /// + public event EventHandler ElementLeave; /// /// Raised when property value is changed. @@ -430,269 +486,465 @@ public override Color ForeColor /// Raised when property value is changed. /// public event EventHandler TileServerChanged; - + + #endregion + + #region Public Methods + /// /// Creates new control. - /// - public MapControl() - { - InitializeComponent(); - DoubleBuffered = true; - Cursor = Cursors.Cross; - - _LinkLabel = new HtmlLinkLabel() { Text = "", BackColor = Color.FromArgb(100, BackColor) }; - _LinkLabel.AutoSize = true; + /// + public MapControl() + { + InitializeComponent(); + DoubleBuffered = true; + Cursor = Cursors.Cross; + + _LinkLabel = new HtmlLinkLabel() { Text = "", BackColor = Color.FromArgb(100, BackColor) }; + _LinkLabel.AutoSize = true; _LinkLabel.ForeColor = ForeColor; - _LinkLabel.Margin = new Padding(2); - _LinkLabel.LinkClicked += _LinkLabel_LinkClicked; - + _LinkLabel.Margin = new Padding(2); + _LinkLabel.LinkClicked += _LinkLabel_LinkClicked; + Controls.Add(_LinkLabel); - } - + + // add base layers + AddLayer(_BaseMarkerLayer); + AddLayer(_BaseTrackLayer); + AddLayer(_BasePolygonLayer); + AddLayer(_BaseEllipseLayer); + } + /// - /// Called on creating control. - /// - protected override void OnCreateControl() + /// Adds a layer to the map control and invalidates map. + /// + /// Layer to add to the map. + public void AddLayer(Layer layer) { - base.OnCreateControl(); - Center = new GeoPoint(0, 0); - } - - /// - /// Handles clicks on LinkLabel links - /// - private void _LinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) - { - Process.Start(e.Link.LinkData.ToString()); - } - + layer.LayerPropertyChanged += LayerPropertyChanged; + + Layers.Add(layer); + Invalidate(); + } + /// - /// Does painting of the map. + /// Adds a marker to the map control and invalidates map. /// - /// Paint event args. - protected override void OnPaint(PaintEventArgs pe) - { - bool drawContent = true; - - if (!DesignMode) - { - if (CacheFolder == null && TileServer is IFileCacheTileServer) - { - drawContent = false; - DrawErrorString(pe.Graphics, $"{nameof(CacheFolder)} property value is not set.\nIt should be specified if you are using tile server which supports file system cache."); - } - else if (TileServer == null) - { - drawContent = false; - DrawErrorString(pe.Graphics, $"{nameof(TileServer)} property value is not set.\nPlease specify tile server instance to obtain map images before using the map control."); - } - } - // use offline maps in design mode - else - { - if (TileServer == null) - { - TileServer = new OfflineTileServer(); - } - } - - if (drawContent) - { - pe.Graphics.SmoothingMode = SmoothingMode.None; - DrawTiles(pe.Graphics); - pe.Graphics.SmoothingMode = SmoothingMode.AntiAlias; + /// Marker to add to the map. + public void AddMarker(Marker marker) + { + _BaseMarkerLayer.AddMarker(marker); + + // Markers.Add(marker); + // Invalidate(); + } - DrawPolygons(pe.Graphics); - DrawTracks(pe.Graphics); - DrawMarkers(pe.Graphics); - } - - base.OnPaint(pe); - } - /// - /// Called when control size is changed. + /// Adds a track to the map control and invalidates map. /// - /// Event args. - protected override void OnSizeChanged(EventArgs e) + /// Track to add to the map. + public void AddTrack(Track track) { - base.OnSizeChanged(e); - - _LinkLabel.Left = Width - _LinkLabel.Width; - _LinkLabel.Top = Height - _LinkLabel.Height; - - AdjustMapBounds(); + _BaseTrackLayer.AddTrack(track); + + // Tracks.Add(track); Invalidate(); - CenterChanged?.Invoke(this, EventArgs.Empty); - } - + } + /// - /// Called when mouse is down. + /// Adds a polygon to the map control and invalidates map. /// - /// Event args. - protected override void OnMouseDown(MouseEventArgs e) - { - if (e.Button == MouseButtons.Left) - { - _MouseCaptured = true; - _LastMouse.X = e.X; - _LastMouse.Y = e.Y; - } - base.OnMouseDown(e); - } - + /// Polygon to add to the map. + public void AddPolygon(Polygon polygon) + { + _BasePolygonLayer.AddPolygon(polygon); + + // Polygons.Add(polygon); + Invalidate(); + } + /// - /// Called when mouse is up. + /// Adds an ellipse to the map control and invalidates map. /// - /// Event args. - protected override void OnMouseUp(MouseEventArgs e) - { - _MouseCaptured = false; - base.OnMouseUp(e); - } - + /// Ellipse to add to the map. + public void AddEllipse(Ellipse ellipse) + { + _BaseEllipseLayer.AddEllipse(ellipse); + + // Ellipses.Add(ellipse); + Invalidate(); + } + /// - /// Called when mouse is moving. + /// Removes all layers from the map. /// - /// Event args. - protected override void OnMouseMove(MouseEventArgs e) - { - if (_MouseCaptured) - { - _Offset.X += (e.X - _LastMouse.X); - _Offset.Y += (e.Y - _LastMouse.Y); - - _Offset.X = (int)(_Offset.X % FullMapSizeInPixels); - - if (_Offset.Y < -(int)FullMapSizeInPixels) - _Offset.Y = -(int)FullMapSizeInPixels; - - if (_Offset.Y > Height) - _Offset.Y = Height; - - AdjustMapBounds(); - Invalidate(); - CenterChanged?.Invoke(this, EventArgs.Empty); - } - - _LastMouse.X = e.X; - _LastMouse.Y = e.Y; - - MouseChanged?.Invoke(this, EventArgs.Empty); - - base.OnMouseMove(e); + public void ClearLayers() + { + Layers.Clear(); + Invalidate(); } /// - /// Called when mouse is wheeling. + /// Removes all markers, tracks, polygons and ellipses from the map. /// - /// Event args. - protected override void OnMouseWheel(MouseEventArgs e) - { - int z = ZoomLevel; - - if (e.Delta >= 120) - z = ZoomLevel + 1; - else if (e.Delta <= -120) - z = ZoomLevel - 1; - - SetZoomLevel(z, new Point(e.X, e.Y)); - - AdjustMapBounds(); - base.OnMouseWheel(e); - CenterChanged?.Invoke(this, EventArgs.Empty); + public void ClearElements() + { + _BaseMarkerLayer.Clear(); + _BaseTrackLayer.Clear(); + _BasePolygonLayer.Clear(); + _BaseEllipseLayer.Clear(); + + /*Markers.Clear(); + Tracks.Clear(); + Polygons.Clear(); + Ellipses.Clear();*/ + Invalidate(); } /// - /// Adjusts map bounds if required. - /// - private void AdjustMapBounds() + /// Clears map cache. If flag is set to true, cache for all tile servers will be cleared. + /// If no, only current tile server cache will be cleared. + /// + /// If flag is set to true, cache for all tile servers will be cleared. + public void ClearCache(bool allTileServers = false) { - if (FitToBounds) + _Cache = new ConcurrentBag(); + _RequestPool = new ConcurrentBag(); + + if (TileServer != null) { - if (FullMapSizeInPixels > Height) + string cacheFolder = allTileServers ? CacheFolder : Path.Combine(CacheFolder, TileServer.GetType().Name); + if (Directory.Exists(cacheFolder)) { - if (_Offset.Y > 0) _Offset.Y = 0; - if (_Offset.Y + FullMapSizeInPixels < Height) _Offset.Y = Height - FullMapSizeInPixels; - } - else - { - if (_Offset.Y > Height - FullMapSizeInPixels) _Offset.Y = Height - FullMapSizeInPixels; - if (_Offset.Y < 0) _Offset.Y = 0; - } + if (allTileServers) + { + var subdirs = Directory.EnumerateDirectories(cacheFolder); + foreach (string dir in subdirs) + { + try + { + Directory.Delete(dir, true); + } + catch { } + } + } + else + { + try + { + Directory.Delete(cacheFolder, true); + } + catch { } + } + } } - } - + Invalidate(); + } + /// - /// Normalizes tile number to fit value from 0 to FullMapSizeInTiles. + /// Zooms map control to a certain layer. /// - /// Tile number, with fractions. - /// Tile number in range from 0 to FullMapSizeInTiles. - private float NormalizeTileNumber(float n) - { - int size = FullMapSizeInTiles; - return (n %= size) >= 0 ? n : (n + size); + /// Layer to zoom to. + public void ZoomTo(Layer layer) + { + GeoPoint[] layerBounds = MeasureLayer(layer); + + if (layerBounds != null) + { + // determine and set center + double centerLongitude = layerBounds[0].Longitude + (layerBounds[3].Longitude - layerBounds[0].Longitude) / 2.0; + double centerLatitude = layerBounds[0].Latitude + (layerBounds[3].Latitude - layerBounds[0].Latitude) / 2.0; + + Center = new GeoPoint((float)centerLongitude, (float)centerLatitude); + + // find required zoom level iteratively + ZoomLevel = 19; + while(ZoomLevel > 1) + { + bool topLeftFits = (TopLeft.Longitude <= layerBounds[0].Longitude || (_Offset.X > 0 && TopLeft.Longitude >= layerBounds[0].Longitude)) && TopLeft.Latitude >= layerBounds[0].Latitude; + bool bottomRightFits = (BottomRight.Longitude >= layerBounds[3].Longitude || (_Offset.X > 0 && BottomRight.Longitude <= layerBounds[3].Longitude)) && BottomRight.Latitude <= layerBounds[3].Latitude; + + if (topLeftFits && bottomRightFits) + { + break; + } + else + { + ZoomLevel = ZoomLevel - 1; + } + } + } + } + + #endregion + + #region Protected Override Methods + + /// + /// Called on creating control. + /// + protected override void OnCreateControl() + { + base.OnCreateControl(); + Center = new GeoPoint(0, 0); + } + + /// + /// Does painting of the map. + /// + /// Paint event args. + protected override void OnPaint(PaintEventArgs pe) + { + bool drawContent = true; + + if (!DesignMode) + { + if (CacheFolder == null && TileServer is IFileCacheTileServer) + { + drawContent = false; + DrawErrorString(pe.Graphics, $"{nameof(CacheFolder)} property value is not set.\nIt should be specified if you are using tile server which supports file system cache."); + } + else if (TileServer == null) + { + drawContent = false; + DrawErrorString(pe.Graphics, $"{nameof(TileServer)} property value is not set.\nPlease specify tile server instance to obtain map images before using the map control."); + } + } + + if (drawContent) + { + pe.Graphics.SmoothingMode = SmoothingMode.None; + DrawTiles(pe.Graphics); + pe.Graphics.SmoothingMode = SmoothingMode.AntiAlias; + + DrawLayers(pe.Graphics); + } + + base.OnPaint(pe); + } + + /// + /// Called when control size is changed. + /// + /// Event args. + protected override void OnSizeChanged(EventArgs e) + { + base.OnSizeChanged(e); + + _LinkLabel.Left = Width - _LinkLabel.Width; + _LinkLabel.Top = Height - _LinkLabel.Height; + + Center = _LastCenter; + + AdjustMapBounds(); + Invalidate(); + //CenterChanged?.Invoke(this, EventArgs.Empty); + } + + /// + /// Called when mouse is down. + /// + /// Event args. + protected override void OnMouseDown(MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + _MouseCaptured = true; + _LastMouse.X = e.X; + _LastMouse.Y = e.Y; + } + base.OnMouseDown(e); + } + + /// + /// Called when mouse is up. + /// + /// Event args. + protected override void OnMouseUp(MouseEventArgs e) + { + if (_MouseCaptured) + { + foreach (Layer layer in Layers.OrderByDescending(l => l.Level)) + { + if (_LastLayer != null && _LastLayer.Equals(layer) && layer.Clickable) + { + ElementClick?.Invoke(this, new MapControlElementEventArgs() + { + X = e.X, + Y = e.Y, + Layer = _LastLayer, + Element = _LastElement + }); + + break; + } + } + } + + _MouseCaptured = false; + base.OnMouseUp(e); + } + + /// + /// Called when mouse is moving. + /// + /// Event args. + protected override void OnMouseMove(MouseEventArgs e) + { + if (_MouseCaptured) + { + _Offset.X += (e.X - _LastMouse.X); + _Offset.Y += (e.Y - _LastMouse.Y); + + _Offset.X = (int)(_Offset.X % FullMapSizeInPixels); + + if (_Offset.Y < -(int)FullMapSizeInPixels) + _Offset.Y = -(int)FullMapSizeInPixels; + + if (_Offset.Y > Height) + _Offset.Y = Height; + + _LastCenter = Center; + + AdjustMapBounds(); + Invalidate(); + CenterChanged?.Invoke(this, EventArgs.Empty); + } + + _LastMouse.X = e.X; + _LastMouse.Y = e.Y; + + foreach(Layer layer in Layers.OrderByDescending(l => l.Level)) + { + if (layer.Visible && (layer.Hoverable || layer.Clickable)) + { + IElement touchedElement = FindTouchedElement(layer, e.X, e.Y); + + if (touchedElement != null && _LastElement == null) + { + if (layer.Hoverable) + { + ElementEnter?.Invoke(this, new MapControlElementEventArgs() + { + X = e.X, + Y = e.Y, + Layer = layer, + Element = touchedElement + }); + } + + _LastElement = touchedElement; + _LastLayer = layer; + + break; + } + else if (touchedElement == null && _LastElement != null && _LastLayer.Equals(layer)) + { + if (layer.Hoverable) + { + ElementLeave?.Invoke(this, new MapControlElementEventArgs() + { + X = e.X, + Y = e.Y, + Layer = _LastLayer, + Element = _LastElement + }); + } + + _LastElement = null; + _LastLayer = null; + } + } + } + + MouseChanged?.Invoke(this, EventArgs.Empty); + + base.OnMouseMove(e); } + /// + /// Called when mouse is wheeling. + /// + /// Event args. + protected override void OnMouseWheel(MouseEventArgs e) + { + int z = ZoomLevel; + + if (e.Delta >= 120) + z = ZoomLevel + 1; + else if (e.Delta <= -120) + z = ZoomLevel - 1; + + SetZoomLevel(z, new Point(e.X, e.Y)); + + AdjustMapBounds(); + base.OnMouseWheel(e); + CenterChanged?.Invoke(this, EventArgs.Empty); + } + + #endregion + + #region Private Draw Methods + /// /// Draws error string on the map. /// /// Graphics instance to draw on. - /// Error string to be drawn. + /// Error string to be drawn. private void DrawErrorString(Graphics gr, string text) { gr.DrawString(text, Font, new SolidBrush(ErrorColor), new Point(Width / 2, Height / 2), _AlignCenterStringFormat); - } - + } + /// /// Draws map tiles. /// - /// Graphics instance to draw on. - private void DrawTiles(Graphics g) - { - // indices of first visible tile - int fromX = (int)Math.Floor(-(float)_Offset.X / TILE_SIZE); - int fromY = (int)Math.Floor(-(float)_Offset.Y / TILE_SIZE); - - // count of visible tiles (vertically and horizontally) - int tilesByWidth = (int)Math.Ceiling((float)Width / TILE_SIZE); - int tilesByHeight = (int)Math.Ceiling((float)Height / TILE_SIZE); - - // indices of last visible tile - int toX = fromX + tilesByWidth; - int toY = fromY + tilesByHeight; - - // flush used flag for all memory-cached tiles - foreach (var c in _Cache) - { - c.Used = false; - } - - for (int x = fromX; x <= toX; x++) - { - for (int y = fromY; y <= toY; y++) - { - int x_ = (int)NormalizeTileNumber(x); - if (y >= 0 && y < FullMapSizeInTiles) - { + /// Graphics instance to draw on. + private void DrawTiles(Graphics g) + { + // indices of first visible tile + int fromX = (int)Math.Floor(-(float)_Offset.X / TILE_SIZE); + int fromY = (int)Math.Floor(-(float)_Offset.Y / TILE_SIZE); + + // count of visible tiles (vertically and horizontally) + int tilesByWidth = (int)Math.Ceiling((float)Width / TILE_SIZE); + int tilesByHeight = (int)Math.Ceiling((float)Height / TILE_SIZE); + + // indices of last visible tile + int toX = fromX + tilesByWidth; + int toY = fromY + tilesByHeight; + + // flush used flag for all memory-cached tiles + foreach (var c in _Cache) + { + c.Used = false; + } + + for (int x = fromX; x <= toX; x++) + { + for (int y = fromY; y <= toY; y++) + { + int x_ = (int)NormalizeTileNumber(x); + if (y >= 0 && y < FullMapSizeInTiles) + { Tile tile = GetTile(x_, y, ZoomLevel); // tile for current zoom and position found - if (tile != null) - { + if (tile != null) + { if (tile.Image != null) { tile.Used = true; - DrawTile(g, x, y, tile.Image); - } + DrawTile(g, x, y, tile.Image); + } else { tile.Used = true; DrawThumbnail(g, x, y, tile.ErrorMessage, true); - } - } - // tile not found, do some magic + } + } + // tile not found, do some magic else { // draw thumbnail first @@ -720,80 +972,155 @@ private void DrawTiles(Graphics g) // move up to less zoom level z++; } - } - } - } - } - - // Dispose images that were not used - _Cache.Where(c => !c.Used).ToList().ForEach(c => c.Image?.Dispose()); - - // Update cache, leave only used images - _Cache = new ConcurrentBag(_Cache.Where(c => c.Used)); - } - - /// - /// Draws markers on the map - /// - /// Graphics instance to draw on. - private void DrawMarkers(Graphics gr) - { - foreach (Marker m in Markers) - { - var p = Project(m.Point); + } + } + } + } + + // Dispose images that were not used + _Cache.Where(c => !c.Used).ToList().ForEach(c => c.Image?.Dispose()); + + // Update cache, leave only used images + _Cache = new ConcurrentBag(_Cache.Where(c => c.Used)); + } + + /// + /// Draw layers + /// + /// Graphics instance to draw on. + private void DrawLayers(Graphics gr) + { + List drawLayerList = new List(Layers).OrderBy(l => l.Level).ToList(); + + foreach (Layer layer in drawLayerList) + { + DrawSingleLayer(layer, gr); + } + } + + /// + /// Draw a single layer + /// + /// Layer to draw. + /// Graphics instance to draw on. + private void DrawSingleLayer(Layer layer, Graphics gr) + { + if (layer.Visible) + { + if (layer is LayerGroup) + { + foreach (Layer l in ((LayerGroup)layer).Layers) + { + DrawSingleLayer(l, gr); + } + } + else if (layer is MarkerLayer) + { + foreach (Marker marker in ((MarkerLayer)layer).Markers) + { + DrawSingleMarker(marker, gr); + } + } + else if (layer is TrackLayer) + { + foreach (Track track in ((TrackLayer)layer).Tracks) + { + DrawSingleTrack(track, gr); + } + } + else if (layer is PolygonLayer) + { + foreach (Polygon polygon in ((PolygonLayer)layer).Polygons) + { + DrawSinglePolygon(polygon, gr); + } + } + else if (layer is EllipseLayer) + { + foreach (Ellipse ellipse in ((EllipseLayer)layer).Ellipses) + { + DrawSingleEllipse(ellipse, gr); + } + } + } + } + + /// + /// Draw a single marker + /// + /// Marker to draw. + /// Graphics instance to draw on. + private void DrawSingleMarker(Marker marker, Graphics gr) + { + var p = Project(marker.Point); + if (p.X > -marker.Style.MarkerWidth && p.X < this.ClientSize.Width + marker.Style.MarkerWidth && p.Y > -marker.Style.MarkerWidth && p.Y < this.ClientSize.Height + marker.Style.MarkerWidth) + { Draw(gr, () => { - if (gr.IsVisible(p)) + var eventArgs = new DrawMarkerEventArgs() { - var eventArgs = new DrawMarkerEventArgs() - { - Graphics = gr, - Marker = m, - Point = p - }; + Graphics = gr, + Marker = marker, + Point = p + }; - DrawMarker?.Invoke(this, eventArgs); - if (!eventArgs.Handled) + DrawMarker?.Invoke(this, eventArgs); + if (!eventArgs.Handled) + { + if (marker.Style.MarkerImage != null) + { + gr.DrawImage(marker.Style.MarkerImage, new Rectangle((int)p.X - marker.Style.MarkerImage.Width / 2, (int)p.Y - marker.Style.MarkerImage.Height / 2, marker.Style.MarkerImage.Width, marker.Style.MarkerImage.Height)); + } + else { - if (m.Style.MarkerBrush != null) + if (marker.Style.MarkerBrush != null) { - gr.FillEllipse(m.Style.MarkerBrush, p.X - m.Style.MarkerWidth / 2, p.Y - m.Style.MarkerWidth / 2, m.Style.MarkerWidth, m.Style.MarkerWidth); + gr.FillEllipse(marker.Style.MarkerBrush, p.X - marker.Style.MarkerWidth / 2, p.Y - marker.Style.MarkerWidth / 2, marker.Style.MarkerWidth, marker.Style.MarkerWidth); } - if (m.Style.MarkerPen != null) + if (marker.Style.MarkerPen != null) { - gr.DrawEllipse(m.Style.MarkerPen, p.X - m.Style.MarkerWidth / 2, p.Y - m.Style.MarkerWidth / 2, m.Style.MarkerWidth, m.Style.MarkerWidth); + gr.DrawEllipse(marker.Style.MarkerPen, p.X - marker.Style.MarkerWidth / 2, p.Y - marker.Style.MarkerWidth / 2, marker.Style.MarkerWidth, marker.Style.MarkerWidth); } - if (m.Style.LabelFont != null && m.Style.LabelBrush != null && m.Style.LabelFormat != null) + if (marker.Style.LabelFont != null && marker.Style.LabelBrush != null && marker.Style.LabelFormat != null) { - gr.DrawString(m.Label, m.Style.LabelFont, m.Style.LabelBrush, new PointF(p.X + m.Style.MarkerWidth * 0.35f, p.Y + m.Style.MarkerWidth * 0.35f), m.Style.LabelFormat); + gr.DrawString(marker.Label, marker.Style.LabelFont, marker.Style.LabelBrush, new PointF(p.X, p.Y + 5), new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Near }); } } } - }); - } + }); + } } /// - /// Draws tracks on the map + /// Draw a single track /// - /// Graphics instance to draw on. - private void DrawTracks(Graphics gr) - { - foreach (var track in Tracks) + /// Track to draw. + /// Graphics instance to draw on. + private void DrawSingleTrack(Track track, Graphics gr) + { + PointF[] points = new PointF[track.Count]; + bool atLeastOnePointVisible = false; + + for (int i = 0; i < track.Count; i++) { - PointF[] points = new PointF[track.Count]; + GeoPoint g = track.ElementAt(i); + PointF p = Project(g); - for (int i = 0; i < track.Count; i++) + if (atLeastOnePointVisible || (p.X > 0 && p.X < this.ClientSize.Width && p.Y > 0 && p.Y < this.ClientSize.Height)) { - GeoPoint g = track.ElementAt(i); - PointF p = Project(g); - if (i > 0) - { - p = points[i - 1].Nearest(p, new PointF(p.X - FullMapSizeInPixels, p.Y), new PointF(p.X + FullMapSizeInPixels, p.Y)); - } - points[i] = p; + atLeastOnePointVisible = true; } + if (i > 0) + { + p = points[i - 1].Nearest(p, new PointF(p.X - FullMapSizeInPixels, p.Y), new PointF(p.X + FullMapSizeInPixels, p.Y)); + } + + points[i] = p; + } + + if (atLeastOnePointVisible) + { var eventArgs = new DrawTrackEventArgs() { Graphics = gr, @@ -815,37 +1142,81 @@ private void DrawTracks(Graphics gr) { Draw(gr, () => gr.DrawPolyline(track.Style.Pen, points)); } + + if (track.Style.DirectionIndicatorPen != null && ZoomLevel >= track.Style.DirectionIndicatorMinimumZoomLevel) + { + float directionIndicatorSize = track.Style.DirectionIndicatorPen.Width; + for (int a = 0; a < points.Length - 1; a++) + { + PointF pointA = points[a]; + PointF pointB = points[a + 1]; + + if (pointA.X != pointB.X || pointA.Y != pointB.Y) + { + PointF directionIndicatorCenter = new PointF( + (pointB.X + pointA.X) / 2.0f, + (pointB.Y + pointA.Y) / 2.0f + ); + + float directionIndicatorAngle = (float)(Math.Atan2(pointA.Y - pointB.Y, pointA.X - pointB.X) * 180.0 / Math.PI) - 180.0f; + + Draw(gr, () => + { + gr.TranslateTransform(directionIndicatorCenter.X, directionIndicatorCenter.Y); + gr.RotateTransform(directionIndicatorAngle); + gr.TranslateTransform(-directionIndicatorCenter.X, -directionIndicatorCenter.Y); + + gr.FillPolygon(new SolidBrush(track.Style.DirectionIndicatorPen.Color), new PointF[] + { + new PointF(directionIndicatorCenter.X, directionIndicatorCenter.Y + directionIndicatorSize), + new PointF(directionIndicatorCenter.X + directionIndicatorSize * 2.5f, directionIndicatorCenter.Y), + new PointF(directionIndicatorCenter.X, directionIndicatorCenter.Y - directionIndicatorSize) + }); + + gr.ResetTransform(); + }); + } + } + } } - } + } } /// - /// Draws polygons on the map + /// Draw a single polygon. /// - /// Graphics instance to draw on. - private void DrawPolygons(Graphics gr) - { - foreach (var polygon in Polygons) + /// Polygon to draw. + /// Graphics instance to draw on. + private void DrawSinglePolygon(Polygon polygon, Graphics gr) + { + PointF p0 = PointF.Empty; + using (GraphicsPath gp = new GraphicsPath()) { - PointF p0 = PointF.Empty; - using (GraphicsPath gp = new GraphicsPath()) + bool atLeastOnePointVisible = false; + + gp.StartFigure(); + for (int i = 0; i < polygon.Count; i++) { - gp.StartFigure(); - for (int i = 0; i < polygon.Count; i++) + GeoPoint g = polygon.ElementAt(i); + PointF p = Project(g); + + if (atLeastOnePointVisible || (p.X > 0 && p.X < this.ClientSize.Width && p.Y > 0 && p.Y < this.ClientSize.Height)) { - GeoPoint g = polygon.ElementAt(i); - PointF p = Project(g); - if (i > 0) - { - p = p0.Nearest(p, new PointF(p.X - FullMapSizeInPixels, p.Y), new PointF(p.X + FullMapSizeInPixels, p.Y)); - gp.AddLine(p0, p); - } + atLeastOnePointVisible = true; + } - p0 = p; + if (i > 0) + { + p = p0.Nearest(p, new PointF(p.X - FullMapSizeInPixels, p.Y), new PointF(p.X + FullMapSizeInPixels, p.Y)); + gp.AddLine(p0, p); } - gp.CloseFigure(); + p0 = p; + } + gp.CloseFigure(); + if (atLeastOnePointVisible) + { var eventArgs = new DrawPolygonEventArgs() { Graphics = gr, @@ -874,9 +1245,68 @@ private void DrawPolygons(Graphics gr) { Draw(gr, () => gr.DrawGraphicsPath(gp, polygon.Style.Brush, polygon.Style.Pen)); } - } - } - } + } + } + } + } + + /// + /// Draw a single ellipse. + /// + /// Ellipse to draw. + /// Graphics instance to draw on. + private void DrawSingleEllipse(Ellipse ellipse, Graphics gr) + { + var p = Project(ellipse.Point); + + float ellipseWidth = 0.0f; + float ellipseHeight = 0.0f; + + if (ellipse.Style.EllipseUnit == EllipseStyle.Unit.PIXELS) + { + ellipseWidth = ellipse.Style.EllipseWidth; + ellipseHeight = ellipse.Style.EllipseHeight; + } + else if (ellipse.Style.EllipseUnit == EllipseStyle.Unit.METERS) + { + double pixelPerMeter = MetersToPixels(ellipse.Point.Latitude, ZoomLevel); + + ellipseWidth = (float)(ellipse.Style.EllipseWidth / pixelPerMeter); + ellipseHeight = (float)(ellipse.Style.EllipseHeight / pixelPerMeter); + } + else if (ellipse.Style.EllipseUnit == EllipseStyle.Unit.YARDS) + { + double pixelPerYard = YardsToPixels(ellipse.Point.Latitude, ZoomLevel); + + ellipseWidth = (float)(ellipse.Style.EllipseWidth / pixelPerYard); + ellipseHeight = (float)(ellipse.Style.EllipseHeight / pixelPerYard); + } + + if (p.X > -ellipseWidth && p.X < this.ClientSize.Width + ellipseWidth && p.Y > -ellipseHeight && p.Y < this.ClientSize.Height + ellipseHeight) + { + Draw(gr, () => + { + var eventArgs = new DrawEllipseEventArgs() + { + Graphics = gr, + Ellipse = ellipse, + Point = p + }; + + DrawEllipse?.Invoke(this, eventArgs); + if (!eventArgs.Handled) + { + if (ellipse.Style.EllipseBrush != null) + { + gr.FillEllipse(ellipse.Style.EllipseBrush, p.X - ellipseWidth / 2, p.Y - ellipseHeight / 2, ellipseWidth, ellipseHeight); + } + if (ellipse.Style.EllipsePen != null) + { + gr.DrawEllipse(ellipse.Style.EllipsePen, p.X - ellipseWidth / 2, p.Y - ellipseHeight / 2, ellipseWidth, ellipseHeight); + } + } + }); + } } /// @@ -890,7 +1320,7 @@ private void DrawPolygons(Graphics gr) /// Y-index of a tile portion to be drawn. /// Portion of a tile to be drawn, 2 means 1/2, 4 means 1/4 etc. /// Full tile image. - private void DrawTilePart(Graphics gr, int x, int y, int xRemainder, int yRemainder, int frac, Image image) + private void DrawTilePart(Graphics gr, int x, int y, int xRemainder, int yRemainder, int frac, Image image) { // coordinates of a tile on the map Point p = new Point(); @@ -903,98 +1333,210 @@ private void DrawTilePart(Graphics gr, int x, int y, int xRemainder, int yRemain // Destination rectangle Rectangle destRect = new Rectangle(p.X - frac, p.Y - frac, TILE_SIZE + 2 * frac, TILE_SIZE + 2 * frac); - var state = gr.Save(); + var state = gr.Save(); gr.SmoothingMode = SmoothingMode.HighSpeed; gr.InterpolationMode = InterpolationMode.NearestNeighbor; gr.PixelOffsetMode = PixelOffsetMode.HighSpeed; gr.CompositingQuality = CompositingQuality.HighSpeed; gr.DrawImage(image, destRect, srcRect.X, srcRect.Y, srcRect.Width, srcRect.Height, GraphicsUnit.Pixel, TileImageAttributes); - gr.Restore(state); - } - + gr.Restore(state); + } + /// /// Draws a tile on the map. /// /// Graphics instance to draw on. /// X-index of the tile. /// Y-index of the tile. - /// Tile image. - private void DrawTile(Graphics gr, int x, int y, Image image) - { - Point p = new Point(); - p.X = _Offset.X + x * TILE_SIZE; - p.Y = _Offset.Y + y * TILE_SIZE; + /// Tile image. + private void DrawTile(Graphics gr, int x, int y, Image image) + { + Point p = new Point(); + p.X = _Offset.X + x * TILE_SIZE; + p.Y = _Offset.Y + y * TILE_SIZE; + + gr.DrawImage(image, new Rectangle(p, new Drawing.Size(TILE_SIZE, TILE_SIZE)), 0, 0, TILE_SIZE, TILE_SIZE, GraphicsUnit.Pixel, TileImageAttributes); + } + + /// + /// Draws thumbnail frame and text instead of a tile. + /// + /// Graphics instance to draw on. + /// X-index of the tile. + /// Y-index of the tile. + /// Message to be displayed instead of the tile. + /// Flag indicating the message should be displayed with error color. + private void DrawThumbnail(Graphics gr, int x, int y, string message, bool isError) + { + if (ShowThumbnails || isError) + { + Point p = new Point(); + p.X = _Offset.X + x * TILE_SIZE; + p.Y = _Offset.Y + y * TILE_SIZE; + Rectangle rectangle = new Rectangle(p.X, p.Y, TILE_SIZE, TILE_SIZE); + gr.FillRectangle(new SolidBrush(ThumbnailBackColor), rectangle); + gr.DrawRectangle(new Pen(ThumbnailForeColor) { DashStyle = DashStyle.Dot }, rectangle); + gr.DrawString(message, Font, new SolidBrush(isError ? ErrorColor : ThumbnailForeColor), rectangle, _AlignCenterStringFormat); + } + } + + /// + /// Does the draw action. + /// The method is needed for repeating drawing because map is infinite in longitude. + /// + /// Graphics instance to draw on. + /// Draw action to perform several times for all visible width of the map. + private void Draw(Graphics gr, Action draw) + { + int count = (int)Math.Ceiling((double)Width / FullMapSizeInPixels) + 1; + for (int i = -count; i < count; i++) + { + var state = gr.Save(); + gr.TranslateTransform(i * FullMapSizeInPixels, 0); + draw(); + gr.Restore(state); + } + } + + #endregion + + #region Private Mapping Methods + + /// + /// Normalizes tile number to fit value from 0 to FullMapSizeInTiles. + /// + /// Tile number, with fractions. + /// Tile number in range from 0 to FullMapSizeInTiles. + private float NormalizeTileNumber(float n) + { + int size = FullMapSizeInTiles; + return (n %= size) >= 0 ? n : (n + size); + } + + /// + /// Returns the number of pixels per meter according to the reference latitude and zoom level. + /// + /// Latitude for which the distance should be calculated + /// Current zoomlevel + /// Number of pixels representing one meter. + public double MetersToPixels(double latitude, int zoomLevel) + { + var earthCircumference = 40075016.69; + var worldSize = TILE_SIZE * Math.Pow(2, zoomLevel); + + var latitudeRadians = latitude * (Math.PI / 180); + + return earthCircumference * Math.Cos(latitudeRadians) / worldSize; + } + + /// + /// Returns the number of pixels per yard according to the reference latitude and zoom level. + /// + /// Latitude for which the distance should be calculated + /// Current zoomlevel + /// Number of pixels representing one yard. + public double YardsToPixels(double latitude, int zoomLevel) + { + var earthCircumference = 52626768; + var worldSize = TILE_SIZE * Math.Pow(2, zoomLevel); + + var latitudeRadians = latitude * (Math.PI / 180); + + return earthCircumference * Math.Cos(latitudeRadians) / worldSize; + } + + /// + /// Gets projection of geographical coordinates onto the map. + /// + /// Point with geographical coordinates. + /// object representing projection of the specified geographical coordinates on the map. + public PointF Project(GeoPoint g) + { + var p = WorldToTilePos(g); + return new PointF(p.X * TILE_SIZE + _Offset.X, p.Y * TILE_SIZE + _Offset.Y); + } + + /// + /// Converts geographical coordinates to tile indices with fractions. + /// + /// Point with geographical coordinates. + /// Point representing X/Y indices of the specified geographical coordinates in Slippy map scheme. + public PointF WorldToTilePos(GeoPoint g) + { + PointF p = new Point(); + p.X = (float)((g.Longitude + 180.0) / 360.0 * (1 << ZoomLevel)); + p.Y = (float)((1.0 - Math.Log(Math.Tan(g.Latitude * Math.PI / 180.0) + + 1.0 / Math.Cos(g.Latitude * Math.PI / 180.0)) / Math.PI) / 2.0 * (1 << ZoomLevel)); + + return p; + } - gr.DrawImage(image, new Rectangle(p, new Drawing.Size(TILE_SIZE, TILE_SIZE)), 0, 0, TILE_SIZE, TILE_SIZE, GraphicsUnit.Pixel, TileImageAttributes); - } - /// - /// Draws thumbnail frame and text instead of a tile. + /// Converts tile indices to geographical coordinates. /// - /// Graphics instance to draw on. /// X-index of the tile. /// Y-index of the tile. - /// Message to be displayed instead of the tile. - /// Flag indicating the message should be displayed with error color. - private void DrawThumbnail(Graphics gr, int x, int y, string message, bool isError) + /// Point representing geographical coordinates. + public GeoPoint TileToWorldPos(double x, double y) { - if (ShowThumbnails || isError) - { - Point p = new Point(); - p.X = _Offset.X + x * TILE_SIZE; - p.Y = _Offset.Y + y * TILE_SIZE; - Rectangle rectangle = new Rectangle(p.X, p.Y, TILE_SIZE, TILE_SIZE); - gr.FillRectangle(new SolidBrush(ThumbnailBackColor), rectangle); - gr.DrawRectangle(new Pen(ThumbnailForeColor) { DashStyle = DashStyle.Dot }, rectangle); - gr.DrawString(message, Font, new SolidBrush(isError ? ErrorColor : ThumbnailForeColor), rectangle, _AlignCenterStringFormat); - } + GeoPoint g = new GeoPoint(); + double n = Math.PI - ((2.0 * Math.PI * y) / Math.Pow(2.0, ZoomLevel)); + g.Longitude = (float)((x / Math.Pow(2.0, ZoomLevel) * 360.0) - 180.0); + g.Latitude = (float)(180.0 / Math.PI * Math.Atan(Math.Sinh(n))); + return g; } + #endregion + + #region Private Support Methods + /// - /// Does the draw action. - /// The method is needed for repeating drawing because map is infinite in longitude. + /// Adjusts map bounds if required. /// - /// Graphics instance to draw on. - /// Draw action to perform several times for all visible width of the map. - private void Draw(Graphics gr, Action draw) + private void AdjustMapBounds() { - int count = (int)Math.Ceiling((double)Width / FullMapSizeInPixels) + 1; - for (int i = -count; i < count; i++) + if (FitToBounds) { - var state = gr.Save(); - gr.TranslateTransform(i * FullMapSizeInPixels, 0); - draw(); - gr.Restore(state); + if (FullMapSizeInPixels > Height) + { + if (_Offset.Y > 0) _Offset.Y = 0; + if (_Offset.Y + FullMapSizeInPixels < Height) _Offset.Y = Height - FullMapSizeInPixels; + } + else + { + if (_Offset.Y > Height - FullMapSizeInPixels) _Offset.Y = Height - FullMapSizeInPixels; + if (_Offset.Y < 0) _Offset.Y = 0; + } } - } - + } + /// /// Sets zoom level with specifying central point to zoom in/out. /// /// Zoom level to be set. - /// Central point to zoom in/out. + /// Central point to zoom in/out. private void SetZoomLevel(int z, Point p) { int max = TileServer != null ? Math.Min(MaxZoomLevel, TileServer.MaxZoomLevel) : MaxZoomLevel; - int min = TileServer != null ? Math.Max(MinZoomLevel, TileServer.MinZoomLevel) : MinZoomLevel; - - if (z < min) z = min; - if (z > max) z = max; - - if (z != ZoomLevel) - { - double factor = Math.Pow(2, z - ZoomLevel); - _Offset.X = (int)((_Offset.X - p.X) * factor) + p.X; - _Offset.Y = (int)((_Offset.Y - p.Y) * factor) + p.Y; - - _ZoomLevel = z; - - _Offset.X = (int)(_Offset.X % FullMapSizeInPixels); - - Invalidate(); + int min = TileServer != null ? Math.Max(MinZoomLevel, TileServer.MinZoomLevel) : MinZoomLevel; + + if (z < min) z = min; + if (z > max) z = max; + + if (z != ZoomLevel) + { + double factor = Math.Pow(2, z - ZoomLevel); + _Offset.X = (int)((_Offset.X - p.X) * factor) + p.X; + _Offset.Y = (int)((_Offset.Y - p.Y) * factor) + p.Y; + + _ZoomLevel = z; + + _Offset.X = (int)(_Offset.X % FullMapSizeInPixels); + + Invalidate(); } - } - + } + /// /// Gets tile image by X and Y indices and zoom level. /// @@ -1002,18 +1544,18 @@ private void SetZoomLevel(int z, Point p) /// Y-index of the tile. /// Zoom level. /// Flag indicating the tile can be fetched from cache only (server request is not allowed). - /// instance. - private Tile GetTile(int x, int y, int z, bool fromCacheOnly = false) - { - try - { - Tile tile; - - // try to get tile from memory cache - tile = _Cache.FirstOrDefault(t => t.X == x && t.Y == y && t.Z == z && t.TileServer == TileServer.GetType().Name); - if (tile != null) - { - return tile; + /// instance. + private Tile GetTile(int x, int y, int z, bool fromCacheOnly = false) + { + try + { + Tile tile; + + // try to get tile from memory cache + tile = _Cache.FirstOrDefault(t => t.X == x && t.Y == y && t.Z == z && t.TileServer == TileServer.GetType().Name); + if (tile != null) + { + return tile; } // try to get tile from file system @@ -1032,19 +1574,19 @@ private Tile GetTile(int x, int y, int z, bool fromCacheOnly = false) } } } - - // get tile from the server - if (!fromCacheOnly) - { - RequestTile(x, y, z); + + // get tile from the server + if (!fromCacheOnly) + { + RequestTile(x, y, z); } - return null; - } - catch - { - return null; - } + return null; + } + catch + { + return null; + } } /// @@ -1076,13 +1618,13 @@ private void RequestTile(int x, int y, int z) /// Processes tiles requests if requests pool is not empty, /// than stops execution until the pool gets a new image request. /// Breaks execution on disposing. - /// - private void ProcessRequests() - { - while (!IsDisposed) - { - if (_RequestPool.TryPeek(out Tile tile)) - { + /// + private void ProcessRequests() + { + while (!IsDisposed) + { + if (_RequestPool.TryPeek(out Tile tile)) + { try { // ignore pooled items with different zoom level and another tile server @@ -1095,8 +1637,8 @@ private void ProcessRequests() catch (Exception ex) { // keep error text to be displayed instead of the tile - tile.ErrorMessage = ex.Message; - } + tile.ErrorMessage = ex.Message; + } finally { // if we have obtained image from the server, save it in file system (if server supports file system cache) @@ -1122,108 +1664,354 @@ private void ProcessRequests() // remove the tile from requests pool _RequestPool.TryTake(out tile); - + // redraw the map Invalidate(); - } - } - else - { - _WorkerWaitHandle.WaitOne(); - } - }; - } - - /// - /// Gets projection of geographical coordinates onto the map. - /// - /// Point with geographical coordinates. - /// object representing projection of the specified geographical coordinates on the map. - public PointF Project(GeoPoint g) - { - var p = WorldToTilePos(g); - return new PointF(p.X * TILE_SIZE + _Offset.X, p.Y * TILE_SIZE + _Offset.Y); + } + } + else + { + _WorkerWaitHandle.WaitOne(); + } + }; } /// - /// Converts geographical coordinates to tile indices with fractions. - /// - /// Point with geographical coordinates. - /// Point representing X/Y indices of the specified geographical coordinates in Slippy map scheme. - public PointF WorldToTilePos(GeoPoint g) - { - PointF p = new Point(); - p.X = (float)((g.Longitude + 180.0) / 360.0 * (1 << ZoomLevel)); - p.Y = (float)((1.0 - Math.Log(Math.Tan(g.Latitude * Math.PI / 180.0) + - 1.0 / Math.Cos(g.Latitude * Math.PI / 180.0)) / Math.PI) / 2.0 * (1 << ZoomLevel)); - - return p; - } - - /// - /// Converts tile indices to geographical coordinates. + /// Returns the bounds of a layer. /// - /// X-index of the tile. - /// Y-index of the tile. - /// Point representing geographical coordinates. - public GeoPoint TileToWorldPos(double x, double y) - { - GeoPoint g = new GeoPoint(); - double n = Math.PI - ((2.0 * Math.PI * y) / Math.Pow(2.0, ZoomLevel)); - g.Longitude = (float)((x / Math.Pow(2.0, ZoomLevel) * 360.0) - 180.0); - g.Latitude = (float)(180.0 / Math.PI * Math.Atan(Math.Sinh(n))); - return g; - } - + /// Layer to measure. + /// Bounds of a layer, null if layer doesn't contain objects. + private GeoPoint[] MeasureLayer(Layer layer) + { + GeoPoint[] resultPoints = null; + + double lowestLongitude = 180.0; + double highestLongitude = -180.0; + double lowestLatitude = 90.0; + double highestLatitude = -90.0; + + bool layerContainsObjects = false; + + if (layer is LayerGroup) + { + foreach(Layer l in ((LayerGroup)layer).Layers) + { + GeoPoint[] layerBounds = MeasureLayer(l); + + if (layerBounds != null) + { + if (layerBounds[0].Longitude < lowestLongitude) + { + lowestLongitude = layerBounds[0].Longitude; + } + + if (layerBounds[3].Longitude > highestLongitude) + { + highestLongitude = layerBounds[1].Longitude; + } + + if (layerBounds[3].Latitude < lowestLatitude) + { + lowestLatitude = layerBounds[3].Latitude; + } + + if (layerBounds[0].Latitude > highestLatitude) + { + highestLatitude = layerBounds[0].Latitude; + } + + layerContainsObjects = true; + } + } + } + else if (layer is MarkerLayer) + { + foreach (Marker marker in ((MarkerLayer)layer).Markers) + { + if (marker.Point.Longitude < lowestLongitude) + { + lowestLongitude = marker.Point.Longitude; + } + + if (marker.Point.Longitude > highestLongitude) + { + highestLongitude = marker.Point.Longitude; + } + + if (marker.Point.Latitude < lowestLatitude) + { + lowestLatitude = marker.Point.Latitude; + } + + if (marker.Point.Latitude > highestLatitude) + { + highestLatitude = marker.Point.Latitude; + } + + layerContainsObjects = true; + } + } + else if (layer is TrackLayer) + { + foreach (Track track in ((TrackLayer)layer).Tracks) + { + foreach (GeoPoint point in track) + { + if (point.Longitude < lowestLongitude) + { + lowestLongitude = point.Longitude; + } + + if (point.Longitude > highestLongitude) + { + highestLongitude = point.Longitude; + } + + if (point.Latitude < lowestLatitude) + { + lowestLatitude = point.Latitude; + } + + if (point.Latitude > highestLatitude) + { + highestLatitude = point.Latitude; + } + + layerContainsObjects = true; + } + } + } + else if (layer is PolygonLayer) + { + foreach (Polygon polygon in ((PolygonLayer)layer).Polygons) + { + foreach (GeoPoint point in polygon) + { + if (point.Longitude < lowestLongitude) + { + lowestLongitude = point.Longitude; + } + + if (point.Longitude > highestLongitude) + { + highestLongitude = point.Longitude; + } + + if (point.Latitude < lowestLatitude) + { + lowestLatitude = point.Latitude; + } + + if (point.Latitude > highestLatitude) + { + highestLatitude = point.Latitude; + } + + layerContainsObjects = true; + } + } + } + else if (layer is EllipseLayer) + { + foreach (Ellipse ellipse in ((EllipseLayer)layer).Ellipses) + { + if (ellipse.Point.Longitude < lowestLongitude) + { + lowestLongitude = ellipse.Point.Longitude; + } + + if (ellipse.Point.Longitude > highestLongitude) + { + highestLongitude = ellipse.Point.Longitude; + } + + if (ellipse.Point.Latitude < lowestLatitude) + { + lowestLatitude = ellipse.Point.Latitude; + } + + if (ellipse.Point.Latitude > highestLatitude) + { + highestLatitude = ellipse.Point.Latitude; + } + + layerContainsObjects = true; + } + } + + if (layerContainsObjects) + { + resultPoints = new GeoPoint[4]; + + resultPoints[0] = new GeoPoint((float)lowestLongitude, (float)highestLatitude); // TOP LEFT + resultPoints[1] = new GeoPoint((float)highestLongitude, (float)highestLatitude); // TOP RIGHT + resultPoints[2] = new GeoPoint((float)lowestLongitude, (float)lowestLatitude); // BOTTOM LEFT + resultPoints[3] = new GeoPoint((float)highestLongitude, (float)lowestLatitude); // BOTTOM RIGHT + } + + return resultPoints; + } + /// - /// Clears map cache. If flag is set to true, cache for all tile servers will be cleared. - /// If no, only current tile server cache will be cleared. + /// Iterates over all elements in layers and returns the first matching element of the top most layer. /// - /// If flag is set to true, cache for all tile servers will be cleared. - public void ClearCache(bool allTileServers = false) - { - _Cache = new ConcurrentBag(); - _RequestPool = new ConcurrentBag(); - - if (TileServer != null) - { - string cacheFolder = allTileServers ? CacheFolder : Path.Combine(CacheFolder, TileServer.GetType().Name); - if (Directory.Exists(cacheFolder)) - { - if (allTileServers) + /// Cursor positon + /// The first matching element, null if there was no element found + private IElement FindTouchedElement(Layer layer, double x, double y) + { + PointF screenPoint = new PointF((float) x, (float) y); + + if (layer is LayerGroup) + { + foreach (Layer l in ((LayerGroup)layer).Layers.OrderByDescending(l => l.Level)) + { + IElement touchedElement = FindTouchedElement(l, x, y); + + if (touchedElement != null) { - var subdirs = Directory.EnumerateDirectories(cacheFolder); - foreach (string dir in subdirs) + return touchedElement; + } + } + } + else if (layer is MarkerLayer) + { + foreach (Marker marker in ((MarkerLayer)layer).Markers) + { + PointF point = Project(marker.Point); + double distance = Math.Sqrt(Math.Pow(point.X - screenPoint.X, 2) + Math.Pow(point.Y - screenPoint.Y, 2)); + + if (distance <= marker.Style.MarkerWidth / 2) + { + return marker; + } + } + } + else if (layer is TrackLayer) + { + foreach (Track track in ((TrackLayer)layer).Tracks) + { + foreach(GeoPoint trackPoint in track) + { + PointF point = Project(trackPoint); + double distance = Math.Sqrt(Math.Pow(point.X - screenPoint.X, 2) + Math.Pow(point.Y - screenPoint.Y, 2)); + + if (distance <= 5) { - try - { - Directory.Delete(dir, true); - } - catch { } + return track; } - } - else + } + + } + } + else if (layer is PolygonLayer) + { + foreach (Polygon polygon in ((PolygonLayer)layer).Polygons) + { + // find outer bounds of the polygon + double minX = polygon[0].Latitude; + double maxX = polygon[0].Latitude; + double minY = polygon[0].Longitude; + double maxY = polygon[0].Longitude; + for (int i = 1; i < polygon.Count; i++) { - try + PointF q = Project(polygon[i]); + minX = Math.Min(q.X, minX); + maxX = Math.Max(q.X, maxX); + minY = Math.Min(q.Y, minY); + maxY = Math.Max(q.Y, maxY); + } + + // if screen point is outside these bounds, it cannot be in polygon + // -> continue with next one + if (screenPoint.X < minX || screenPoint.X > maxX || screenPoint.Y < minY || screenPoint.Y > maxY) + { + continue; + } + + // check whether screen point is in the area drawn by the polygon + bool inside = false; + for (int i = 0, j = polygon.Count - 1; i < polygon.Count; j = i++) + { + PointF pointI = Project(polygon[i]); + PointF pointJ = Project(polygon[j]); + + if ((pointI.Y > screenPoint.Y) != (pointJ.Y > screenPoint.Y) && screenPoint.X < (pointJ.X - pointI.X) * (screenPoint.Y - pointI.Y) / (pointJ.Y - pointI.Y) + pointI.X) { - Directory.Delete(cacheFolder, true); + inside = !inside; + } + } + + // if inside == true -> screen point is in polygon + if (inside) + { + return polygon; + } + } + } + else if (layer is EllipseLayer) + { + foreach (Ellipse ellipse in ((EllipseLayer)layer).Ellipses) + { + PointF ellipsePoint = Project(ellipse.Point); + float ellipseWidth = 0.0f; + float ellipseHeight = 0.0f; + + if (ellipse.Style.EllipseUnit == EllipseStyle.Unit.PIXELS) + { + ellipseWidth = ellipse.Style.EllipseWidth; + ellipseHeight = ellipse.Style.EllipseHeight; + } + else if (ellipse.Style.EllipseUnit == EllipseStyle.Unit.METERS) + { + double pixelPerMeter = MetersToPixels(ellipse.Point.Latitude, ZoomLevel); + + ellipseWidth = (float)(ellipse.Style.EllipseWidth / pixelPerMeter); + ellipseHeight = (float)(ellipse.Style.EllipseHeight / pixelPerMeter); + } + else if (ellipse.Style.EllipseUnit == EllipseStyle.Unit.YARDS) + { + double pixelPerYard = YardsToPixels(ellipse.Point.Latitude, ZoomLevel); + + ellipseWidth = (float)(ellipse.Style.EllipseWidth / pixelPerYard); + ellipseHeight = (float)(ellipse.Style.EllipseHeight / pixelPerYard); + } + + if (ellipseWidth >= 2 && ellipseHeight >= 2) + { + double inside = (Math.Pow(screenPoint.X - ellipsePoint.X, 2) / + Math.Pow(ellipseWidth / 2, 2)) + + (Math.Pow(screenPoint.Y - ellipsePoint.Y, 2) / + Math.Pow(ellipseHeight / 2, 2)); + + if (inside <= 1) + { + return ellipse; } - catch { } - } - } - } - Invalidate(); - } - - /// - /// Removes all markers, tracks and polygons from the map. - /// - public void ClearAll() + } + } + } + + return null; + } + + /// + /// Handles event when a property of a layer is changed. + /// + /// Layer which raised the event. + /// Event arguments. + private void LayerPropertyChanged(object sender, EventArgs args) { - Markers.Clear(); - Tracks.Clear(); - Polygons.Clear(); Invalidate(); } - } -} + + /// + /// Handles clicks on LinkLabel links + /// + private void _LinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + Process.Start(e.Link.LinkData.ToString()); + } + + #endregion + } +} diff --git a/MapControl/MapControl.csproj b/MapControl/MapControl.csproj index a53f92f..21442d7 100644 --- a/MapControl/MapControl.csproj +++ b/MapControl/MapControl.csproj @@ -1,16 +1,16 @@  - net451 - 1.1.0 + net48 + 1.2.4.0 System.Windows.Forms.MapControl - Map control for WindowsForms - © Alexander Krutov 2020-2021 + + true System.Windows.Forms.MapControl Map control for WindowsForms WinFormsMapControl - Alexander Krutov - Alexander Krutov + Alexander Krutov; Sebastian Knopf + MIT https://github.com/AlexanderKrutov/WinFormsMapControl https://github.com/AlexanderKrutov/WinFormsMapControl.git @@ -19,14 +19,14 @@ System.Windows.Forms.MapControl System.Windows.Forms true + 1.2.4.0 + 1.2.4.0 System.Windows.Forms.MapControl.xml - - - - + + diff --git a/MapControl/OfflineMaps/0/0/0.jpg b/MapControl/OfflineMaps/0/0/0.jpg deleted file mode 100644 index 078cdc3..0000000 Binary files a/MapControl/OfflineMaps/0/0/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/1/0/0.jpg b/MapControl/OfflineMaps/1/0/0.jpg deleted file mode 100644 index 15a45ff..0000000 Binary files a/MapControl/OfflineMaps/1/0/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/1/0/1.jpg b/MapControl/OfflineMaps/1/0/1.jpg deleted file mode 100644 index 228c997..0000000 Binary files a/MapControl/OfflineMaps/1/0/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/1/1/0.jpg b/MapControl/OfflineMaps/1/1/0.jpg deleted file mode 100644 index 58edf44..0000000 Binary files a/MapControl/OfflineMaps/1/1/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/1/1/1.jpg b/MapControl/OfflineMaps/1/1/1.jpg deleted file mode 100644 index fa3e82b..0000000 Binary files a/MapControl/OfflineMaps/1/1/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/0/0.jpg b/MapControl/OfflineMaps/2/0/0.jpg deleted file mode 100644 index 385c7f7..0000000 Binary files a/MapControl/OfflineMaps/2/0/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/0/1.jpg b/MapControl/OfflineMaps/2/0/1.jpg deleted file mode 100644 index 6eec393..0000000 Binary files a/MapControl/OfflineMaps/2/0/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/0/2.jpg b/MapControl/OfflineMaps/2/0/2.jpg deleted file mode 100644 index aae9ddc..0000000 Binary files a/MapControl/OfflineMaps/2/0/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/0/3.jpg b/MapControl/OfflineMaps/2/0/3.jpg deleted file mode 100644 index cd2659f..0000000 Binary files a/MapControl/OfflineMaps/2/0/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/1/0.jpg b/MapControl/OfflineMaps/2/1/0.jpg deleted file mode 100644 index 28e63d6..0000000 Binary files a/MapControl/OfflineMaps/2/1/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/1/1.jpg b/MapControl/OfflineMaps/2/1/1.jpg deleted file mode 100644 index e7e706a..0000000 Binary files a/MapControl/OfflineMaps/2/1/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/1/2.jpg b/MapControl/OfflineMaps/2/1/2.jpg deleted file mode 100644 index 4d3198b..0000000 Binary files a/MapControl/OfflineMaps/2/1/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/1/3.jpg b/MapControl/OfflineMaps/2/1/3.jpg deleted file mode 100644 index bef4221..0000000 Binary files a/MapControl/OfflineMaps/2/1/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/2/0.jpg b/MapControl/OfflineMaps/2/2/0.jpg deleted file mode 100644 index 4af2fd1..0000000 Binary files a/MapControl/OfflineMaps/2/2/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/2/1.jpg b/MapControl/OfflineMaps/2/2/1.jpg deleted file mode 100644 index e1d16f5..0000000 Binary files a/MapControl/OfflineMaps/2/2/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/2/2.jpg b/MapControl/OfflineMaps/2/2/2.jpg deleted file mode 100644 index e63435b..0000000 Binary files a/MapControl/OfflineMaps/2/2/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/2/3.jpg b/MapControl/OfflineMaps/2/2/3.jpg deleted file mode 100644 index e7b7bf9..0000000 Binary files a/MapControl/OfflineMaps/2/2/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/3/0.jpg b/MapControl/OfflineMaps/2/3/0.jpg deleted file mode 100644 index 642907e..0000000 Binary files a/MapControl/OfflineMaps/2/3/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/3/1.jpg b/MapControl/OfflineMaps/2/3/1.jpg deleted file mode 100644 index d822726..0000000 Binary files a/MapControl/OfflineMaps/2/3/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/3/2.jpg b/MapControl/OfflineMaps/2/3/2.jpg deleted file mode 100644 index 4fa1aba..0000000 Binary files a/MapControl/OfflineMaps/2/3/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/2/3/3.jpg b/MapControl/OfflineMaps/2/3/3.jpg deleted file mode 100644 index 8400f22..0000000 Binary files a/MapControl/OfflineMaps/2/3/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/0/0.jpg b/MapControl/OfflineMaps/3/0/0.jpg deleted file mode 100644 index 331ea5c..0000000 Binary files a/MapControl/OfflineMaps/3/0/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/0/1.jpg b/MapControl/OfflineMaps/3/0/1.jpg deleted file mode 100644 index 0c8291d..0000000 Binary files a/MapControl/OfflineMaps/3/0/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/0/2.jpg b/MapControl/OfflineMaps/3/0/2.jpg deleted file mode 100644 index cc4627e..0000000 Binary files a/MapControl/OfflineMaps/3/0/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/0/3.jpg b/MapControl/OfflineMaps/3/0/3.jpg deleted file mode 100644 index 82d0be7..0000000 Binary files a/MapControl/OfflineMaps/3/0/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/0/4.jpg b/MapControl/OfflineMaps/3/0/4.jpg deleted file mode 100644 index dcdd825..0000000 Binary files a/MapControl/OfflineMaps/3/0/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/0/5.jpg b/MapControl/OfflineMaps/3/0/5.jpg deleted file mode 100644 index 868bcab..0000000 Binary files a/MapControl/OfflineMaps/3/0/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/0/6.jpg b/MapControl/OfflineMaps/3/0/6.jpg deleted file mode 100644 index 13187bd..0000000 Binary files a/MapControl/OfflineMaps/3/0/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/0/7.jpg b/MapControl/OfflineMaps/3/0/7.jpg deleted file mode 100644 index c6a2213..0000000 Binary files a/MapControl/OfflineMaps/3/0/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/1/0.jpg b/MapControl/OfflineMaps/3/1/0.jpg deleted file mode 100644 index 2093241..0000000 Binary files a/MapControl/OfflineMaps/3/1/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/1/1.jpg b/MapControl/OfflineMaps/3/1/1.jpg deleted file mode 100644 index 4dfd586..0000000 Binary files a/MapControl/OfflineMaps/3/1/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/1/2.jpg b/MapControl/OfflineMaps/3/1/2.jpg deleted file mode 100644 index 71e2ed2..0000000 Binary files a/MapControl/OfflineMaps/3/1/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/1/3.jpg b/MapControl/OfflineMaps/3/1/3.jpg deleted file mode 100644 index 1929079..0000000 Binary files a/MapControl/OfflineMaps/3/1/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/1/4.jpg b/MapControl/OfflineMaps/3/1/4.jpg deleted file mode 100644 index 858fb89..0000000 Binary files a/MapControl/OfflineMaps/3/1/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/1/5.jpg b/MapControl/OfflineMaps/3/1/5.jpg deleted file mode 100644 index bb8efbf..0000000 Binary files a/MapControl/OfflineMaps/3/1/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/1/6.jpg b/MapControl/OfflineMaps/3/1/6.jpg deleted file mode 100644 index ecf296c..0000000 Binary files a/MapControl/OfflineMaps/3/1/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/1/7.jpg b/MapControl/OfflineMaps/3/1/7.jpg deleted file mode 100644 index 2ecc9de..0000000 Binary files a/MapControl/OfflineMaps/3/1/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/2/0.jpg b/MapControl/OfflineMaps/3/2/0.jpg deleted file mode 100644 index dd5c59b..0000000 Binary files a/MapControl/OfflineMaps/3/2/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/2/1.jpg b/MapControl/OfflineMaps/3/2/1.jpg deleted file mode 100644 index 00ddb3b..0000000 Binary files a/MapControl/OfflineMaps/3/2/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/2/2.jpg b/MapControl/OfflineMaps/3/2/2.jpg deleted file mode 100644 index c2dce82..0000000 Binary files a/MapControl/OfflineMaps/3/2/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/2/3.jpg b/MapControl/OfflineMaps/3/2/3.jpg deleted file mode 100644 index 6523f5d..0000000 Binary files a/MapControl/OfflineMaps/3/2/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/2/4.jpg b/MapControl/OfflineMaps/3/2/4.jpg deleted file mode 100644 index 64dba59..0000000 Binary files a/MapControl/OfflineMaps/3/2/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/2/5.jpg b/MapControl/OfflineMaps/3/2/5.jpg deleted file mode 100644 index 7beae16..0000000 Binary files a/MapControl/OfflineMaps/3/2/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/2/6.jpg b/MapControl/OfflineMaps/3/2/6.jpg deleted file mode 100644 index 93c5bdf..0000000 Binary files a/MapControl/OfflineMaps/3/2/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/2/7.jpg b/MapControl/OfflineMaps/3/2/7.jpg deleted file mode 100644 index 598a6a7..0000000 Binary files a/MapControl/OfflineMaps/3/2/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/3/0.jpg b/MapControl/OfflineMaps/3/3/0.jpg deleted file mode 100644 index 67f4727..0000000 Binary files a/MapControl/OfflineMaps/3/3/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/3/1.jpg b/MapControl/OfflineMaps/3/3/1.jpg deleted file mode 100644 index e068743..0000000 Binary files a/MapControl/OfflineMaps/3/3/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/3/2.jpg b/MapControl/OfflineMaps/3/3/2.jpg deleted file mode 100644 index 7a35187..0000000 Binary files a/MapControl/OfflineMaps/3/3/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/3/3.jpg b/MapControl/OfflineMaps/3/3/3.jpg deleted file mode 100644 index 8d2e548..0000000 Binary files a/MapControl/OfflineMaps/3/3/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/3/4.jpg b/MapControl/OfflineMaps/3/3/4.jpg deleted file mode 100644 index 402e316..0000000 Binary files a/MapControl/OfflineMaps/3/3/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/3/5.jpg b/MapControl/OfflineMaps/3/3/5.jpg deleted file mode 100644 index 075f4b1..0000000 Binary files a/MapControl/OfflineMaps/3/3/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/3/6.jpg b/MapControl/OfflineMaps/3/3/6.jpg deleted file mode 100644 index 7f3da64..0000000 Binary files a/MapControl/OfflineMaps/3/3/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/3/7.jpg b/MapControl/OfflineMaps/3/3/7.jpg deleted file mode 100644 index 609181b..0000000 Binary files a/MapControl/OfflineMaps/3/3/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/4/0.jpg b/MapControl/OfflineMaps/3/4/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/3/4/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/4/1.jpg b/MapControl/OfflineMaps/3/4/1.jpg deleted file mode 100644 index 8e60ca8..0000000 Binary files a/MapControl/OfflineMaps/3/4/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/4/2.jpg b/MapControl/OfflineMaps/3/4/2.jpg deleted file mode 100644 index d31a672..0000000 Binary files a/MapControl/OfflineMaps/3/4/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/4/3.jpg b/MapControl/OfflineMaps/3/4/3.jpg deleted file mode 100644 index bce5b04..0000000 Binary files a/MapControl/OfflineMaps/3/4/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/4/4.jpg b/MapControl/OfflineMaps/3/4/4.jpg deleted file mode 100644 index 80b5540..0000000 Binary files a/MapControl/OfflineMaps/3/4/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/4/5.jpg b/MapControl/OfflineMaps/3/4/5.jpg deleted file mode 100644 index b4e6992..0000000 Binary files a/MapControl/OfflineMaps/3/4/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/4/6.jpg b/MapControl/OfflineMaps/3/4/6.jpg deleted file mode 100644 index b7f5693..0000000 Binary files a/MapControl/OfflineMaps/3/4/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/4/7.jpg b/MapControl/OfflineMaps/3/4/7.jpg deleted file mode 100644 index e882812..0000000 Binary files a/MapControl/OfflineMaps/3/4/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/5/0.jpg b/MapControl/OfflineMaps/3/5/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/3/5/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/5/1.jpg b/MapControl/OfflineMaps/3/5/1.jpg deleted file mode 100644 index c2be365..0000000 Binary files a/MapControl/OfflineMaps/3/5/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/5/2.jpg b/MapControl/OfflineMaps/3/5/2.jpg deleted file mode 100644 index c55970e..0000000 Binary files a/MapControl/OfflineMaps/3/5/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/5/3.jpg b/MapControl/OfflineMaps/3/5/3.jpg deleted file mode 100644 index d0849c5..0000000 Binary files a/MapControl/OfflineMaps/3/5/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/5/4.jpg b/MapControl/OfflineMaps/3/5/4.jpg deleted file mode 100644 index 91890ec..0000000 Binary files a/MapControl/OfflineMaps/3/5/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/5/5.jpg b/MapControl/OfflineMaps/3/5/5.jpg deleted file mode 100644 index 3db9ef8..0000000 Binary files a/MapControl/OfflineMaps/3/5/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/5/6.jpg b/MapControl/OfflineMaps/3/5/6.jpg deleted file mode 100644 index 4ed7c44..0000000 Binary files a/MapControl/OfflineMaps/3/5/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/5/7.jpg b/MapControl/OfflineMaps/3/5/7.jpg deleted file mode 100644 index 0b4bfd7..0000000 Binary files a/MapControl/OfflineMaps/3/5/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/6/0.jpg b/MapControl/OfflineMaps/3/6/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/3/6/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/6/1.jpg b/MapControl/OfflineMaps/3/6/1.jpg deleted file mode 100644 index 3b8f656..0000000 Binary files a/MapControl/OfflineMaps/3/6/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/6/2.jpg b/MapControl/OfflineMaps/3/6/2.jpg deleted file mode 100644 index 72b9df6..0000000 Binary files a/MapControl/OfflineMaps/3/6/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/6/3.jpg b/MapControl/OfflineMaps/3/6/3.jpg deleted file mode 100644 index 646270c..0000000 Binary files a/MapControl/OfflineMaps/3/6/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/6/4.jpg b/MapControl/OfflineMaps/3/6/4.jpg deleted file mode 100644 index a382fec..0000000 Binary files a/MapControl/OfflineMaps/3/6/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/6/5.jpg b/MapControl/OfflineMaps/3/6/5.jpg deleted file mode 100644 index 8719ac1..0000000 Binary files a/MapControl/OfflineMaps/3/6/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/6/6.jpg b/MapControl/OfflineMaps/3/6/6.jpg deleted file mode 100644 index 641dc95..0000000 Binary files a/MapControl/OfflineMaps/3/6/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/6/7.jpg b/MapControl/OfflineMaps/3/6/7.jpg deleted file mode 100644 index 8fb6e79..0000000 Binary files a/MapControl/OfflineMaps/3/6/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/7/0.jpg b/MapControl/OfflineMaps/3/7/0.jpg deleted file mode 100644 index 22e7ff6..0000000 Binary files a/MapControl/OfflineMaps/3/7/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/7/1.jpg b/MapControl/OfflineMaps/3/7/1.jpg deleted file mode 100644 index 153f5ef..0000000 Binary files a/MapControl/OfflineMaps/3/7/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/7/2.jpg b/MapControl/OfflineMaps/3/7/2.jpg deleted file mode 100644 index d145292..0000000 Binary files a/MapControl/OfflineMaps/3/7/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/7/3.jpg b/MapControl/OfflineMaps/3/7/3.jpg deleted file mode 100644 index 86f41c4..0000000 Binary files a/MapControl/OfflineMaps/3/7/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/7/4.jpg b/MapControl/OfflineMaps/3/7/4.jpg deleted file mode 100644 index fdd62d0..0000000 Binary files a/MapControl/OfflineMaps/3/7/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/7/5.jpg b/MapControl/OfflineMaps/3/7/5.jpg deleted file mode 100644 index 7b152a4..0000000 Binary files a/MapControl/OfflineMaps/3/7/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/7/6.jpg b/MapControl/OfflineMaps/3/7/6.jpg deleted file mode 100644 index 90cec8d..0000000 Binary files a/MapControl/OfflineMaps/3/7/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/3/7/7.jpg b/MapControl/OfflineMaps/3/7/7.jpg deleted file mode 100644 index f5c75a5..0000000 Binary files a/MapControl/OfflineMaps/3/7/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/0.jpg b/MapControl/OfflineMaps/4/0/0.jpg deleted file mode 100644 index e953050..0000000 Binary files a/MapControl/OfflineMaps/4/0/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/1.jpg b/MapControl/OfflineMaps/4/0/1.jpg deleted file mode 100644 index 99a7092..0000000 Binary files a/MapControl/OfflineMaps/4/0/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/10.jpg b/MapControl/OfflineMaps/4/0/10.jpg deleted file mode 100644 index 3528590..0000000 Binary files a/MapControl/OfflineMaps/4/0/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/11.jpg b/MapControl/OfflineMaps/4/0/11.jpg deleted file mode 100644 index e2e8e1f..0000000 Binary files a/MapControl/OfflineMaps/4/0/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/12.jpg b/MapControl/OfflineMaps/4/0/12.jpg deleted file mode 100644 index c60ee67..0000000 Binary files a/MapControl/OfflineMaps/4/0/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/13.jpg b/MapControl/OfflineMaps/4/0/13.jpg deleted file mode 100644 index a4ce38e..0000000 Binary files a/MapControl/OfflineMaps/4/0/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/14.jpg b/MapControl/OfflineMaps/4/0/14.jpg deleted file mode 100644 index b17791f..0000000 Binary files a/MapControl/OfflineMaps/4/0/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/15.jpg b/MapControl/OfflineMaps/4/0/15.jpg deleted file mode 100644 index 669112e..0000000 Binary files a/MapControl/OfflineMaps/4/0/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/2.jpg b/MapControl/OfflineMaps/4/0/2.jpg deleted file mode 100644 index 72353ea..0000000 Binary files a/MapControl/OfflineMaps/4/0/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/3.jpg b/MapControl/OfflineMaps/4/0/3.jpg deleted file mode 100644 index 3952a49..0000000 Binary files a/MapControl/OfflineMaps/4/0/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/4.jpg b/MapControl/OfflineMaps/4/0/4.jpg deleted file mode 100644 index 8e9ee77..0000000 Binary files a/MapControl/OfflineMaps/4/0/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/5.jpg b/MapControl/OfflineMaps/4/0/5.jpg deleted file mode 100644 index 4a1df23..0000000 Binary files a/MapControl/OfflineMaps/4/0/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/6.jpg b/MapControl/OfflineMaps/4/0/6.jpg deleted file mode 100644 index 76ca9be..0000000 Binary files a/MapControl/OfflineMaps/4/0/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/7.jpg b/MapControl/OfflineMaps/4/0/7.jpg deleted file mode 100644 index c68528b..0000000 Binary files a/MapControl/OfflineMaps/4/0/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/8.jpg b/MapControl/OfflineMaps/4/0/8.jpg deleted file mode 100644 index b410b63..0000000 Binary files a/MapControl/OfflineMaps/4/0/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/0/9.jpg b/MapControl/OfflineMaps/4/0/9.jpg deleted file mode 100644 index d584dda..0000000 Binary files a/MapControl/OfflineMaps/4/0/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/0.jpg b/MapControl/OfflineMaps/4/1/0.jpg deleted file mode 100644 index 56613e4..0000000 Binary files a/MapControl/OfflineMaps/4/1/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/1.jpg b/MapControl/OfflineMaps/4/1/1.jpg deleted file mode 100644 index 2d7fe60..0000000 Binary files a/MapControl/OfflineMaps/4/1/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/10.jpg b/MapControl/OfflineMaps/4/1/10.jpg deleted file mode 100644 index 5e32e00..0000000 Binary files a/MapControl/OfflineMaps/4/1/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/11.jpg b/MapControl/OfflineMaps/4/1/11.jpg deleted file mode 100644 index e0bd476..0000000 Binary files a/MapControl/OfflineMaps/4/1/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/12.jpg b/MapControl/OfflineMaps/4/1/12.jpg deleted file mode 100644 index e8d4709..0000000 Binary files a/MapControl/OfflineMaps/4/1/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/13.jpg b/MapControl/OfflineMaps/4/1/13.jpg deleted file mode 100644 index ee0d260..0000000 Binary files a/MapControl/OfflineMaps/4/1/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/14.jpg b/MapControl/OfflineMaps/4/1/14.jpg deleted file mode 100644 index 9f64146..0000000 Binary files a/MapControl/OfflineMaps/4/1/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/15.jpg b/MapControl/OfflineMaps/4/1/15.jpg deleted file mode 100644 index c79ab05..0000000 Binary files a/MapControl/OfflineMaps/4/1/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/2.jpg b/MapControl/OfflineMaps/4/1/2.jpg deleted file mode 100644 index 671facb..0000000 Binary files a/MapControl/OfflineMaps/4/1/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/3.jpg b/MapControl/OfflineMaps/4/1/3.jpg deleted file mode 100644 index 47de83c..0000000 Binary files a/MapControl/OfflineMaps/4/1/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/4.jpg b/MapControl/OfflineMaps/4/1/4.jpg deleted file mode 100644 index 487a512..0000000 Binary files a/MapControl/OfflineMaps/4/1/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/5.jpg b/MapControl/OfflineMaps/4/1/5.jpg deleted file mode 100644 index b4c4fd9..0000000 Binary files a/MapControl/OfflineMaps/4/1/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/6.jpg b/MapControl/OfflineMaps/4/1/6.jpg deleted file mode 100644 index 04cf8dc..0000000 Binary files a/MapControl/OfflineMaps/4/1/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/7.jpg b/MapControl/OfflineMaps/4/1/7.jpg deleted file mode 100644 index f4c928a..0000000 Binary files a/MapControl/OfflineMaps/4/1/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/8.jpg b/MapControl/OfflineMaps/4/1/8.jpg deleted file mode 100644 index 64c3ae1..0000000 Binary files a/MapControl/OfflineMaps/4/1/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/1/9.jpg b/MapControl/OfflineMaps/4/1/9.jpg deleted file mode 100644 index 0de09a0..0000000 Binary files a/MapControl/OfflineMaps/4/1/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/0.jpg b/MapControl/OfflineMaps/4/10/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/10/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/1.jpg b/MapControl/OfflineMaps/4/10/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/10/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/10.jpg b/MapControl/OfflineMaps/4/10/10.jpg deleted file mode 100644 index 5fd3229..0000000 Binary files a/MapControl/OfflineMaps/4/10/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/11.jpg b/MapControl/OfflineMaps/4/10/11.jpg deleted file mode 100644 index 8cc0947..0000000 Binary files a/MapControl/OfflineMaps/4/10/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/12.jpg b/MapControl/OfflineMaps/4/10/12.jpg deleted file mode 100644 index f773ce5..0000000 Binary files a/MapControl/OfflineMaps/4/10/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/13.jpg b/MapControl/OfflineMaps/4/10/13.jpg deleted file mode 100644 index 5ef52d0..0000000 Binary files a/MapControl/OfflineMaps/4/10/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/14.jpg b/MapControl/OfflineMaps/4/10/14.jpg deleted file mode 100644 index 10eac65..0000000 Binary files a/MapControl/OfflineMaps/4/10/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/15.jpg b/MapControl/OfflineMaps/4/10/15.jpg deleted file mode 100644 index 12bd2a6..0000000 Binary files a/MapControl/OfflineMaps/4/10/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/2.jpg b/MapControl/OfflineMaps/4/10/2.jpg deleted file mode 100644 index 4fd672f..0000000 Binary files a/MapControl/OfflineMaps/4/10/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/3.jpg b/MapControl/OfflineMaps/4/10/3.jpg deleted file mode 100644 index 737534c..0000000 Binary files a/MapControl/OfflineMaps/4/10/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/4.jpg b/MapControl/OfflineMaps/4/10/4.jpg deleted file mode 100644 index 0db3dce..0000000 Binary files a/MapControl/OfflineMaps/4/10/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/5.jpg b/MapControl/OfflineMaps/4/10/5.jpg deleted file mode 100644 index e14d3c9..0000000 Binary files a/MapControl/OfflineMaps/4/10/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/6.jpg b/MapControl/OfflineMaps/4/10/6.jpg deleted file mode 100644 index 4c62235..0000000 Binary files a/MapControl/OfflineMaps/4/10/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/7.jpg b/MapControl/OfflineMaps/4/10/7.jpg deleted file mode 100644 index 69f3c1f..0000000 Binary files a/MapControl/OfflineMaps/4/10/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/8.jpg b/MapControl/OfflineMaps/4/10/8.jpg deleted file mode 100644 index 774d486..0000000 Binary files a/MapControl/OfflineMaps/4/10/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/10/9.jpg b/MapControl/OfflineMaps/4/10/9.jpg deleted file mode 100644 index 6923860..0000000 Binary files a/MapControl/OfflineMaps/4/10/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/0.jpg b/MapControl/OfflineMaps/4/11/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/11/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/1.jpg b/MapControl/OfflineMaps/4/11/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/11/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/10.jpg b/MapControl/OfflineMaps/4/11/10.jpg deleted file mode 100644 index ea78fba..0000000 Binary files a/MapControl/OfflineMaps/4/11/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/11.jpg b/MapControl/OfflineMaps/4/11/11.jpg deleted file mode 100644 index bfc94fa..0000000 Binary files a/MapControl/OfflineMaps/4/11/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/12.jpg b/MapControl/OfflineMaps/4/11/12.jpg deleted file mode 100644 index 33306d6..0000000 Binary files a/MapControl/OfflineMaps/4/11/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/13.jpg b/MapControl/OfflineMaps/4/11/13.jpg deleted file mode 100644 index a0e5848..0000000 Binary files a/MapControl/OfflineMaps/4/11/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/14.jpg b/MapControl/OfflineMaps/4/11/14.jpg deleted file mode 100644 index 0ed43b9..0000000 Binary files a/MapControl/OfflineMaps/4/11/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/15.jpg b/MapControl/OfflineMaps/4/11/15.jpg deleted file mode 100644 index 403be62..0000000 Binary files a/MapControl/OfflineMaps/4/11/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/2.jpg b/MapControl/OfflineMaps/4/11/2.jpg deleted file mode 100644 index a142b3c..0000000 Binary files a/MapControl/OfflineMaps/4/11/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/3.jpg b/MapControl/OfflineMaps/4/11/3.jpg deleted file mode 100644 index 00a6b07..0000000 Binary files a/MapControl/OfflineMaps/4/11/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/4.jpg b/MapControl/OfflineMaps/4/11/4.jpg deleted file mode 100644 index 464b79a..0000000 Binary files a/MapControl/OfflineMaps/4/11/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/5.jpg b/MapControl/OfflineMaps/4/11/5.jpg deleted file mode 100644 index f53e813..0000000 Binary files a/MapControl/OfflineMaps/4/11/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/6.jpg b/MapControl/OfflineMaps/4/11/6.jpg deleted file mode 100644 index 03f8029..0000000 Binary files a/MapControl/OfflineMaps/4/11/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/7.jpg b/MapControl/OfflineMaps/4/11/7.jpg deleted file mode 100644 index 9f96eb5..0000000 Binary files a/MapControl/OfflineMaps/4/11/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/8.jpg b/MapControl/OfflineMaps/4/11/8.jpg deleted file mode 100644 index e26f627..0000000 Binary files a/MapControl/OfflineMaps/4/11/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/11/9.jpg b/MapControl/OfflineMaps/4/11/9.jpg deleted file mode 100644 index 73693c2..0000000 Binary files a/MapControl/OfflineMaps/4/11/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/0.jpg b/MapControl/OfflineMaps/4/12/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/12/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/1.jpg b/MapControl/OfflineMaps/4/12/1.jpg deleted file mode 100644 index 08a4cc4..0000000 Binary files a/MapControl/OfflineMaps/4/12/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/10.jpg b/MapControl/OfflineMaps/4/12/10.jpg deleted file mode 100644 index 7236db1..0000000 Binary files a/MapControl/OfflineMaps/4/12/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/11.jpg b/MapControl/OfflineMaps/4/12/11.jpg deleted file mode 100644 index c724822..0000000 Binary files a/MapControl/OfflineMaps/4/12/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/12.jpg b/MapControl/OfflineMaps/4/12/12.jpg deleted file mode 100644 index 81e114d..0000000 Binary files a/MapControl/OfflineMaps/4/12/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/13.jpg b/MapControl/OfflineMaps/4/12/13.jpg deleted file mode 100644 index c3b4b35..0000000 Binary files a/MapControl/OfflineMaps/4/12/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/14.jpg b/MapControl/OfflineMaps/4/12/14.jpg deleted file mode 100644 index 2fb6a6c..0000000 Binary files a/MapControl/OfflineMaps/4/12/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/15.jpg b/MapControl/OfflineMaps/4/12/15.jpg deleted file mode 100644 index afe9fb1..0000000 Binary files a/MapControl/OfflineMaps/4/12/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/2.jpg b/MapControl/OfflineMaps/4/12/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/12/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/3.jpg b/MapControl/OfflineMaps/4/12/3.jpg deleted file mode 100644 index 13d4428..0000000 Binary files a/MapControl/OfflineMaps/4/12/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/4.jpg b/MapControl/OfflineMaps/4/12/4.jpg deleted file mode 100644 index a0a72f8..0000000 Binary files a/MapControl/OfflineMaps/4/12/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/5.jpg b/MapControl/OfflineMaps/4/12/5.jpg deleted file mode 100644 index a214226..0000000 Binary files a/MapControl/OfflineMaps/4/12/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/6.jpg b/MapControl/OfflineMaps/4/12/6.jpg deleted file mode 100644 index 1769595..0000000 Binary files a/MapControl/OfflineMaps/4/12/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/7.jpg b/MapControl/OfflineMaps/4/12/7.jpg deleted file mode 100644 index 2dabc39..0000000 Binary files a/MapControl/OfflineMaps/4/12/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/8.jpg b/MapControl/OfflineMaps/4/12/8.jpg deleted file mode 100644 index 482bcbb..0000000 Binary files a/MapControl/OfflineMaps/4/12/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/12/9.jpg b/MapControl/OfflineMaps/4/12/9.jpg deleted file mode 100644 index 915c329..0000000 Binary files a/MapControl/OfflineMaps/4/12/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/0.jpg b/MapControl/OfflineMaps/4/13/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/13/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/1.jpg b/MapControl/OfflineMaps/4/13/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/13/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/10.jpg b/MapControl/OfflineMaps/4/13/10.jpg deleted file mode 100644 index 93e0e40..0000000 Binary files a/MapControl/OfflineMaps/4/13/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/11.jpg b/MapControl/OfflineMaps/4/13/11.jpg deleted file mode 100644 index 594efe1..0000000 Binary files a/MapControl/OfflineMaps/4/13/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/12.jpg b/MapControl/OfflineMaps/4/13/12.jpg deleted file mode 100644 index 508a829..0000000 Binary files a/MapControl/OfflineMaps/4/13/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/13.jpg b/MapControl/OfflineMaps/4/13/13.jpg deleted file mode 100644 index 0961a84..0000000 Binary files a/MapControl/OfflineMaps/4/13/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/14.jpg b/MapControl/OfflineMaps/4/13/14.jpg deleted file mode 100644 index 80c92db..0000000 Binary files a/MapControl/OfflineMaps/4/13/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/15.jpg b/MapControl/OfflineMaps/4/13/15.jpg deleted file mode 100644 index 0caca61..0000000 Binary files a/MapControl/OfflineMaps/4/13/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/2.jpg b/MapControl/OfflineMaps/4/13/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/13/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/3.jpg b/MapControl/OfflineMaps/4/13/3.jpg deleted file mode 100644 index c35c6bd..0000000 Binary files a/MapControl/OfflineMaps/4/13/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/4.jpg b/MapControl/OfflineMaps/4/13/4.jpg deleted file mode 100644 index 23c1570..0000000 Binary files a/MapControl/OfflineMaps/4/13/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/5.jpg b/MapControl/OfflineMaps/4/13/5.jpg deleted file mode 100644 index 7eeb2fe..0000000 Binary files a/MapControl/OfflineMaps/4/13/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/6.jpg b/MapControl/OfflineMaps/4/13/6.jpg deleted file mode 100644 index e7406a1..0000000 Binary files a/MapControl/OfflineMaps/4/13/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/7.jpg b/MapControl/OfflineMaps/4/13/7.jpg deleted file mode 100644 index a4fcf43..0000000 Binary files a/MapControl/OfflineMaps/4/13/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/8.jpg b/MapControl/OfflineMaps/4/13/8.jpg deleted file mode 100644 index 7f8c995..0000000 Binary files a/MapControl/OfflineMaps/4/13/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/13/9.jpg b/MapControl/OfflineMaps/4/13/9.jpg deleted file mode 100644 index 49d4b88..0000000 Binary files a/MapControl/OfflineMaps/4/13/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/0.jpg b/MapControl/OfflineMaps/4/14/0.jpg deleted file mode 100644 index 7328099..0000000 Binary files a/MapControl/OfflineMaps/4/14/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/1.jpg b/MapControl/OfflineMaps/4/14/1.jpg deleted file mode 100644 index c642944..0000000 Binary files a/MapControl/OfflineMaps/4/14/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/10.jpg b/MapControl/OfflineMaps/4/14/10.jpg deleted file mode 100644 index 413b9f1..0000000 Binary files a/MapControl/OfflineMaps/4/14/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/11.jpg b/MapControl/OfflineMaps/4/14/11.jpg deleted file mode 100644 index c645299..0000000 Binary files a/MapControl/OfflineMaps/4/14/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/12.jpg b/MapControl/OfflineMaps/4/14/12.jpg deleted file mode 100644 index a300848..0000000 Binary files a/MapControl/OfflineMaps/4/14/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/13.jpg b/MapControl/OfflineMaps/4/14/13.jpg deleted file mode 100644 index 6e36911..0000000 Binary files a/MapControl/OfflineMaps/4/14/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/14.jpg b/MapControl/OfflineMaps/4/14/14.jpg deleted file mode 100644 index f852d86..0000000 Binary files a/MapControl/OfflineMaps/4/14/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/15.jpg b/MapControl/OfflineMaps/4/14/15.jpg deleted file mode 100644 index c966949..0000000 Binary files a/MapControl/OfflineMaps/4/14/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/2.jpg b/MapControl/OfflineMaps/4/14/2.jpg deleted file mode 100644 index 6d699f4..0000000 Binary files a/MapControl/OfflineMaps/4/14/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/3.jpg b/MapControl/OfflineMaps/4/14/3.jpg deleted file mode 100644 index 16f0154..0000000 Binary files a/MapControl/OfflineMaps/4/14/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/4.jpg b/MapControl/OfflineMaps/4/14/4.jpg deleted file mode 100644 index 04904f3..0000000 Binary files a/MapControl/OfflineMaps/4/14/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/5.jpg b/MapControl/OfflineMaps/4/14/5.jpg deleted file mode 100644 index 5fb4b85..0000000 Binary files a/MapControl/OfflineMaps/4/14/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/6.jpg b/MapControl/OfflineMaps/4/14/6.jpg deleted file mode 100644 index dc8f714..0000000 Binary files a/MapControl/OfflineMaps/4/14/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/7.jpg b/MapControl/OfflineMaps/4/14/7.jpg deleted file mode 100644 index d8050a9..0000000 Binary files a/MapControl/OfflineMaps/4/14/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/8.jpg b/MapControl/OfflineMaps/4/14/8.jpg deleted file mode 100644 index 9a5fb40..0000000 Binary files a/MapControl/OfflineMaps/4/14/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/14/9.jpg b/MapControl/OfflineMaps/4/14/9.jpg deleted file mode 100644 index a998315..0000000 Binary files a/MapControl/OfflineMaps/4/14/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/0.jpg b/MapControl/OfflineMaps/4/15/0.jpg deleted file mode 100644 index c714f04..0000000 Binary files a/MapControl/OfflineMaps/4/15/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/1.jpg b/MapControl/OfflineMaps/4/15/1.jpg deleted file mode 100644 index b11e73a..0000000 Binary files a/MapControl/OfflineMaps/4/15/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/10.jpg b/MapControl/OfflineMaps/4/15/10.jpg deleted file mode 100644 index 8c5db9b..0000000 Binary files a/MapControl/OfflineMaps/4/15/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/11.jpg b/MapControl/OfflineMaps/4/15/11.jpg deleted file mode 100644 index d08c70f..0000000 Binary files a/MapControl/OfflineMaps/4/15/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/12.jpg b/MapControl/OfflineMaps/4/15/12.jpg deleted file mode 100644 index 052793c..0000000 Binary files a/MapControl/OfflineMaps/4/15/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/13.jpg b/MapControl/OfflineMaps/4/15/13.jpg deleted file mode 100644 index b0c539a..0000000 Binary files a/MapControl/OfflineMaps/4/15/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/14.jpg b/MapControl/OfflineMaps/4/15/14.jpg deleted file mode 100644 index c11be48..0000000 Binary files a/MapControl/OfflineMaps/4/15/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/15.jpg b/MapControl/OfflineMaps/4/15/15.jpg deleted file mode 100644 index be7b4b3..0000000 Binary files a/MapControl/OfflineMaps/4/15/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/2.jpg b/MapControl/OfflineMaps/4/15/2.jpg deleted file mode 100644 index 182e096..0000000 Binary files a/MapControl/OfflineMaps/4/15/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/3.jpg b/MapControl/OfflineMaps/4/15/3.jpg deleted file mode 100644 index fa75f61..0000000 Binary files a/MapControl/OfflineMaps/4/15/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/4.jpg b/MapControl/OfflineMaps/4/15/4.jpg deleted file mode 100644 index bf57971..0000000 Binary files a/MapControl/OfflineMaps/4/15/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/5.jpg b/MapControl/OfflineMaps/4/15/5.jpg deleted file mode 100644 index 2624e83..0000000 Binary files a/MapControl/OfflineMaps/4/15/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/6.jpg b/MapControl/OfflineMaps/4/15/6.jpg deleted file mode 100644 index bdf275a..0000000 Binary files a/MapControl/OfflineMaps/4/15/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/7.jpg b/MapControl/OfflineMaps/4/15/7.jpg deleted file mode 100644 index ed267b3..0000000 Binary files a/MapControl/OfflineMaps/4/15/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/8.jpg b/MapControl/OfflineMaps/4/15/8.jpg deleted file mode 100644 index aceb74f..0000000 Binary files a/MapControl/OfflineMaps/4/15/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/15/9.jpg b/MapControl/OfflineMaps/4/15/9.jpg deleted file mode 100644 index 46bde67..0000000 Binary files a/MapControl/OfflineMaps/4/15/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/0.jpg b/MapControl/OfflineMaps/4/2/0.jpg deleted file mode 100644 index 7641ba2..0000000 Binary files a/MapControl/OfflineMaps/4/2/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/1.jpg b/MapControl/OfflineMaps/4/2/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/2/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/10.jpg b/MapControl/OfflineMaps/4/2/10.jpg deleted file mode 100644 index cbd0acb..0000000 Binary files a/MapControl/OfflineMaps/4/2/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/11.jpg b/MapControl/OfflineMaps/4/2/11.jpg deleted file mode 100644 index 0c350eb..0000000 Binary files a/MapControl/OfflineMaps/4/2/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/12.jpg b/MapControl/OfflineMaps/4/2/12.jpg deleted file mode 100644 index 1438d82..0000000 Binary files a/MapControl/OfflineMaps/4/2/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/13.jpg b/MapControl/OfflineMaps/4/2/13.jpg deleted file mode 100644 index 8a121d0..0000000 Binary files a/MapControl/OfflineMaps/4/2/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/14.jpg b/MapControl/OfflineMaps/4/2/14.jpg deleted file mode 100644 index bc84ea2..0000000 Binary files a/MapControl/OfflineMaps/4/2/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/15.jpg b/MapControl/OfflineMaps/4/2/15.jpg deleted file mode 100644 index 3e105bc..0000000 Binary files a/MapControl/OfflineMaps/4/2/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/2.jpg b/MapControl/OfflineMaps/4/2/2.jpg deleted file mode 100644 index 0dbe9e3..0000000 Binary files a/MapControl/OfflineMaps/4/2/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/3.jpg b/MapControl/OfflineMaps/4/2/3.jpg deleted file mode 100644 index c86ee70..0000000 Binary files a/MapControl/OfflineMaps/4/2/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/4.jpg b/MapControl/OfflineMaps/4/2/4.jpg deleted file mode 100644 index df75471..0000000 Binary files a/MapControl/OfflineMaps/4/2/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/5.jpg b/MapControl/OfflineMaps/4/2/5.jpg deleted file mode 100644 index 112a2cb..0000000 Binary files a/MapControl/OfflineMaps/4/2/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/6.jpg b/MapControl/OfflineMaps/4/2/6.jpg deleted file mode 100644 index dc95524..0000000 Binary files a/MapControl/OfflineMaps/4/2/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/7.jpg b/MapControl/OfflineMaps/4/2/7.jpg deleted file mode 100644 index 653e1cc..0000000 Binary files a/MapControl/OfflineMaps/4/2/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/8.jpg b/MapControl/OfflineMaps/4/2/8.jpg deleted file mode 100644 index 26d8a8c..0000000 Binary files a/MapControl/OfflineMaps/4/2/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/2/9.jpg b/MapControl/OfflineMaps/4/2/9.jpg deleted file mode 100644 index 383ef73..0000000 Binary files a/MapControl/OfflineMaps/4/2/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/0.jpg b/MapControl/OfflineMaps/4/3/0.jpg deleted file mode 100644 index 440e6ca..0000000 Binary files a/MapControl/OfflineMaps/4/3/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/1.jpg b/MapControl/OfflineMaps/4/3/1.jpg deleted file mode 100644 index 45561fc..0000000 Binary files a/MapControl/OfflineMaps/4/3/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/10.jpg b/MapControl/OfflineMaps/4/3/10.jpg deleted file mode 100644 index 2964283..0000000 Binary files a/MapControl/OfflineMaps/4/3/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/11.jpg b/MapControl/OfflineMaps/4/3/11.jpg deleted file mode 100644 index b2d7ee9..0000000 Binary files a/MapControl/OfflineMaps/4/3/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/12.jpg b/MapControl/OfflineMaps/4/3/12.jpg deleted file mode 100644 index d6a791b..0000000 Binary files a/MapControl/OfflineMaps/4/3/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/13.jpg b/MapControl/OfflineMaps/4/3/13.jpg deleted file mode 100644 index afad3e2..0000000 Binary files a/MapControl/OfflineMaps/4/3/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/14.jpg b/MapControl/OfflineMaps/4/3/14.jpg deleted file mode 100644 index 0baf243..0000000 Binary files a/MapControl/OfflineMaps/4/3/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/15.jpg b/MapControl/OfflineMaps/4/3/15.jpg deleted file mode 100644 index 11e1c42..0000000 Binary files a/MapControl/OfflineMaps/4/3/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/2.jpg b/MapControl/OfflineMaps/4/3/2.jpg deleted file mode 100644 index 0b1ed5b..0000000 Binary files a/MapControl/OfflineMaps/4/3/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/3.jpg b/MapControl/OfflineMaps/4/3/3.jpg deleted file mode 100644 index 9075037..0000000 Binary files a/MapControl/OfflineMaps/4/3/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/4.jpg b/MapControl/OfflineMaps/4/3/4.jpg deleted file mode 100644 index dc1e39f..0000000 Binary files a/MapControl/OfflineMaps/4/3/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/5.jpg b/MapControl/OfflineMaps/4/3/5.jpg deleted file mode 100644 index 6702c19..0000000 Binary files a/MapControl/OfflineMaps/4/3/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/6.jpg b/MapControl/OfflineMaps/4/3/6.jpg deleted file mode 100644 index 3d5ba56..0000000 Binary files a/MapControl/OfflineMaps/4/3/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/7.jpg b/MapControl/OfflineMaps/4/3/7.jpg deleted file mode 100644 index 51b0f12..0000000 Binary files a/MapControl/OfflineMaps/4/3/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/8.jpg b/MapControl/OfflineMaps/4/3/8.jpg deleted file mode 100644 index cad4a78..0000000 Binary files a/MapControl/OfflineMaps/4/3/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/3/9.jpg b/MapControl/OfflineMaps/4/3/9.jpg deleted file mode 100644 index 3bd7fba..0000000 Binary files a/MapControl/OfflineMaps/4/3/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/0.jpg b/MapControl/OfflineMaps/4/4/0.jpg deleted file mode 100644 index e8421e8..0000000 Binary files a/MapControl/OfflineMaps/4/4/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/1.jpg b/MapControl/OfflineMaps/4/4/1.jpg deleted file mode 100644 index f24588b..0000000 Binary files a/MapControl/OfflineMaps/4/4/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/10.jpg b/MapControl/OfflineMaps/4/4/10.jpg deleted file mode 100644 index 72ca02c..0000000 Binary files a/MapControl/OfflineMaps/4/4/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/11.jpg b/MapControl/OfflineMaps/4/4/11.jpg deleted file mode 100644 index dd71316..0000000 Binary files a/MapControl/OfflineMaps/4/4/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/12.jpg b/MapControl/OfflineMaps/4/4/12.jpg deleted file mode 100644 index 7c30674..0000000 Binary files a/MapControl/OfflineMaps/4/4/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/13.jpg b/MapControl/OfflineMaps/4/4/13.jpg deleted file mode 100644 index e806d86..0000000 Binary files a/MapControl/OfflineMaps/4/4/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/14.jpg b/MapControl/OfflineMaps/4/4/14.jpg deleted file mode 100644 index 597629a..0000000 Binary files a/MapControl/OfflineMaps/4/4/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/15.jpg b/MapControl/OfflineMaps/4/4/15.jpg deleted file mode 100644 index faae243..0000000 Binary files a/MapControl/OfflineMaps/4/4/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/2.jpg b/MapControl/OfflineMaps/4/4/2.jpg deleted file mode 100644 index e1821cf..0000000 Binary files a/MapControl/OfflineMaps/4/4/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/3.jpg b/MapControl/OfflineMaps/4/4/3.jpg deleted file mode 100644 index ae8f569..0000000 Binary files a/MapControl/OfflineMaps/4/4/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/4.jpg b/MapControl/OfflineMaps/4/4/4.jpg deleted file mode 100644 index 38f2f4a..0000000 Binary files a/MapControl/OfflineMaps/4/4/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/5.jpg b/MapControl/OfflineMaps/4/4/5.jpg deleted file mode 100644 index 22d8921..0000000 Binary files a/MapControl/OfflineMaps/4/4/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/6.jpg b/MapControl/OfflineMaps/4/4/6.jpg deleted file mode 100644 index 66f5720..0000000 Binary files a/MapControl/OfflineMaps/4/4/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/7.jpg b/MapControl/OfflineMaps/4/4/7.jpg deleted file mode 100644 index 93f267a..0000000 Binary files a/MapControl/OfflineMaps/4/4/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/8.jpg b/MapControl/OfflineMaps/4/4/8.jpg deleted file mode 100644 index 9705464..0000000 Binary files a/MapControl/OfflineMaps/4/4/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/4/9.jpg b/MapControl/OfflineMaps/4/4/9.jpg deleted file mode 100644 index 2daf3bf..0000000 Binary files a/MapControl/OfflineMaps/4/4/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/0.jpg b/MapControl/OfflineMaps/4/5/0.jpg deleted file mode 100644 index 58e127b..0000000 Binary files a/MapControl/OfflineMaps/4/5/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/1.jpg b/MapControl/OfflineMaps/4/5/1.jpg deleted file mode 100644 index c22c101..0000000 Binary files a/MapControl/OfflineMaps/4/5/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/10.jpg b/MapControl/OfflineMaps/4/5/10.jpg deleted file mode 100644 index 8bcca9b..0000000 Binary files a/MapControl/OfflineMaps/4/5/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/11.jpg b/MapControl/OfflineMaps/4/5/11.jpg deleted file mode 100644 index 82acd91..0000000 Binary files a/MapControl/OfflineMaps/4/5/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/12.jpg b/MapControl/OfflineMaps/4/5/12.jpg deleted file mode 100644 index 293da56..0000000 Binary files a/MapControl/OfflineMaps/4/5/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/13.jpg b/MapControl/OfflineMaps/4/5/13.jpg deleted file mode 100644 index 0527805..0000000 Binary files a/MapControl/OfflineMaps/4/5/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/14.jpg b/MapControl/OfflineMaps/4/5/14.jpg deleted file mode 100644 index 34b9e38..0000000 Binary files a/MapControl/OfflineMaps/4/5/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/15.jpg b/MapControl/OfflineMaps/4/5/15.jpg deleted file mode 100644 index 49a40ee..0000000 Binary files a/MapControl/OfflineMaps/4/5/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/2.jpg b/MapControl/OfflineMaps/4/5/2.jpg deleted file mode 100644 index d7115e9..0000000 Binary files a/MapControl/OfflineMaps/4/5/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/3.jpg b/MapControl/OfflineMaps/4/5/3.jpg deleted file mode 100644 index 7f61ac7..0000000 Binary files a/MapControl/OfflineMaps/4/5/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/4.jpg b/MapControl/OfflineMaps/4/5/4.jpg deleted file mode 100644 index 8e07c04..0000000 Binary files a/MapControl/OfflineMaps/4/5/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/5.jpg b/MapControl/OfflineMaps/4/5/5.jpg deleted file mode 100644 index 3f894dd..0000000 Binary files a/MapControl/OfflineMaps/4/5/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/6.jpg b/MapControl/OfflineMaps/4/5/6.jpg deleted file mode 100644 index d1942c4..0000000 Binary files a/MapControl/OfflineMaps/4/5/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/7.jpg b/MapControl/OfflineMaps/4/5/7.jpg deleted file mode 100644 index 0dce37f..0000000 Binary files a/MapControl/OfflineMaps/4/5/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/8.jpg b/MapControl/OfflineMaps/4/5/8.jpg deleted file mode 100644 index 2786512..0000000 Binary files a/MapControl/OfflineMaps/4/5/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/5/9.jpg b/MapControl/OfflineMaps/4/5/9.jpg deleted file mode 100644 index 2366d5a..0000000 Binary files a/MapControl/OfflineMaps/4/5/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/0.jpg b/MapControl/OfflineMaps/4/6/0.jpg deleted file mode 100644 index 0add79b..0000000 Binary files a/MapControl/OfflineMaps/4/6/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/1.jpg b/MapControl/OfflineMaps/4/6/1.jpg deleted file mode 100644 index b932288..0000000 Binary files a/MapControl/OfflineMaps/4/6/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/10.jpg b/MapControl/OfflineMaps/4/6/10.jpg deleted file mode 100644 index 422882c..0000000 Binary files a/MapControl/OfflineMaps/4/6/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/11.jpg b/MapControl/OfflineMaps/4/6/11.jpg deleted file mode 100644 index 408d8f6..0000000 Binary files a/MapControl/OfflineMaps/4/6/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/12.jpg b/MapControl/OfflineMaps/4/6/12.jpg deleted file mode 100644 index f7c903d..0000000 Binary files a/MapControl/OfflineMaps/4/6/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/13.jpg b/MapControl/OfflineMaps/4/6/13.jpg deleted file mode 100644 index 049fdf1..0000000 Binary files a/MapControl/OfflineMaps/4/6/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/14.jpg b/MapControl/OfflineMaps/4/6/14.jpg deleted file mode 100644 index aa5b189..0000000 Binary files a/MapControl/OfflineMaps/4/6/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/15.jpg b/MapControl/OfflineMaps/4/6/15.jpg deleted file mode 100644 index 1470fb7..0000000 Binary files a/MapControl/OfflineMaps/4/6/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/2.jpg b/MapControl/OfflineMaps/4/6/2.jpg deleted file mode 100644 index 3964287..0000000 Binary files a/MapControl/OfflineMaps/4/6/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/3.jpg b/MapControl/OfflineMaps/4/6/3.jpg deleted file mode 100644 index a8062b0..0000000 Binary files a/MapControl/OfflineMaps/4/6/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/4.jpg b/MapControl/OfflineMaps/4/6/4.jpg deleted file mode 100644 index 875fd16..0000000 Binary files a/MapControl/OfflineMaps/4/6/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/5.jpg b/MapControl/OfflineMaps/4/6/5.jpg deleted file mode 100644 index 099da23..0000000 Binary files a/MapControl/OfflineMaps/4/6/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/6.jpg b/MapControl/OfflineMaps/4/6/6.jpg deleted file mode 100644 index 73efea9..0000000 Binary files a/MapControl/OfflineMaps/4/6/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/7.jpg b/MapControl/OfflineMaps/4/6/7.jpg deleted file mode 100644 index d099752..0000000 Binary files a/MapControl/OfflineMaps/4/6/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/8.jpg b/MapControl/OfflineMaps/4/6/8.jpg deleted file mode 100644 index 819a759..0000000 Binary files a/MapControl/OfflineMaps/4/6/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/6/9.jpg b/MapControl/OfflineMaps/4/6/9.jpg deleted file mode 100644 index 927a4e6..0000000 Binary files a/MapControl/OfflineMaps/4/6/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/0.jpg b/MapControl/OfflineMaps/4/7/0.jpg deleted file mode 100644 index 712107b..0000000 Binary files a/MapControl/OfflineMaps/4/7/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/1.jpg b/MapControl/OfflineMaps/4/7/1.jpg deleted file mode 100644 index 7e3a4cd..0000000 Binary files a/MapControl/OfflineMaps/4/7/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/10.jpg b/MapControl/OfflineMaps/4/7/10.jpg deleted file mode 100644 index 397809c..0000000 Binary files a/MapControl/OfflineMaps/4/7/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/11.jpg b/MapControl/OfflineMaps/4/7/11.jpg deleted file mode 100644 index 5d46dcb..0000000 Binary files a/MapControl/OfflineMaps/4/7/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/12.jpg b/MapControl/OfflineMaps/4/7/12.jpg deleted file mode 100644 index 205e90c..0000000 Binary files a/MapControl/OfflineMaps/4/7/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/13.jpg b/MapControl/OfflineMaps/4/7/13.jpg deleted file mode 100644 index ff31577..0000000 Binary files a/MapControl/OfflineMaps/4/7/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/14.jpg b/MapControl/OfflineMaps/4/7/14.jpg deleted file mode 100644 index df37086..0000000 Binary files a/MapControl/OfflineMaps/4/7/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/15.jpg b/MapControl/OfflineMaps/4/7/15.jpg deleted file mode 100644 index 061d080..0000000 Binary files a/MapControl/OfflineMaps/4/7/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/2.jpg b/MapControl/OfflineMaps/4/7/2.jpg deleted file mode 100644 index c585a0b..0000000 Binary files a/MapControl/OfflineMaps/4/7/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/3.jpg b/MapControl/OfflineMaps/4/7/3.jpg deleted file mode 100644 index 1b2da88..0000000 Binary files a/MapControl/OfflineMaps/4/7/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/4.jpg b/MapControl/OfflineMaps/4/7/4.jpg deleted file mode 100644 index 145d1d5..0000000 Binary files a/MapControl/OfflineMaps/4/7/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/5.jpg b/MapControl/OfflineMaps/4/7/5.jpg deleted file mode 100644 index 1b23c5c..0000000 Binary files a/MapControl/OfflineMaps/4/7/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/6.jpg b/MapControl/OfflineMaps/4/7/6.jpg deleted file mode 100644 index 343bf53..0000000 Binary files a/MapControl/OfflineMaps/4/7/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/7.jpg b/MapControl/OfflineMaps/4/7/7.jpg deleted file mode 100644 index c1e3915..0000000 Binary files a/MapControl/OfflineMaps/4/7/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/8.jpg b/MapControl/OfflineMaps/4/7/8.jpg deleted file mode 100644 index 9705ed3..0000000 Binary files a/MapControl/OfflineMaps/4/7/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/7/9.jpg b/MapControl/OfflineMaps/4/7/9.jpg deleted file mode 100644 index 7d3331d..0000000 Binary files a/MapControl/OfflineMaps/4/7/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/0.jpg b/MapControl/OfflineMaps/4/8/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/8/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/1.jpg b/MapControl/OfflineMaps/4/8/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/8/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/10.jpg b/MapControl/OfflineMaps/4/8/10.jpg deleted file mode 100644 index 13493b5..0000000 Binary files a/MapControl/OfflineMaps/4/8/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/11.jpg b/MapControl/OfflineMaps/4/8/11.jpg deleted file mode 100644 index 68239bb..0000000 Binary files a/MapControl/OfflineMaps/4/8/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/12.jpg b/MapControl/OfflineMaps/4/8/12.jpg deleted file mode 100644 index 6dfb157..0000000 Binary files a/MapControl/OfflineMaps/4/8/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/13.jpg b/MapControl/OfflineMaps/4/8/13.jpg deleted file mode 100644 index 17c49b8..0000000 Binary files a/MapControl/OfflineMaps/4/8/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/14.jpg b/MapControl/OfflineMaps/4/8/14.jpg deleted file mode 100644 index 72be49a..0000000 Binary files a/MapControl/OfflineMaps/4/8/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/15.jpg b/MapControl/OfflineMaps/4/8/15.jpg deleted file mode 100644 index 3b7af9f..0000000 Binary files a/MapControl/OfflineMaps/4/8/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/2.jpg b/MapControl/OfflineMaps/4/8/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/8/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/3.jpg b/MapControl/OfflineMaps/4/8/3.jpg deleted file mode 100644 index 54d6068..0000000 Binary files a/MapControl/OfflineMaps/4/8/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/4.jpg b/MapControl/OfflineMaps/4/8/4.jpg deleted file mode 100644 index 3c01c73..0000000 Binary files a/MapControl/OfflineMaps/4/8/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/5.jpg b/MapControl/OfflineMaps/4/8/5.jpg deleted file mode 100644 index 852aafa..0000000 Binary files a/MapControl/OfflineMaps/4/8/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/6.jpg b/MapControl/OfflineMaps/4/8/6.jpg deleted file mode 100644 index 4c72366..0000000 Binary files a/MapControl/OfflineMaps/4/8/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/7.jpg b/MapControl/OfflineMaps/4/8/7.jpg deleted file mode 100644 index d7d1b7d..0000000 Binary files a/MapControl/OfflineMaps/4/8/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/8.jpg b/MapControl/OfflineMaps/4/8/8.jpg deleted file mode 100644 index c786497..0000000 Binary files a/MapControl/OfflineMaps/4/8/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/8/9.jpg b/MapControl/OfflineMaps/4/8/9.jpg deleted file mode 100644 index 7fb44f3..0000000 Binary files a/MapControl/OfflineMaps/4/8/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/0.jpg b/MapControl/OfflineMaps/4/9/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/9/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/1.jpg b/MapControl/OfflineMaps/4/9/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/9/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/10.jpg b/MapControl/OfflineMaps/4/9/10.jpg deleted file mode 100644 index a408ae9..0000000 Binary files a/MapControl/OfflineMaps/4/9/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/11.jpg b/MapControl/OfflineMaps/4/9/11.jpg deleted file mode 100644 index b7912c3..0000000 Binary files a/MapControl/OfflineMaps/4/9/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/12.jpg b/MapControl/OfflineMaps/4/9/12.jpg deleted file mode 100644 index 7b1108c..0000000 Binary files a/MapControl/OfflineMaps/4/9/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/13.jpg b/MapControl/OfflineMaps/4/9/13.jpg deleted file mode 100644 index d89b8e6..0000000 Binary files a/MapControl/OfflineMaps/4/9/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/14.jpg b/MapControl/OfflineMaps/4/9/14.jpg deleted file mode 100644 index 9d0a90a..0000000 Binary files a/MapControl/OfflineMaps/4/9/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/15.jpg b/MapControl/OfflineMaps/4/9/15.jpg deleted file mode 100644 index 5746407..0000000 Binary files a/MapControl/OfflineMaps/4/9/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/2.jpg b/MapControl/OfflineMaps/4/9/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/4/9/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/3.jpg b/MapControl/OfflineMaps/4/9/3.jpg deleted file mode 100644 index 50e0617..0000000 Binary files a/MapControl/OfflineMaps/4/9/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/4.jpg b/MapControl/OfflineMaps/4/9/4.jpg deleted file mode 100644 index c4e1438..0000000 Binary files a/MapControl/OfflineMaps/4/9/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/5.jpg b/MapControl/OfflineMaps/4/9/5.jpg deleted file mode 100644 index 46534de..0000000 Binary files a/MapControl/OfflineMaps/4/9/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/6.jpg b/MapControl/OfflineMaps/4/9/6.jpg deleted file mode 100644 index aabeb11..0000000 Binary files a/MapControl/OfflineMaps/4/9/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/7.jpg b/MapControl/OfflineMaps/4/9/7.jpg deleted file mode 100644 index 0b466d9..0000000 Binary files a/MapControl/OfflineMaps/4/9/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/8.jpg b/MapControl/OfflineMaps/4/9/8.jpg deleted file mode 100644 index 2ba8c97..0000000 Binary files a/MapControl/OfflineMaps/4/9/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/4/9/9.jpg b/MapControl/OfflineMaps/4/9/9.jpg deleted file mode 100644 index 69e7c00..0000000 Binary files a/MapControl/OfflineMaps/4/9/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/0.jpg b/MapControl/OfflineMaps/5/0/0.jpg deleted file mode 100644 index 5a84791..0000000 Binary files a/MapControl/OfflineMaps/5/0/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/1.jpg b/MapControl/OfflineMaps/5/0/1.jpg deleted file mode 100644 index 0695cd0..0000000 Binary files a/MapControl/OfflineMaps/5/0/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/10.jpg b/MapControl/OfflineMaps/5/0/10.jpg deleted file mode 100644 index aee128a..0000000 Binary files a/MapControl/OfflineMaps/5/0/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/11.jpg b/MapControl/OfflineMaps/5/0/11.jpg deleted file mode 100644 index bf8a5b1..0000000 Binary files a/MapControl/OfflineMaps/5/0/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/12.jpg b/MapControl/OfflineMaps/5/0/12.jpg deleted file mode 100644 index 1d1dada..0000000 Binary files a/MapControl/OfflineMaps/5/0/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/13.jpg b/MapControl/OfflineMaps/5/0/13.jpg deleted file mode 100644 index 36ada34..0000000 Binary files a/MapControl/OfflineMaps/5/0/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/14.jpg b/MapControl/OfflineMaps/5/0/14.jpg deleted file mode 100644 index 126969f..0000000 Binary files a/MapControl/OfflineMaps/5/0/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/15.jpg b/MapControl/OfflineMaps/5/0/15.jpg deleted file mode 100644 index c25c467..0000000 Binary files a/MapControl/OfflineMaps/5/0/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/16.jpg b/MapControl/OfflineMaps/5/0/16.jpg deleted file mode 100644 index 89a4f43..0000000 Binary files a/MapControl/OfflineMaps/5/0/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/17.jpg b/MapControl/OfflineMaps/5/0/17.jpg deleted file mode 100644 index 0ae2f07..0000000 Binary files a/MapControl/OfflineMaps/5/0/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/18.jpg b/MapControl/OfflineMaps/5/0/18.jpg deleted file mode 100644 index 65bc37f..0000000 Binary files a/MapControl/OfflineMaps/5/0/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/19.jpg b/MapControl/OfflineMaps/5/0/19.jpg deleted file mode 100644 index d532f23..0000000 Binary files a/MapControl/OfflineMaps/5/0/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/2.jpg b/MapControl/OfflineMaps/5/0/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/0/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/20.jpg b/MapControl/OfflineMaps/5/0/20.jpg deleted file mode 100644 index 89a57ac..0000000 Binary files a/MapControl/OfflineMaps/5/0/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/21.jpg b/MapControl/OfflineMaps/5/0/21.jpg deleted file mode 100644 index f508a20..0000000 Binary files a/MapControl/OfflineMaps/5/0/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/22.jpg b/MapControl/OfflineMaps/5/0/22.jpg deleted file mode 100644 index 09ee33f..0000000 Binary files a/MapControl/OfflineMaps/5/0/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/23.jpg b/MapControl/OfflineMaps/5/0/23.jpg deleted file mode 100644 index 30d594c..0000000 Binary files a/MapControl/OfflineMaps/5/0/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/24.jpg b/MapControl/OfflineMaps/5/0/24.jpg deleted file mode 100644 index 53e5bc0..0000000 Binary files a/MapControl/OfflineMaps/5/0/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/25.jpg b/MapControl/OfflineMaps/5/0/25.jpg deleted file mode 100644 index b0dd4c0..0000000 Binary files a/MapControl/OfflineMaps/5/0/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/26.jpg b/MapControl/OfflineMaps/5/0/26.jpg deleted file mode 100644 index a1b5ba0..0000000 Binary files a/MapControl/OfflineMaps/5/0/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/27.jpg b/MapControl/OfflineMaps/5/0/27.jpg deleted file mode 100644 index 65c5d4b..0000000 Binary files a/MapControl/OfflineMaps/5/0/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/28.jpg b/MapControl/OfflineMaps/5/0/28.jpg deleted file mode 100644 index 2d818bf..0000000 Binary files a/MapControl/OfflineMaps/5/0/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/29.jpg b/MapControl/OfflineMaps/5/0/29.jpg deleted file mode 100644 index 3e98fae..0000000 Binary files a/MapControl/OfflineMaps/5/0/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/3.jpg b/MapControl/OfflineMaps/5/0/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/0/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/30.jpg b/MapControl/OfflineMaps/5/0/30.jpg deleted file mode 100644 index f47ed01..0000000 Binary files a/MapControl/OfflineMaps/5/0/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/31.jpg b/MapControl/OfflineMaps/5/0/31.jpg deleted file mode 100644 index 02c5fe2..0000000 Binary files a/MapControl/OfflineMaps/5/0/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/4.jpg b/MapControl/OfflineMaps/5/0/4.jpg deleted file mode 100644 index 9c786c4..0000000 Binary files a/MapControl/OfflineMaps/5/0/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/5.jpg b/MapControl/OfflineMaps/5/0/5.jpg deleted file mode 100644 index b2048f5..0000000 Binary files a/MapControl/OfflineMaps/5/0/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/6.jpg b/MapControl/OfflineMaps/5/0/6.jpg deleted file mode 100644 index 577ce41..0000000 Binary files a/MapControl/OfflineMaps/5/0/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/7.jpg b/MapControl/OfflineMaps/5/0/7.jpg deleted file mode 100644 index ef2bf25..0000000 Binary files a/MapControl/OfflineMaps/5/0/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/8.jpg b/MapControl/OfflineMaps/5/0/8.jpg deleted file mode 100644 index da0676e..0000000 Binary files a/MapControl/OfflineMaps/5/0/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/0/9.jpg b/MapControl/OfflineMaps/5/0/9.jpg deleted file mode 100644 index 2a0889f..0000000 Binary files a/MapControl/OfflineMaps/5/0/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/0.jpg b/MapControl/OfflineMaps/5/1/0.jpg deleted file mode 100644 index 9e9ffa2..0000000 Binary files a/MapControl/OfflineMaps/5/1/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/1.jpg b/MapControl/OfflineMaps/5/1/1.jpg deleted file mode 100644 index 08fe566..0000000 Binary files a/MapControl/OfflineMaps/5/1/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/10.jpg b/MapControl/OfflineMaps/5/1/10.jpg deleted file mode 100644 index 0dfe417..0000000 Binary files a/MapControl/OfflineMaps/5/1/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/11.jpg b/MapControl/OfflineMaps/5/1/11.jpg deleted file mode 100644 index 6a7c5f9..0000000 Binary files a/MapControl/OfflineMaps/5/1/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/12.jpg b/MapControl/OfflineMaps/5/1/12.jpg deleted file mode 100644 index 544f8a8..0000000 Binary files a/MapControl/OfflineMaps/5/1/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/13.jpg b/MapControl/OfflineMaps/5/1/13.jpg deleted file mode 100644 index 28a443e..0000000 Binary files a/MapControl/OfflineMaps/5/1/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/14.jpg b/MapControl/OfflineMaps/5/1/14.jpg deleted file mode 100644 index 69c22bd..0000000 Binary files a/MapControl/OfflineMaps/5/1/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/15.jpg b/MapControl/OfflineMaps/5/1/15.jpg deleted file mode 100644 index 2c70eca..0000000 Binary files a/MapControl/OfflineMaps/5/1/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/16.jpg b/MapControl/OfflineMaps/5/1/16.jpg deleted file mode 100644 index a1d1b69..0000000 Binary files a/MapControl/OfflineMaps/5/1/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/17.jpg b/MapControl/OfflineMaps/5/1/17.jpg deleted file mode 100644 index d8c3905..0000000 Binary files a/MapControl/OfflineMaps/5/1/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/18.jpg b/MapControl/OfflineMaps/5/1/18.jpg deleted file mode 100644 index cff5356..0000000 Binary files a/MapControl/OfflineMaps/5/1/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/19.jpg b/MapControl/OfflineMaps/5/1/19.jpg deleted file mode 100644 index 6072492..0000000 Binary files a/MapControl/OfflineMaps/5/1/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/2.jpg b/MapControl/OfflineMaps/5/1/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/1/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/20.jpg b/MapControl/OfflineMaps/5/1/20.jpg deleted file mode 100644 index 7ff914a..0000000 Binary files a/MapControl/OfflineMaps/5/1/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/21.jpg b/MapControl/OfflineMaps/5/1/21.jpg deleted file mode 100644 index 05e036e..0000000 Binary files a/MapControl/OfflineMaps/5/1/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/22.jpg b/MapControl/OfflineMaps/5/1/22.jpg deleted file mode 100644 index e238443..0000000 Binary files a/MapControl/OfflineMaps/5/1/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/23.jpg b/MapControl/OfflineMaps/5/1/23.jpg deleted file mode 100644 index a4f45c0..0000000 Binary files a/MapControl/OfflineMaps/5/1/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/24.jpg b/MapControl/OfflineMaps/5/1/24.jpg deleted file mode 100644 index d72791b..0000000 Binary files a/MapControl/OfflineMaps/5/1/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/25.jpg b/MapControl/OfflineMaps/5/1/25.jpg deleted file mode 100644 index 61118b7..0000000 Binary files a/MapControl/OfflineMaps/5/1/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/26.jpg b/MapControl/OfflineMaps/5/1/26.jpg deleted file mode 100644 index 492a064..0000000 Binary files a/MapControl/OfflineMaps/5/1/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/27.jpg b/MapControl/OfflineMaps/5/1/27.jpg deleted file mode 100644 index fd87784..0000000 Binary files a/MapControl/OfflineMaps/5/1/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/28.jpg b/MapControl/OfflineMaps/5/1/28.jpg deleted file mode 100644 index 89da9e1..0000000 Binary files a/MapControl/OfflineMaps/5/1/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/29.jpg b/MapControl/OfflineMaps/5/1/29.jpg deleted file mode 100644 index 07bc6dd..0000000 Binary files a/MapControl/OfflineMaps/5/1/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/3.jpg b/MapControl/OfflineMaps/5/1/3.jpg deleted file mode 100644 index d97a61b..0000000 Binary files a/MapControl/OfflineMaps/5/1/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/30.jpg b/MapControl/OfflineMaps/5/1/30.jpg deleted file mode 100644 index ff53021..0000000 Binary files a/MapControl/OfflineMaps/5/1/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/31.jpg b/MapControl/OfflineMaps/5/1/31.jpg deleted file mode 100644 index 738f841..0000000 Binary files a/MapControl/OfflineMaps/5/1/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/4.jpg b/MapControl/OfflineMaps/5/1/4.jpg deleted file mode 100644 index 8d54891..0000000 Binary files a/MapControl/OfflineMaps/5/1/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/5.jpg b/MapControl/OfflineMaps/5/1/5.jpg deleted file mode 100644 index d478295..0000000 Binary files a/MapControl/OfflineMaps/5/1/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/6.jpg b/MapControl/OfflineMaps/5/1/6.jpg deleted file mode 100644 index 1c68544..0000000 Binary files a/MapControl/OfflineMaps/5/1/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/7.jpg b/MapControl/OfflineMaps/5/1/7.jpg deleted file mode 100644 index 80e23aa..0000000 Binary files a/MapControl/OfflineMaps/5/1/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/8.jpg b/MapControl/OfflineMaps/5/1/8.jpg deleted file mode 100644 index 31b1dc5..0000000 Binary files a/MapControl/OfflineMaps/5/1/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/1/9.jpg b/MapControl/OfflineMaps/5/1/9.jpg deleted file mode 100644 index 9443d4d..0000000 Binary files a/MapControl/OfflineMaps/5/1/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/0.jpg b/MapControl/OfflineMaps/5/10/0.jpg deleted file mode 100644 index 6656362..0000000 Binary files a/MapControl/OfflineMaps/5/10/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/1.jpg b/MapControl/OfflineMaps/5/10/1.jpg deleted file mode 100644 index 3e3c730..0000000 Binary files a/MapControl/OfflineMaps/5/10/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/10.jpg b/MapControl/OfflineMaps/5/10/10.jpg deleted file mode 100644 index df3d9c9..0000000 Binary files a/MapControl/OfflineMaps/5/10/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/11.jpg b/MapControl/OfflineMaps/5/10/11.jpg deleted file mode 100644 index 5351551..0000000 Binary files a/MapControl/OfflineMaps/5/10/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/12.jpg b/MapControl/OfflineMaps/5/10/12.jpg deleted file mode 100644 index f1a4fab..0000000 Binary files a/MapControl/OfflineMaps/5/10/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/13.jpg b/MapControl/OfflineMaps/5/10/13.jpg deleted file mode 100644 index 13f0d4b..0000000 Binary files a/MapControl/OfflineMaps/5/10/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/14.jpg b/MapControl/OfflineMaps/5/10/14.jpg deleted file mode 100644 index e02d5f7..0000000 Binary files a/MapControl/OfflineMaps/5/10/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/15.jpg b/MapControl/OfflineMaps/5/10/15.jpg deleted file mode 100644 index f8c235f..0000000 Binary files a/MapControl/OfflineMaps/5/10/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/16.jpg b/MapControl/OfflineMaps/5/10/16.jpg deleted file mode 100644 index c4d7b2a..0000000 Binary files a/MapControl/OfflineMaps/5/10/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/17.jpg b/MapControl/OfflineMaps/5/10/17.jpg deleted file mode 100644 index de80899..0000000 Binary files a/MapControl/OfflineMaps/5/10/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/18.jpg b/MapControl/OfflineMaps/5/10/18.jpg deleted file mode 100644 index bfa43fd..0000000 Binary files a/MapControl/OfflineMaps/5/10/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/19.jpg b/MapControl/OfflineMaps/5/10/19.jpg deleted file mode 100644 index d93b0c3..0000000 Binary files a/MapControl/OfflineMaps/5/10/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/2.jpg b/MapControl/OfflineMaps/5/10/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/10/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/20.jpg b/MapControl/OfflineMaps/5/10/20.jpg deleted file mode 100644 index d40f2bb..0000000 Binary files a/MapControl/OfflineMaps/5/10/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/21.jpg b/MapControl/OfflineMaps/5/10/21.jpg deleted file mode 100644 index d9f53ae..0000000 Binary files a/MapControl/OfflineMaps/5/10/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/22.jpg b/MapControl/OfflineMaps/5/10/22.jpg deleted file mode 100644 index 21bbb69..0000000 Binary files a/MapControl/OfflineMaps/5/10/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/23.jpg b/MapControl/OfflineMaps/5/10/23.jpg deleted file mode 100644 index 221cbaa..0000000 Binary files a/MapControl/OfflineMaps/5/10/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/24.jpg b/MapControl/OfflineMaps/5/10/24.jpg deleted file mode 100644 index ca854e6..0000000 Binary files a/MapControl/OfflineMaps/5/10/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/25.jpg b/MapControl/OfflineMaps/5/10/25.jpg deleted file mode 100644 index 22b402b..0000000 Binary files a/MapControl/OfflineMaps/5/10/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/26.jpg b/MapControl/OfflineMaps/5/10/26.jpg deleted file mode 100644 index dc114d4..0000000 Binary files a/MapControl/OfflineMaps/5/10/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/27.jpg b/MapControl/OfflineMaps/5/10/27.jpg deleted file mode 100644 index b15bf53..0000000 Binary files a/MapControl/OfflineMaps/5/10/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/28.jpg b/MapControl/OfflineMaps/5/10/28.jpg deleted file mode 100644 index eac2cb6..0000000 Binary files a/MapControl/OfflineMaps/5/10/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/29.jpg b/MapControl/OfflineMaps/5/10/29.jpg deleted file mode 100644 index 9137c75..0000000 Binary files a/MapControl/OfflineMaps/5/10/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/3.jpg b/MapControl/OfflineMaps/5/10/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/10/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/30.jpg b/MapControl/OfflineMaps/5/10/30.jpg deleted file mode 100644 index a0c7c04..0000000 Binary files a/MapControl/OfflineMaps/5/10/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/31.jpg b/MapControl/OfflineMaps/5/10/31.jpg deleted file mode 100644 index 3da79f8..0000000 Binary files a/MapControl/OfflineMaps/5/10/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/4.jpg b/MapControl/OfflineMaps/5/10/4.jpg deleted file mode 100644 index f5306de..0000000 Binary files a/MapControl/OfflineMaps/5/10/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/5.jpg b/MapControl/OfflineMaps/5/10/5.jpg deleted file mode 100644 index 61891df..0000000 Binary files a/MapControl/OfflineMaps/5/10/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/6.jpg b/MapControl/OfflineMaps/5/10/6.jpg deleted file mode 100644 index 3c01bd4..0000000 Binary files a/MapControl/OfflineMaps/5/10/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/7.jpg b/MapControl/OfflineMaps/5/10/7.jpg deleted file mode 100644 index 6551fb1..0000000 Binary files a/MapControl/OfflineMaps/5/10/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/8.jpg b/MapControl/OfflineMaps/5/10/8.jpg deleted file mode 100644 index 7ae8ca7..0000000 Binary files a/MapControl/OfflineMaps/5/10/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/10/9.jpg b/MapControl/OfflineMaps/5/10/9.jpg deleted file mode 100644 index fb64a57..0000000 Binary files a/MapControl/OfflineMaps/5/10/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/0.jpg b/MapControl/OfflineMaps/5/11/0.jpg deleted file mode 100644 index 25677d3..0000000 Binary files a/MapControl/OfflineMaps/5/11/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/1.jpg b/MapControl/OfflineMaps/5/11/1.jpg deleted file mode 100644 index 885b48b..0000000 Binary files a/MapControl/OfflineMaps/5/11/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/10.jpg b/MapControl/OfflineMaps/5/11/10.jpg deleted file mode 100644 index b83ebb1..0000000 Binary files a/MapControl/OfflineMaps/5/11/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/11.jpg b/MapControl/OfflineMaps/5/11/11.jpg deleted file mode 100644 index 14aca48..0000000 Binary files a/MapControl/OfflineMaps/5/11/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/12.jpg b/MapControl/OfflineMaps/5/11/12.jpg deleted file mode 100644 index 67d2eb8..0000000 Binary files a/MapControl/OfflineMaps/5/11/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/13.jpg b/MapControl/OfflineMaps/5/11/13.jpg deleted file mode 100644 index f657436..0000000 Binary files a/MapControl/OfflineMaps/5/11/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/14.jpg b/MapControl/OfflineMaps/5/11/14.jpg deleted file mode 100644 index 7539c26..0000000 Binary files a/MapControl/OfflineMaps/5/11/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/15.jpg b/MapControl/OfflineMaps/5/11/15.jpg deleted file mode 100644 index a62faf9..0000000 Binary files a/MapControl/OfflineMaps/5/11/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/16.jpg b/MapControl/OfflineMaps/5/11/16.jpg deleted file mode 100644 index 5d5c451..0000000 Binary files a/MapControl/OfflineMaps/5/11/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/17.jpg b/MapControl/OfflineMaps/5/11/17.jpg deleted file mode 100644 index d3df392..0000000 Binary files a/MapControl/OfflineMaps/5/11/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/18.jpg b/MapControl/OfflineMaps/5/11/18.jpg deleted file mode 100644 index 6c8d442..0000000 Binary files a/MapControl/OfflineMaps/5/11/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/19.jpg b/MapControl/OfflineMaps/5/11/19.jpg deleted file mode 100644 index 58f6d13..0000000 Binary files a/MapControl/OfflineMaps/5/11/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/2.jpg b/MapControl/OfflineMaps/5/11/2.jpg deleted file mode 100644 index c30cefb..0000000 Binary files a/MapControl/OfflineMaps/5/11/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/20.jpg b/MapControl/OfflineMaps/5/11/20.jpg deleted file mode 100644 index 397bf6e..0000000 Binary files a/MapControl/OfflineMaps/5/11/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/21.jpg b/MapControl/OfflineMaps/5/11/21.jpg deleted file mode 100644 index 87c2466..0000000 Binary files a/MapControl/OfflineMaps/5/11/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/22.jpg b/MapControl/OfflineMaps/5/11/22.jpg deleted file mode 100644 index 910dce8..0000000 Binary files a/MapControl/OfflineMaps/5/11/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/23.jpg b/MapControl/OfflineMaps/5/11/23.jpg deleted file mode 100644 index d819a1e..0000000 Binary files a/MapControl/OfflineMaps/5/11/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/24.jpg b/MapControl/OfflineMaps/5/11/24.jpg deleted file mode 100644 index fd80f97..0000000 Binary files a/MapControl/OfflineMaps/5/11/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/25.jpg b/MapControl/OfflineMaps/5/11/25.jpg deleted file mode 100644 index a21ad64..0000000 Binary files a/MapControl/OfflineMaps/5/11/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/26.jpg b/MapControl/OfflineMaps/5/11/26.jpg deleted file mode 100644 index 40e5932..0000000 Binary files a/MapControl/OfflineMaps/5/11/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/27.jpg b/MapControl/OfflineMaps/5/11/27.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/11/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/28.jpg b/MapControl/OfflineMaps/5/11/28.jpg deleted file mode 100644 index ec38528..0000000 Binary files a/MapControl/OfflineMaps/5/11/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/29.jpg b/MapControl/OfflineMaps/5/11/29.jpg deleted file mode 100644 index c0ea9fe..0000000 Binary files a/MapControl/OfflineMaps/5/11/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/3.jpg b/MapControl/OfflineMaps/5/11/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/11/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/30.jpg b/MapControl/OfflineMaps/5/11/30.jpg deleted file mode 100644 index 567b95c..0000000 Binary files a/MapControl/OfflineMaps/5/11/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/31.jpg b/MapControl/OfflineMaps/5/11/31.jpg deleted file mode 100644 index a361d8d..0000000 Binary files a/MapControl/OfflineMaps/5/11/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/4.jpg b/MapControl/OfflineMaps/5/11/4.jpg deleted file mode 100644 index 5694f96..0000000 Binary files a/MapControl/OfflineMaps/5/11/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/5.jpg b/MapControl/OfflineMaps/5/11/5.jpg deleted file mode 100644 index 8af32ee..0000000 Binary files a/MapControl/OfflineMaps/5/11/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/6.jpg b/MapControl/OfflineMaps/5/11/6.jpg deleted file mode 100644 index 877356b..0000000 Binary files a/MapControl/OfflineMaps/5/11/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/7.jpg b/MapControl/OfflineMaps/5/11/7.jpg deleted file mode 100644 index 030eb63..0000000 Binary files a/MapControl/OfflineMaps/5/11/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/8.jpg b/MapControl/OfflineMaps/5/11/8.jpg deleted file mode 100644 index 54a3fd0..0000000 Binary files a/MapControl/OfflineMaps/5/11/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/11/9.jpg b/MapControl/OfflineMaps/5/11/9.jpg deleted file mode 100644 index c00f2c8..0000000 Binary files a/MapControl/OfflineMaps/5/11/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/0.jpg b/MapControl/OfflineMaps/5/12/0.jpg deleted file mode 100644 index 3fdbfd8..0000000 Binary files a/MapControl/OfflineMaps/5/12/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/1.jpg b/MapControl/OfflineMaps/5/12/1.jpg deleted file mode 100644 index fddf1ca..0000000 Binary files a/MapControl/OfflineMaps/5/12/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/10.jpg b/MapControl/OfflineMaps/5/12/10.jpg deleted file mode 100644 index 24f2a6d..0000000 Binary files a/MapControl/OfflineMaps/5/12/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/11.jpg b/MapControl/OfflineMaps/5/12/11.jpg deleted file mode 100644 index 4485cd4..0000000 Binary files a/MapControl/OfflineMaps/5/12/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/12.jpg b/MapControl/OfflineMaps/5/12/12.jpg deleted file mode 100644 index 1f63795..0000000 Binary files a/MapControl/OfflineMaps/5/12/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/13.jpg b/MapControl/OfflineMaps/5/12/13.jpg deleted file mode 100644 index 9ecfc6e..0000000 Binary files a/MapControl/OfflineMaps/5/12/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/14.jpg b/MapControl/OfflineMaps/5/12/14.jpg deleted file mode 100644 index cfdd3fa..0000000 Binary files a/MapControl/OfflineMaps/5/12/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/15.jpg b/MapControl/OfflineMaps/5/12/15.jpg deleted file mode 100644 index 6d15fd7..0000000 Binary files a/MapControl/OfflineMaps/5/12/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/16.jpg b/MapControl/OfflineMaps/5/12/16.jpg deleted file mode 100644 index 251f405..0000000 Binary files a/MapControl/OfflineMaps/5/12/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/17.jpg b/MapControl/OfflineMaps/5/12/17.jpg deleted file mode 100644 index 7f24aba..0000000 Binary files a/MapControl/OfflineMaps/5/12/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/18.jpg b/MapControl/OfflineMaps/5/12/18.jpg deleted file mode 100644 index 9871f9c..0000000 Binary files a/MapControl/OfflineMaps/5/12/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/19.jpg b/MapControl/OfflineMaps/5/12/19.jpg deleted file mode 100644 index 23c5d30..0000000 Binary files a/MapControl/OfflineMaps/5/12/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/2.jpg b/MapControl/OfflineMaps/5/12/2.jpg deleted file mode 100644 index aa0128b..0000000 Binary files a/MapControl/OfflineMaps/5/12/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/20.jpg b/MapControl/OfflineMaps/5/12/20.jpg deleted file mode 100644 index 7ceac55..0000000 Binary files a/MapControl/OfflineMaps/5/12/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/21.jpg b/MapControl/OfflineMaps/5/12/21.jpg deleted file mode 100644 index 3d91755..0000000 Binary files a/MapControl/OfflineMaps/5/12/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/22.jpg b/MapControl/OfflineMaps/5/12/22.jpg deleted file mode 100644 index c8325ea..0000000 Binary files a/MapControl/OfflineMaps/5/12/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/23.jpg b/MapControl/OfflineMaps/5/12/23.jpg deleted file mode 100644 index aca3fef..0000000 Binary files a/MapControl/OfflineMaps/5/12/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/24.jpg b/MapControl/OfflineMaps/5/12/24.jpg deleted file mode 100644 index 6e0ba9a..0000000 Binary files a/MapControl/OfflineMaps/5/12/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/25.jpg b/MapControl/OfflineMaps/5/12/25.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/12/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/26.jpg b/MapControl/OfflineMaps/5/12/26.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/12/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/27.jpg b/MapControl/OfflineMaps/5/12/27.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/12/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/28.jpg b/MapControl/OfflineMaps/5/12/28.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/12/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/29.jpg b/MapControl/OfflineMaps/5/12/29.jpg deleted file mode 100644 index 2ec6369..0000000 Binary files a/MapControl/OfflineMaps/5/12/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/3.jpg b/MapControl/OfflineMaps/5/12/3.jpg deleted file mode 100644 index 8db5be3..0000000 Binary files a/MapControl/OfflineMaps/5/12/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/30.jpg b/MapControl/OfflineMaps/5/12/30.jpg deleted file mode 100644 index d6ab83c..0000000 Binary files a/MapControl/OfflineMaps/5/12/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/31.jpg b/MapControl/OfflineMaps/5/12/31.jpg deleted file mode 100644 index 491806c..0000000 Binary files a/MapControl/OfflineMaps/5/12/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/4.jpg b/MapControl/OfflineMaps/5/12/4.jpg deleted file mode 100644 index e5a1272..0000000 Binary files a/MapControl/OfflineMaps/5/12/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/5.jpg b/MapControl/OfflineMaps/5/12/5.jpg deleted file mode 100644 index 8d643ec..0000000 Binary files a/MapControl/OfflineMaps/5/12/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/6.jpg b/MapControl/OfflineMaps/5/12/6.jpg deleted file mode 100644 index 4ab8481..0000000 Binary files a/MapControl/OfflineMaps/5/12/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/7.jpg b/MapControl/OfflineMaps/5/12/7.jpg deleted file mode 100644 index e29664c..0000000 Binary files a/MapControl/OfflineMaps/5/12/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/8.jpg b/MapControl/OfflineMaps/5/12/8.jpg deleted file mode 100644 index a7698ef..0000000 Binary files a/MapControl/OfflineMaps/5/12/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/12/9.jpg b/MapControl/OfflineMaps/5/12/9.jpg deleted file mode 100644 index 946b681..0000000 Binary files a/MapControl/OfflineMaps/5/12/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/0.jpg b/MapControl/OfflineMaps/5/13/0.jpg deleted file mode 100644 index 49c5f4b..0000000 Binary files a/MapControl/OfflineMaps/5/13/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/1.jpg b/MapControl/OfflineMaps/5/13/1.jpg deleted file mode 100644 index 361fa2d..0000000 Binary files a/MapControl/OfflineMaps/5/13/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/10.jpg b/MapControl/OfflineMaps/5/13/10.jpg deleted file mode 100644 index 58c09a2..0000000 Binary files a/MapControl/OfflineMaps/5/13/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/11.jpg b/MapControl/OfflineMaps/5/13/11.jpg deleted file mode 100644 index 6bc03d2..0000000 Binary files a/MapControl/OfflineMaps/5/13/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/12.jpg b/MapControl/OfflineMaps/5/13/12.jpg deleted file mode 100644 index ca94e2e..0000000 Binary files a/MapControl/OfflineMaps/5/13/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/13.jpg b/MapControl/OfflineMaps/5/13/13.jpg deleted file mode 100644 index 0508315..0000000 Binary files a/MapControl/OfflineMaps/5/13/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/14.jpg b/MapControl/OfflineMaps/5/13/14.jpg deleted file mode 100644 index 957404a..0000000 Binary files a/MapControl/OfflineMaps/5/13/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/15.jpg b/MapControl/OfflineMaps/5/13/15.jpg deleted file mode 100644 index a78ac5e..0000000 Binary files a/MapControl/OfflineMaps/5/13/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/16.jpg b/MapControl/OfflineMaps/5/13/16.jpg deleted file mode 100644 index 18a3d72..0000000 Binary files a/MapControl/OfflineMaps/5/13/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/17.jpg b/MapControl/OfflineMaps/5/13/17.jpg deleted file mode 100644 index 932aec8..0000000 Binary files a/MapControl/OfflineMaps/5/13/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/18.jpg b/MapControl/OfflineMaps/5/13/18.jpg deleted file mode 100644 index af3db9d..0000000 Binary files a/MapControl/OfflineMaps/5/13/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/19.jpg b/MapControl/OfflineMaps/5/13/19.jpg deleted file mode 100644 index a04b078..0000000 Binary files a/MapControl/OfflineMaps/5/13/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/2.jpg b/MapControl/OfflineMaps/5/13/2.jpg deleted file mode 100644 index 8e00ae0..0000000 Binary files a/MapControl/OfflineMaps/5/13/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/20.jpg b/MapControl/OfflineMaps/5/13/20.jpg deleted file mode 100644 index b54e633..0000000 Binary files a/MapControl/OfflineMaps/5/13/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/21.jpg b/MapControl/OfflineMaps/5/13/21.jpg deleted file mode 100644 index 6c4102c..0000000 Binary files a/MapControl/OfflineMaps/5/13/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/22.jpg b/MapControl/OfflineMaps/5/13/22.jpg deleted file mode 100644 index 5f0cf0e..0000000 Binary files a/MapControl/OfflineMaps/5/13/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/23.jpg b/MapControl/OfflineMaps/5/13/23.jpg deleted file mode 100644 index 82bd23e..0000000 Binary files a/MapControl/OfflineMaps/5/13/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/24.jpg b/MapControl/OfflineMaps/5/13/24.jpg deleted file mode 100644 index def6755..0000000 Binary files a/MapControl/OfflineMaps/5/13/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/25.jpg b/MapControl/OfflineMaps/5/13/25.jpg deleted file mode 100644 index 389adfb..0000000 Binary files a/MapControl/OfflineMaps/5/13/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/26.jpg b/MapControl/OfflineMaps/5/13/26.jpg deleted file mode 100644 index 369c58f..0000000 Binary files a/MapControl/OfflineMaps/5/13/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/27.jpg b/MapControl/OfflineMaps/5/13/27.jpg deleted file mode 100644 index 4c1ca40..0000000 Binary files a/MapControl/OfflineMaps/5/13/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/28.jpg b/MapControl/OfflineMaps/5/13/28.jpg deleted file mode 100644 index 69be815..0000000 Binary files a/MapControl/OfflineMaps/5/13/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/29.jpg b/MapControl/OfflineMaps/5/13/29.jpg deleted file mode 100644 index f9d1609..0000000 Binary files a/MapControl/OfflineMaps/5/13/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/3.jpg b/MapControl/OfflineMaps/5/13/3.jpg deleted file mode 100644 index 60e0faa..0000000 Binary files a/MapControl/OfflineMaps/5/13/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/30.jpg b/MapControl/OfflineMaps/5/13/30.jpg deleted file mode 100644 index 7eb25cb..0000000 Binary files a/MapControl/OfflineMaps/5/13/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/31.jpg b/MapControl/OfflineMaps/5/13/31.jpg deleted file mode 100644 index 8ec6d4b..0000000 Binary files a/MapControl/OfflineMaps/5/13/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/4.jpg b/MapControl/OfflineMaps/5/13/4.jpg deleted file mode 100644 index 6daa481..0000000 Binary files a/MapControl/OfflineMaps/5/13/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/5.jpg b/MapControl/OfflineMaps/5/13/5.jpg deleted file mode 100644 index e2c18fc..0000000 Binary files a/MapControl/OfflineMaps/5/13/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/6.jpg b/MapControl/OfflineMaps/5/13/6.jpg deleted file mode 100644 index cb8617d..0000000 Binary files a/MapControl/OfflineMaps/5/13/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/7.jpg b/MapControl/OfflineMaps/5/13/7.jpg deleted file mode 100644 index fc828e1..0000000 Binary files a/MapControl/OfflineMaps/5/13/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/8.jpg b/MapControl/OfflineMaps/5/13/8.jpg deleted file mode 100644 index 08707d0..0000000 Binary files a/MapControl/OfflineMaps/5/13/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/13/9.jpg b/MapControl/OfflineMaps/5/13/9.jpg deleted file mode 100644 index f17fc43..0000000 Binary files a/MapControl/OfflineMaps/5/13/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/0.jpg b/MapControl/OfflineMaps/5/14/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/14/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/1.jpg b/MapControl/OfflineMaps/5/14/1.jpg deleted file mode 100644 index b441079..0000000 Binary files a/MapControl/OfflineMaps/5/14/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/10.jpg b/MapControl/OfflineMaps/5/14/10.jpg deleted file mode 100644 index a5a8208..0000000 Binary files a/MapControl/OfflineMaps/5/14/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/11.jpg b/MapControl/OfflineMaps/5/14/11.jpg deleted file mode 100644 index 155b769..0000000 Binary files a/MapControl/OfflineMaps/5/14/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/12.jpg b/MapControl/OfflineMaps/5/14/12.jpg deleted file mode 100644 index 31074db..0000000 Binary files a/MapControl/OfflineMaps/5/14/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/13.jpg b/MapControl/OfflineMaps/5/14/13.jpg deleted file mode 100644 index 5dc0344..0000000 Binary files a/MapControl/OfflineMaps/5/14/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/14.jpg b/MapControl/OfflineMaps/5/14/14.jpg deleted file mode 100644 index 06e82bc..0000000 Binary files a/MapControl/OfflineMaps/5/14/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/15.jpg b/MapControl/OfflineMaps/5/14/15.jpg deleted file mode 100644 index ba5d781..0000000 Binary files a/MapControl/OfflineMaps/5/14/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/16.jpg b/MapControl/OfflineMaps/5/14/16.jpg deleted file mode 100644 index 5a6ae92..0000000 Binary files a/MapControl/OfflineMaps/5/14/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/17.jpg b/MapControl/OfflineMaps/5/14/17.jpg deleted file mode 100644 index b8c6277..0000000 Binary files a/MapControl/OfflineMaps/5/14/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/18.jpg b/MapControl/OfflineMaps/5/14/18.jpg deleted file mode 100644 index 524f446..0000000 Binary files a/MapControl/OfflineMaps/5/14/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/19.jpg b/MapControl/OfflineMaps/5/14/19.jpg deleted file mode 100644 index 0f0ac12..0000000 Binary files a/MapControl/OfflineMaps/5/14/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/2.jpg b/MapControl/OfflineMaps/5/14/2.jpg deleted file mode 100644 index 49d8718..0000000 Binary files a/MapControl/OfflineMaps/5/14/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/20.jpg b/MapControl/OfflineMaps/5/14/20.jpg deleted file mode 100644 index 9daa231..0000000 Binary files a/MapControl/OfflineMaps/5/14/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/21.jpg b/MapControl/OfflineMaps/5/14/21.jpg deleted file mode 100644 index de4b814..0000000 Binary files a/MapControl/OfflineMaps/5/14/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/22.jpg b/MapControl/OfflineMaps/5/14/22.jpg deleted file mode 100644 index 58095bf..0000000 Binary files a/MapControl/OfflineMaps/5/14/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/23.jpg b/MapControl/OfflineMaps/5/14/23.jpg deleted file mode 100644 index 180656d..0000000 Binary files a/MapControl/OfflineMaps/5/14/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/24.jpg b/MapControl/OfflineMaps/5/14/24.jpg deleted file mode 100644 index 9e91d15..0000000 Binary files a/MapControl/OfflineMaps/5/14/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/25.jpg b/MapControl/OfflineMaps/5/14/25.jpg deleted file mode 100644 index 0cfac26..0000000 Binary files a/MapControl/OfflineMaps/5/14/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/26.jpg b/MapControl/OfflineMaps/5/14/26.jpg deleted file mode 100644 index b5b8a70..0000000 Binary files a/MapControl/OfflineMaps/5/14/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/27.jpg b/MapControl/OfflineMaps/5/14/27.jpg deleted file mode 100644 index 5a5514a..0000000 Binary files a/MapControl/OfflineMaps/5/14/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/28.jpg b/MapControl/OfflineMaps/5/14/28.jpg deleted file mode 100644 index f211cde..0000000 Binary files a/MapControl/OfflineMaps/5/14/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/29.jpg b/MapControl/OfflineMaps/5/14/29.jpg deleted file mode 100644 index b0148df..0000000 Binary files a/MapControl/OfflineMaps/5/14/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/3.jpg b/MapControl/OfflineMaps/5/14/3.jpg deleted file mode 100644 index 41cbebe..0000000 Binary files a/MapControl/OfflineMaps/5/14/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/30.jpg b/MapControl/OfflineMaps/5/14/30.jpg deleted file mode 100644 index ced7aa7..0000000 Binary files a/MapControl/OfflineMaps/5/14/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/31.jpg b/MapControl/OfflineMaps/5/14/31.jpg deleted file mode 100644 index 065970e..0000000 Binary files a/MapControl/OfflineMaps/5/14/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/4.jpg b/MapControl/OfflineMaps/5/14/4.jpg deleted file mode 100644 index eac8dd5..0000000 Binary files a/MapControl/OfflineMaps/5/14/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/5.jpg b/MapControl/OfflineMaps/5/14/5.jpg deleted file mode 100644 index f1888da..0000000 Binary files a/MapControl/OfflineMaps/5/14/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/6.jpg b/MapControl/OfflineMaps/5/14/6.jpg deleted file mode 100644 index 90dec1d..0000000 Binary files a/MapControl/OfflineMaps/5/14/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/7.jpg b/MapControl/OfflineMaps/5/14/7.jpg deleted file mode 100644 index 547fe8b..0000000 Binary files a/MapControl/OfflineMaps/5/14/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/8.jpg b/MapControl/OfflineMaps/5/14/8.jpg deleted file mode 100644 index 97b2c60..0000000 Binary files a/MapControl/OfflineMaps/5/14/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/14/9.jpg b/MapControl/OfflineMaps/5/14/9.jpg deleted file mode 100644 index 23e0d00..0000000 Binary files a/MapControl/OfflineMaps/5/14/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/0.jpg b/MapControl/OfflineMaps/5/15/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/15/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/1.jpg b/MapControl/OfflineMaps/5/15/1.jpg deleted file mode 100644 index 3db31ee..0000000 Binary files a/MapControl/OfflineMaps/5/15/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/10.jpg b/MapControl/OfflineMaps/5/15/10.jpg deleted file mode 100644 index bb4765a..0000000 Binary files a/MapControl/OfflineMaps/5/15/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/11.jpg b/MapControl/OfflineMaps/5/15/11.jpg deleted file mode 100644 index a47c73d..0000000 Binary files a/MapControl/OfflineMaps/5/15/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/12.jpg b/MapControl/OfflineMaps/5/15/12.jpg deleted file mode 100644 index 4857409..0000000 Binary files a/MapControl/OfflineMaps/5/15/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/13.jpg b/MapControl/OfflineMaps/5/15/13.jpg deleted file mode 100644 index 572bcfd..0000000 Binary files a/MapControl/OfflineMaps/5/15/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/14.jpg b/MapControl/OfflineMaps/5/15/14.jpg deleted file mode 100644 index 4b79bc0..0000000 Binary files a/MapControl/OfflineMaps/5/15/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/15.jpg b/MapControl/OfflineMaps/5/15/15.jpg deleted file mode 100644 index fa49028..0000000 Binary files a/MapControl/OfflineMaps/5/15/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/16.jpg b/MapControl/OfflineMaps/5/15/16.jpg deleted file mode 100644 index 074281c..0000000 Binary files a/MapControl/OfflineMaps/5/15/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/17.jpg b/MapControl/OfflineMaps/5/15/17.jpg deleted file mode 100644 index 91c9ac9..0000000 Binary files a/MapControl/OfflineMaps/5/15/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/18.jpg b/MapControl/OfflineMaps/5/15/18.jpg deleted file mode 100644 index 88e2a11..0000000 Binary files a/MapControl/OfflineMaps/5/15/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/19.jpg b/MapControl/OfflineMaps/5/15/19.jpg deleted file mode 100644 index 88a7cf8..0000000 Binary files a/MapControl/OfflineMaps/5/15/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/2.jpg b/MapControl/OfflineMaps/5/15/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/15/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/20.jpg b/MapControl/OfflineMaps/5/15/20.jpg deleted file mode 100644 index 323796a..0000000 Binary files a/MapControl/OfflineMaps/5/15/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/21.jpg b/MapControl/OfflineMaps/5/15/21.jpg deleted file mode 100644 index bf4f056..0000000 Binary files a/MapControl/OfflineMaps/5/15/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/22.jpg b/MapControl/OfflineMaps/5/15/22.jpg deleted file mode 100644 index 7db0406..0000000 Binary files a/MapControl/OfflineMaps/5/15/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/23.jpg b/MapControl/OfflineMaps/5/15/23.jpg deleted file mode 100644 index 80d1b1e..0000000 Binary files a/MapControl/OfflineMaps/5/15/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/24.jpg b/MapControl/OfflineMaps/5/15/24.jpg deleted file mode 100644 index 60f1ac8..0000000 Binary files a/MapControl/OfflineMaps/5/15/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/25.jpg b/MapControl/OfflineMaps/5/15/25.jpg deleted file mode 100644 index b12a900..0000000 Binary files a/MapControl/OfflineMaps/5/15/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/26.jpg b/MapControl/OfflineMaps/5/15/26.jpg deleted file mode 100644 index d2d97fc..0000000 Binary files a/MapControl/OfflineMaps/5/15/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/27.jpg b/MapControl/OfflineMaps/5/15/27.jpg deleted file mode 100644 index 672ca35..0000000 Binary files a/MapControl/OfflineMaps/5/15/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/28.jpg b/MapControl/OfflineMaps/5/15/28.jpg deleted file mode 100644 index 736d7dc..0000000 Binary files a/MapControl/OfflineMaps/5/15/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/29.jpg b/MapControl/OfflineMaps/5/15/29.jpg deleted file mode 100644 index b7e19bf..0000000 Binary files a/MapControl/OfflineMaps/5/15/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/3.jpg b/MapControl/OfflineMaps/5/15/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/15/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/30.jpg b/MapControl/OfflineMaps/5/15/30.jpg deleted file mode 100644 index f0151ec..0000000 Binary files a/MapControl/OfflineMaps/5/15/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/31.jpg b/MapControl/OfflineMaps/5/15/31.jpg deleted file mode 100644 index 825c311..0000000 Binary files a/MapControl/OfflineMaps/5/15/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/4.jpg b/MapControl/OfflineMaps/5/15/4.jpg deleted file mode 100644 index ba529be..0000000 Binary files a/MapControl/OfflineMaps/5/15/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/5.jpg b/MapControl/OfflineMaps/5/15/5.jpg deleted file mode 100644 index e781a32..0000000 Binary files a/MapControl/OfflineMaps/5/15/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/6.jpg b/MapControl/OfflineMaps/5/15/6.jpg deleted file mode 100644 index de0dad1..0000000 Binary files a/MapControl/OfflineMaps/5/15/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/7.jpg b/MapControl/OfflineMaps/5/15/7.jpg deleted file mode 100644 index 16c1cf4..0000000 Binary files a/MapControl/OfflineMaps/5/15/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/8.jpg b/MapControl/OfflineMaps/5/15/8.jpg deleted file mode 100644 index 8e623bf..0000000 Binary files a/MapControl/OfflineMaps/5/15/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/15/9.jpg b/MapControl/OfflineMaps/5/15/9.jpg deleted file mode 100644 index b4a09bf..0000000 Binary files a/MapControl/OfflineMaps/5/15/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/0.jpg b/MapControl/OfflineMaps/5/16/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/16/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/1.jpg b/MapControl/OfflineMaps/5/16/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/16/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/10.jpg b/MapControl/OfflineMaps/5/16/10.jpg deleted file mode 100644 index 5915c44..0000000 Binary files a/MapControl/OfflineMaps/5/16/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/11.jpg b/MapControl/OfflineMaps/5/16/11.jpg deleted file mode 100644 index 7c10dc0..0000000 Binary files a/MapControl/OfflineMaps/5/16/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/12.jpg b/MapControl/OfflineMaps/5/16/12.jpg deleted file mode 100644 index 3c2656a..0000000 Binary files a/MapControl/OfflineMaps/5/16/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/13.jpg b/MapControl/OfflineMaps/5/16/13.jpg deleted file mode 100644 index 608abac..0000000 Binary files a/MapControl/OfflineMaps/5/16/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/14.jpg b/MapControl/OfflineMaps/5/16/14.jpg deleted file mode 100644 index aa1afca..0000000 Binary files a/MapControl/OfflineMaps/5/16/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/15.jpg b/MapControl/OfflineMaps/5/16/15.jpg deleted file mode 100644 index 945b66b..0000000 Binary files a/MapControl/OfflineMaps/5/16/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/16.jpg b/MapControl/OfflineMaps/5/16/16.jpg deleted file mode 100644 index 02ed6f3..0000000 Binary files a/MapControl/OfflineMaps/5/16/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/17.jpg b/MapControl/OfflineMaps/5/16/17.jpg deleted file mode 100644 index 6ee0030..0000000 Binary files a/MapControl/OfflineMaps/5/16/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/18.jpg b/MapControl/OfflineMaps/5/16/18.jpg deleted file mode 100644 index a1b8561..0000000 Binary files a/MapControl/OfflineMaps/5/16/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/19.jpg b/MapControl/OfflineMaps/5/16/19.jpg deleted file mode 100644 index 7d15248..0000000 Binary files a/MapControl/OfflineMaps/5/16/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/2.jpg b/MapControl/OfflineMaps/5/16/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/16/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/20.jpg b/MapControl/OfflineMaps/5/16/20.jpg deleted file mode 100644 index ef3e9ad..0000000 Binary files a/MapControl/OfflineMaps/5/16/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/21.jpg b/MapControl/OfflineMaps/5/16/21.jpg deleted file mode 100644 index 5410580..0000000 Binary files a/MapControl/OfflineMaps/5/16/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/22.jpg b/MapControl/OfflineMaps/5/16/22.jpg deleted file mode 100644 index 2700411..0000000 Binary files a/MapControl/OfflineMaps/5/16/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/23.jpg b/MapControl/OfflineMaps/5/16/23.jpg deleted file mode 100644 index 88f2222..0000000 Binary files a/MapControl/OfflineMaps/5/16/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/24.jpg b/MapControl/OfflineMaps/5/16/24.jpg deleted file mode 100644 index 4faafe8..0000000 Binary files a/MapControl/OfflineMaps/5/16/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/25.jpg b/MapControl/OfflineMaps/5/16/25.jpg deleted file mode 100644 index 3f04dfa..0000000 Binary files a/MapControl/OfflineMaps/5/16/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/26.jpg b/MapControl/OfflineMaps/5/16/26.jpg deleted file mode 100644 index 61ebfb8..0000000 Binary files a/MapControl/OfflineMaps/5/16/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/27.jpg b/MapControl/OfflineMaps/5/16/27.jpg deleted file mode 100644 index bf0fcd4..0000000 Binary files a/MapControl/OfflineMaps/5/16/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/28.jpg b/MapControl/OfflineMaps/5/16/28.jpg deleted file mode 100644 index 9674a14..0000000 Binary files a/MapControl/OfflineMaps/5/16/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/29.jpg b/MapControl/OfflineMaps/5/16/29.jpg deleted file mode 100644 index 73cc263..0000000 Binary files a/MapControl/OfflineMaps/5/16/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/3.jpg b/MapControl/OfflineMaps/5/16/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/16/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/30.jpg b/MapControl/OfflineMaps/5/16/30.jpg deleted file mode 100644 index d2fc60f..0000000 Binary files a/MapControl/OfflineMaps/5/16/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/31.jpg b/MapControl/OfflineMaps/5/16/31.jpg deleted file mode 100644 index 5b53507..0000000 Binary files a/MapControl/OfflineMaps/5/16/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/4.jpg b/MapControl/OfflineMaps/5/16/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/16/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/5.jpg b/MapControl/OfflineMaps/5/16/5.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/16/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/6.jpg b/MapControl/OfflineMaps/5/16/6.jpg deleted file mode 100644 index f4e3749..0000000 Binary files a/MapControl/OfflineMaps/5/16/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/7.jpg b/MapControl/OfflineMaps/5/16/7.jpg deleted file mode 100644 index 0d54dc3..0000000 Binary files a/MapControl/OfflineMaps/5/16/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/8.jpg b/MapControl/OfflineMaps/5/16/8.jpg deleted file mode 100644 index 8d624e0..0000000 Binary files a/MapControl/OfflineMaps/5/16/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/16/9.jpg b/MapControl/OfflineMaps/5/16/9.jpg deleted file mode 100644 index 5223a46..0000000 Binary files a/MapControl/OfflineMaps/5/16/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/0.jpg b/MapControl/OfflineMaps/5/17/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/17/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/1.jpg b/MapControl/OfflineMaps/5/17/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/17/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/10.jpg b/MapControl/OfflineMaps/5/17/10.jpg deleted file mode 100644 index d84d873..0000000 Binary files a/MapControl/OfflineMaps/5/17/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/11.jpg b/MapControl/OfflineMaps/5/17/11.jpg deleted file mode 100644 index 84f3200..0000000 Binary files a/MapControl/OfflineMaps/5/17/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/12.jpg b/MapControl/OfflineMaps/5/17/12.jpg deleted file mode 100644 index fd717a4..0000000 Binary files a/MapControl/OfflineMaps/5/17/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/13.jpg b/MapControl/OfflineMaps/5/17/13.jpg deleted file mode 100644 index 502ed96..0000000 Binary files a/MapControl/OfflineMaps/5/17/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/14.jpg b/MapControl/OfflineMaps/5/17/14.jpg deleted file mode 100644 index 552de0e..0000000 Binary files a/MapControl/OfflineMaps/5/17/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/15.jpg b/MapControl/OfflineMaps/5/17/15.jpg deleted file mode 100644 index 667e8ee..0000000 Binary files a/MapControl/OfflineMaps/5/17/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/16.jpg b/MapControl/OfflineMaps/5/17/16.jpg deleted file mode 100644 index 6dc500e..0000000 Binary files a/MapControl/OfflineMaps/5/17/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/17.jpg b/MapControl/OfflineMaps/5/17/17.jpg deleted file mode 100644 index 133f558..0000000 Binary files a/MapControl/OfflineMaps/5/17/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/18.jpg b/MapControl/OfflineMaps/5/17/18.jpg deleted file mode 100644 index 5a573fa..0000000 Binary files a/MapControl/OfflineMaps/5/17/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/19.jpg b/MapControl/OfflineMaps/5/17/19.jpg deleted file mode 100644 index 8adca01..0000000 Binary files a/MapControl/OfflineMaps/5/17/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/2.jpg b/MapControl/OfflineMaps/5/17/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/17/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/20.jpg b/MapControl/OfflineMaps/5/17/20.jpg deleted file mode 100644 index 1e60fda..0000000 Binary files a/MapControl/OfflineMaps/5/17/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/21.jpg b/MapControl/OfflineMaps/5/17/21.jpg deleted file mode 100644 index 1a009b3..0000000 Binary files a/MapControl/OfflineMaps/5/17/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/22.jpg b/MapControl/OfflineMaps/5/17/22.jpg deleted file mode 100644 index e3bfdb1..0000000 Binary files a/MapControl/OfflineMaps/5/17/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/23.jpg b/MapControl/OfflineMaps/5/17/23.jpg deleted file mode 100644 index 3769a32..0000000 Binary files a/MapControl/OfflineMaps/5/17/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/24.jpg b/MapControl/OfflineMaps/5/17/24.jpg deleted file mode 100644 index 3a7093a..0000000 Binary files a/MapControl/OfflineMaps/5/17/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/25.jpg b/MapControl/OfflineMaps/5/17/25.jpg deleted file mode 100644 index 79dd0d7..0000000 Binary files a/MapControl/OfflineMaps/5/17/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/26.jpg b/MapControl/OfflineMaps/5/17/26.jpg deleted file mode 100644 index 9db51e2..0000000 Binary files a/MapControl/OfflineMaps/5/17/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/27.jpg b/MapControl/OfflineMaps/5/17/27.jpg deleted file mode 100644 index 5f46d38..0000000 Binary files a/MapControl/OfflineMaps/5/17/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/28.jpg b/MapControl/OfflineMaps/5/17/28.jpg deleted file mode 100644 index 2a9f9b4..0000000 Binary files a/MapControl/OfflineMaps/5/17/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/29.jpg b/MapControl/OfflineMaps/5/17/29.jpg deleted file mode 100644 index fd77bd0..0000000 Binary files a/MapControl/OfflineMaps/5/17/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/3.jpg b/MapControl/OfflineMaps/5/17/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/17/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/30.jpg b/MapControl/OfflineMaps/5/17/30.jpg deleted file mode 100644 index 849ff6c..0000000 Binary files a/MapControl/OfflineMaps/5/17/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/31.jpg b/MapControl/OfflineMaps/5/17/31.jpg deleted file mode 100644 index 9cbe365..0000000 Binary files a/MapControl/OfflineMaps/5/17/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/4.jpg b/MapControl/OfflineMaps/5/17/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/17/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/5.jpg b/MapControl/OfflineMaps/5/17/5.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/17/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/6.jpg b/MapControl/OfflineMaps/5/17/6.jpg deleted file mode 100644 index 1fd444e..0000000 Binary files a/MapControl/OfflineMaps/5/17/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/7.jpg b/MapControl/OfflineMaps/5/17/7.jpg deleted file mode 100644 index d34b92f..0000000 Binary files a/MapControl/OfflineMaps/5/17/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/8.jpg b/MapControl/OfflineMaps/5/17/8.jpg deleted file mode 100644 index 6f26660..0000000 Binary files a/MapControl/OfflineMaps/5/17/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/17/9.jpg b/MapControl/OfflineMaps/5/17/9.jpg deleted file mode 100644 index 2a55bb8..0000000 Binary files a/MapControl/OfflineMaps/5/17/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/0.jpg b/MapControl/OfflineMaps/5/18/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/18/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/1.jpg b/MapControl/OfflineMaps/5/18/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/18/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/10.jpg b/MapControl/OfflineMaps/5/18/10.jpg deleted file mode 100644 index 033a7bb..0000000 Binary files a/MapControl/OfflineMaps/5/18/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/11.jpg b/MapControl/OfflineMaps/5/18/11.jpg deleted file mode 100644 index 36c843d..0000000 Binary files a/MapControl/OfflineMaps/5/18/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/12.jpg b/MapControl/OfflineMaps/5/18/12.jpg deleted file mode 100644 index 6f8c492..0000000 Binary files a/MapControl/OfflineMaps/5/18/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/13.jpg b/MapControl/OfflineMaps/5/18/13.jpg deleted file mode 100644 index 8167670..0000000 Binary files a/MapControl/OfflineMaps/5/18/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/14.jpg b/MapControl/OfflineMaps/5/18/14.jpg deleted file mode 100644 index b62bd55..0000000 Binary files a/MapControl/OfflineMaps/5/18/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/15.jpg b/MapControl/OfflineMaps/5/18/15.jpg deleted file mode 100644 index 664ddd2..0000000 Binary files a/MapControl/OfflineMaps/5/18/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/16.jpg b/MapControl/OfflineMaps/5/18/16.jpg deleted file mode 100644 index 64e5de0..0000000 Binary files a/MapControl/OfflineMaps/5/18/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/17.jpg b/MapControl/OfflineMaps/5/18/17.jpg deleted file mode 100644 index 945d9b6..0000000 Binary files a/MapControl/OfflineMaps/5/18/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/18.jpg b/MapControl/OfflineMaps/5/18/18.jpg deleted file mode 100644 index e7ef2f6..0000000 Binary files a/MapControl/OfflineMaps/5/18/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/19.jpg b/MapControl/OfflineMaps/5/18/19.jpg deleted file mode 100644 index 2783cbc..0000000 Binary files a/MapControl/OfflineMaps/5/18/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/2.jpg b/MapControl/OfflineMaps/5/18/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/18/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/20.jpg b/MapControl/OfflineMaps/5/18/20.jpg deleted file mode 100644 index 9c1138d..0000000 Binary files a/MapControl/OfflineMaps/5/18/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/21.jpg b/MapControl/OfflineMaps/5/18/21.jpg deleted file mode 100644 index 5e2ecc1..0000000 Binary files a/MapControl/OfflineMaps/5/18/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/22.jpg b/MapControl/OfflineMaps/5/18/22.jpg deleted file mode 100644 index be0b5c0..0000000 Binary files a/MapControl/OfflineMaps/5/18/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/23.jpg b/MapControl/OfflineMaps/5/18/23.jpg deleted file mode 100644 index cfcfcd9..0000000 Binary files a/MapControl/OfflineMaps/5/18/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/24.jpg b/MapControl/OfflineMaps/5/18/24.jpg deleted file mode 100644 index fb510d6..0000000 Binary files a/MapControl/OfflineMaps/5/18/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/25.jpg b/MapControl/OfflineMaps/5/18/25.jpg deleted file mode 100644 index 9442973..0000000 Binary files a/MapControl/OfflineMaps/5/18/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/26.jpg b/MapControl/OfflineMaps/5/18/26.jpg deleted file mode 100644 index 5bbb026..0000000 Binary files a/MapControl/OfflineMaps/5/18/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/27.jpg b/MapControl/OfflineMaps/5/18/27.jpg deleted file mode 100644 index e1a7303..0000000 Binary files a/MapControl/OfflineMaps/5/18/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/28.jpg b/MapControl/OfflineMaps/5/18/28.jpg deleted file mode 100644 index 66140f6..0000000 Binary files a/MapControl/OfflineMaps/5/18/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/29.jpg b/MapControl/OfflineMaps/5/18/29.jpg deleted file mode 100644 index 3060f4c..0000000 Binary files a/MapControl/OfflineMaps/5/18/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/3.jpg b/MapControl/OfflineMaps/5/18/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/18/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/30.jpg b/MapControl/OfflineMaps/5/18/30.jpg deleted file mode 100644 index 8c5c7ef..0000000 Binary files a/MapControl/OfflineMaps/5/18/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/31.jpg b/MapControl/OfflineMaps/5/18/31.jpg deleted file mode 100644 index 88020cb..0000000 Binary files a/MapControl/OfflineMaps/5/18/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/4.jpg b/MapControl/OfflineMaps/5/18/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/18/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/5.jpg b/MapControl/OfflineMaps/5/18/5.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/18/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/6.jpg b/MapControl/OfflineMaps/5/18/6.jpg deleted file mode 100644 index 5612d98..0000000 Binary files a/MapControl/OfflineMaps/5/18/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/7.jpg b/MapControl/OfflineMaps/5/18/7.jpg deleted file mode 100644 index 8cf1fe7..0000000 Binary files a/MapControl/OfflineMaps/5/18/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/8.jpg b/MapControl/OfflineMaps/5/18/8.jpg deleted file mode 100644 index 976c626..0000000 Binary files a/MapControl/OfflineMaps/5/18/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/18/9.jpg b/MapControl/OfflineMaps/5/18/9.jpg deleted file mode 100644 index 8b26153..0000000 Binary files a/MapControl/OfflineMaps/5/18/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/0.jpg b/MapControl/OfflineMaps/5/19/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/19/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/1.jpg b/MapControl/OfflineMaps/5/19/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/19/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/10.jpg b/MapControl/OfflineMaps/5/19/10.jpg deleted file mode 100644 index 6d8e295..0000000 Binary files a/MapControl/OfflineMaps/5/19/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/11.jpg b/MapControl/OfflineMaps/5/19/11.jpg deleted file mode 100644 index e560c38..0000000 Binary files a/MapControl/OfflineMaps/5/19/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/12.jpg b/MapControl/OfflineMaps/5/19/12.jpg deleted file mode 100644 index 2a17153..0000000 Binary files a/MapControl/OfflineMaps/5/19/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/13.jpg b/MapControl/OfflineMaps/5/19/13.jpg deleted file mode 100644 index 3a5c942..0000000 Binary files a/MapControl/OfflineMaps/5/19/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/14.jpg b/MapControl/OfflineMaps/5/19/14.jpg deleted file mode 100644 index 3b3a9a4..0000000 Binary files a/MapControl/OfflineMaps/5/19/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/15.jpg b/MapControl/OfflineMaps/5/19/15.jpg deleted file mode 100644 index 4975f64..0000000 Binary files a/MapControl/OfflineMaps/5/19/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/16.jpg b/MapControl/OfflineMaps/5/19/16.jpg deleted file mode 100644 index 483d522..0000000 Binary files a/MapControl/OfflineMaps/5/19/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/17.jpg b/MapControl/OfflineMaps/5/19/17.jpg deleted file mode 100644 index 5fd8b7e..0000000 Binary files a/MapControl/OfflineMaps/5/19/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/18.jpg b/MapControl/OfflineMaps/5/19/18.jpg deleted file mode 100644 index d0867d0..0000000 Binary files a/MapControl/OfflineMaps/5/19/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/19.jpg b/MapControl/OfflineMaps/5/19/19.jpg deleted file mode 100644 index eff4310..0000000 Binary files a/MapControl/OfflineMaps/5/19/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/2.jpg b/MapControl/OfflineMaps/5/19/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/19/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/20.jpg b/MapControl/OfflineMaps/5/19/20.jpg deleted file mode 100644 index bdbcc95..0000000 Binary files a/MapControl/OfflineMaps/5/19/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/21.jpg b/MapControl/OfflineMaps/5/19/21.jpg deleted file mode 100644 index 54f57f2..0000000 Binary files a/MapControl/OfflineMaps/5/19/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/22.jpg b/MapControl/OfflineMaps/5/19/22.jpg deleted file mode 100644 index f04d282..0000000 Binary files a/MapControl/OfflineMaps/5/19/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/23.jpg b/MapControl/OfflineMaps/5/19/23.jpg deleted file mode 100644 index 4d10540..0000000 Binary files a/MapControl/OfflineMaps/5/19/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/24.jpg b/MapControl/OfflineMaps/5/19/24.jpg deleted file mode 100644 index 2a4ceeb..0000000 Binary files a/MapControl/OfflineMaps/5/19/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/25.jpg b/MapControl/OfflineMaps/5/19/25.jpg deleted file mode 100644 index c3f1f69..0000000 Binary files a/MapControl/OfflineMaps/5/19/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/26.jpg b/MapControl/OfflineMaps/5/19/26.jpg deleted file mode 100644 index 34c61d1..0000000 Binary files a/MapControl/OfflineMaps/5/19/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/27.jpg b/MapControl/OfflineMaps/5/19/27.jpg deleted file mode 100644 index 273ce24..0000000 Binary files a/MapControl/OfflineMaps/5/19/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/28.jpg b/MapControl/OfflineMaps/5/19/28.jpg deleted file mode 100644 index 71a1fb5..0000000 Binary files a/MapControl/OfflineMaps/5/19/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/29.jpg b/MapControl/OfflineMaps/5/19/29.jpg deleted file mode 100644 index 7790b84..0000000 Binary files a/MapControl/OfflineMaps/5/19/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/3.jpg b/MapControl/OfflineMaps/5/19/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/19/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/30.jpg b/MapControl/OfflineMaps/5/19/30.jpg deleted file mode 100644 index 3295c1a..0000000 Binary files a/MapControl/OfflineMaps/5/19/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/31.jpg b/MapControl/OfflineMaps/5/19/31.jpg deleted file mode 100644 index 2f45d4a..0000000 Binary files a/MapControl/OfflineMaps/5/19/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/4.jpg b/MapControl/OfflineMaps/5/19/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/19/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/5.jpg b/MapControl/OfflineMaps/5/19/5.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/19/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/6.jpg b/MapControl/OfflineMaps/5/19/6.jpg deleted file mode 100644 index 858dada..0000000 Binary files a/MapControl/OfflineMaps/5/19/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/7.jpg b/MapControl/OfflineMaps/5/19/7.jpg deleted file mode 100644 index 6e6345e..0000000 Binary files a/MapControl/OfflineMaps/5/19/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/8.jpg b/MapControl/OfflineMaps/5/19/8.jpg deleted file mode 100644 index 8e0a8f9..0000000 Binary files a/MapControl/OfflineMaps/5/19/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/19/9.jpg b/MapControl/OfflineMaps/5/19/9.jpg deleted file mode 100644 index 186d10e..0000000 Binary files a/MapControl/OfflineMaps/5/19/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/0.jpg b/MapControl/OfflineMaps/5/2/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/2/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/1.jpg b/MapControl/OfflineMaps/5/2/1.jpg deleted file mode 100644 index 644649c..0000000 Binary files a/MapControl/OfflineMaps/5/2/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/10.jpg b/MapControl/OfflineMaps/5/2/10.jpg deleted file mode 100644 index 8c95ed6..0000000 Binary files a/MapControl/OfflineMaps/5/2/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/11.jpg b/MapControl/OfflineMaps/5/2/11.jpg deleted file mode 100644 index 4688a29..0000000 Binary files a/MapControl/OfflineMaps/5/2/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/12.jpg b/MapControl/OfflineMaps/5/2/12.jpg deleted file mode 100644 index 36f5920..0000000 Binary files a/MapControl/OfflineMaps/5/2/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/13.jpg b/MapControl/OfflineMaps/5/2/13.jpg deleted file mode 100644 index 0c44e4a..0000000 Binary files a/MapControl/OfflineMaps/5/2/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/14.jpg b/MapControl/OfflineMaps/5/2/14.jpg deleted file mode 100644 index c59d9c5..0000000 Binary files a/MapControl/OfflineMaps/5/2/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/15.jpg b/MapControl/OfflineMaps/5/2/15.jpg deleted file mode 100644 index ce1780d..0000000 Binary files a/MapControl/OfflineMaps/5/2/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/16.jpg b/MapControl/OfflineMaps/5/2/16.jpg deleted file mode 100644 index 9b08c27..0000000 Binary files a/MapControl/OfflineMaps/5/2/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/17.jpg b/MapControl/OfflineMaps/5/2/17.jpg deleted file mode 100644 index fd3c90d..0000000 Binary files a/MapControl/OfflineMaps/5/2/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/18.jpg b/MapControl/OfflineMaps/5/2/18.jpg deleted file mode 100644 index f630a60..0000000 Binary files a/MapControl/OfflineMaps/5/2/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/19.jpg b/MapControl/OfflineMaps/5/2/19.jpg deleted file mode 100644 index 735b84a..0000000 Binary files a/MapControl/OfflineMaps/5/2/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/2.jpg b/MapControl/OfflineMaps/5/2/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/2/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/20.jpg b/MapControl/OfflineMaps/5/2/20.jpg deleted file mode 100644 index 93508ae..0000000 Binary files a/MapControl/OfflineMaps/5/2/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/21.jpg b/MapControl/OfflineMaps/5/2/21.jpg deleted file mode 100644 index 61d0d18..0000000 Binary files a/MapControl/OfflineMaps/5/2/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/22.jpg b/MapControl/OfflineMaps/5/2/22.jpg deleted file mode 100644 index 0b13cfb..0000000 Binary files a/MapControl/OfflineMaps/5/2/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/23.jpg b/MapControl/OfflineMaps/5/2/23.jpg deleted file mode 100644 index 27a496f..0000000 Binary files a/MapControl/OfflineMaps/5/2/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/24.jpg b/MapControl/OfflineMaps/5/2/24.jpg deleted file mode 100644 index f3b06bd..0000000 Binary files a/MapControl/OfflineMaps/5/2/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/25.jpg b/MapControl/OfflineMaps/5/2/25.jpg deleted file mode 100644 index aa7cccc..0000000 Binary files a/MapControl/OfflineMaps/5/2/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/26.jpg b/MapControl/OfflineMaps/5/2/26.jpg deleted file mode 100644 index 5f00780..0000000 Binary files a/MapControl/OfflineMaps/5/2/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/27.jpg b/MapControl/OfflineMaps/5/2/27.jpg deleted file mode 100644 index fe0bdb7..0000000 Binary files a/MapControl/OfflineMaps/5/2/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/28.jpg b/MapControl/OfflineMaps/5/2/28.jpg deleted file mode 100644 index 6449242..0000000 Binary files a/MapControl/OfflineMaps/5/2/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/29.jpg b/MapControl/OfflineMaps/5/2/29.jpg deleted file mode 100644 index 7872ce3..0000000 Binary files a/MapControl/OfflineMaps/5/2/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/3.jpg b/MapControl/OfflineMaps/5/2/3.jpg deleted file mode 100644 index b17b2c8..0000000 Binary files a/MapControl/OfflineMaps/5/2/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/30.jpg b/MapControl/OfflineMaps/5/2/30.jpg deleted file mode 100644 index 2be04a1..0000000 Binary files a/MapControl/OfflineMaps/5/2/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/31.jpg b/MapControl/OfflineMaps/5/2/31.jpg deleted file mode 100644 index 47d5660..0000000 Binary files a/MapControl/OfflineMaps/5/2/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/4.jpg b/MapControl/OfflineMaps/5/2/4.jpg deleted file mode 100644 index e559e7f..0000000 Binary files a/MapControl/OfflineMaps/5/2/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/5.jpg b/MapControl/OfflineMaps/5/2/5.jpg deleted file mode 100644 index 9fec13c..0000000 Binary files a/MapControl/OfflineMaps/5/2/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/6.jpg b/MapControl/OfflineMaps/5/2/6.jpg deleted file mode 100644 index 704e3f3..0000000 Binary files a/MapControl/OfflineMaps/5/2/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/7.jpg b/MapControl/OfflineMaps/5/2/7.jpg deleted file mode 100644 index 9886237..0000000 Binary files a/MapControl/OfflineMaps/5/2/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/8.jpg b/MapControl/OfflineMaps/5/2/8.jpg deleted file mode 100644 index 05fc2da..0000000 Binary files a/MapControl/OfflineMaps/5/2/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/2/9.jpg b/MapControl/OfflineMaps/5/2/9.jpg deleted file mode 100644 index db65ddb..0000000 Binary files a/MapControl/OfflineMaps/5/2/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/0.jpg b/MapControl/OfflineMaps/5/20/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/20/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/1.jpg b/MapControl/OfflineMaps/5/20/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/20/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/10.jpg b/MapControl/OfflineMaps/5/20/10.jpg deleted file mode 100644 index 3fba743..0000000 Binary files a/MapControl/OfflineMaps/5/20/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/11.jpg b/MapControl/OfflineMaps/5/20/11.jpg deleted file mode 100644 index 8fd66fc..0000000 Binary files a/MapControl/OfflineMaps/5/20/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/12.jpg b/MapControl/OfflineMaps/5/20/12.jpg deleted file mode 100644 index 416a29f..0000000 Binary files a/MapControl/OfflineMaps/5/20/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/13.jpg b/MapControl/OfflineMaps/5/20/13.jpg deleted file mode 100644 index 9e19065..0000000 Binary files a/MapControl/OfflineMaps/5/20/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/14.jpg b/MapControl/OfflineMaps/5/20/14.jpg deleted file mode 100644 index 50a3b08..0000000 Binary files a/MapControl/OfflineMaps/5/20/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/15.jpg b/MapControl/OfflineMaps/5/20/15.jpg deleted file mode 100644 index 07fa1ff..0000000 Binary files a/MapControl/OfflineMaps/5/20/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/16.jpg b/MapControl/OfflineMaps/5/20/16.jpg deleted file mode 100644 index de03924..0000000 Binary files a/MapControl/OfflineMaps/5/20/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/17.jpg b/MapControl/OfflineMaps/5/20/17.jpg deleted file mode 100644 index 89a47a1..0000000 Binary files a/MapControl/OfflineMaps/5/20/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/18.jpg b/MapControl/OfflineMaps/5/20/18.jpg deleted file mode 100644 index 93b8caf..0000000 Binary files a/MapControl/OfflineMaps/5/20/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/19.jpg b/MapControl/OfflineMaps/5/20/19.jpg deleted file mode 100644 index 3611dbb..0000000 Binary files a/MapControl/OfflineMaps/5/20/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/2.jpg b/MapControl/OfflineMaps/5/20/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/20/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/20.jpg b/MapControl/OfflineMaps/5/20/20.jpg deleted file mode 100644 index 6007ee1..0000000 Binary files a/MapControl/OfflineMaps/5/20/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/21.jpg b/MapControl/OfflineMaps/5/20/21.jpg deleted file mode 100644 index f19bba7..0000000 Binary files a/MapControl/OfflineMaps/5/20/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/22.jpg b/MapControl/OfflineMaps/5/20/22.jpg deleted file mode 100644 index 077ee25..0000000 Binary files a/MapControl/OfflineMaps/5/20/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/23.jpg b/MapControl/OfflineMaps/5/20/23.jpg deleted file mode 100644 index cad9922..0000000 Binary files a/MapControl/OfflineMaps/5/20/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/24.jpg b/MapControl/OfflineMaps/5/20/24.jpg deleted file mode 100644 index cd48a61..0000000 Binary files a/MapControl/OfflineMaps/5/20/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/25.jpg b/MapControl/OfflineMaps/5/20/25.jpg deleted file mode 100644 index 203468a..0000000 Binary files a/MapControl/OfflineMaps/5/20/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/26.jpg b/MapControl/OfflineMaps/5/20/26.jpg deleted file mode 100644 index 68c7b79..0000000 Binary files a/MapControl/OfflineMaps/5/20/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/27.jpg b/MapControl/OfflineMaps/5/20/27.jpg deleted file mode 100644 index 9af323c..0000000 Binary files a/MapControl/OfflineMaps/5/20/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/28.jpg b/MapControl/OfflineMaps/5/20/28.jpg deleted file mode 100644 index 6c7ac3d..0000000 Binary files a/MapControl/OfflineMaps/5/20/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/29.jpg b/MapControl/OfflineMaps/5/20/29.jpg deleted file mode 100644 index 4477930..0000000 Binary files a/MapControl/OfflineMaps/5/20/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/3.jpg b/MapControl/OfflineMaps/5/20/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/20/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/30.jpg b/MapControl/OfflineMaps/5/20/30.jpg deleted file mode 100644 index 39985e9..0000000 Binary files a/MapControl/OfflineMaps/5/20/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/31.jpg b/MapControl/OfflineMaps/5/20/31.jpg deleted file mode 100644 index 36be97c..0000000 Binary files a/MapControl/OfflineMaps/5/20/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/4.jpg b/MapControl/OfflineMaps/5/20/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/20/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/5.jpg b/MapControl/OfflineMaps/5/20/5.jpg deleted file mode 100644 index 79621ff..0000000 Binary files a/MapControl/OfflineMaps/5/20/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/6.jpg b/MapControl/OfflineMaps/5/20/6.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/20/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/7.jpg b/MapControl/OfflineMaps/5/20/7.jpg deleted file mode 100644 index dfd4271..0000000 Binary files a/MapControl/OfflineMaps/5/20/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/8.jpg b/MapControl/OfflineMaps/5/20/8.jpg deleted file mode 100644 index 1def69f..0000000 Binary files a/MapControl/OfflineMaps/5/20/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/20/9.jpg b/MapControl/OfflineMaps/5/20/9.jpg deleted file mode 100644 index 7dcd9e5..0000000 Binary files a/MapControl/OfflineMaps/5/20/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/0.jpg b/MapControl/OfflineMaps/5/21/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/21/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/1.jpg b/MapControl/OfflineMaps/5/21/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/21/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/10.jpg b/MapControl/OfflineMaps/5/21/10.jpg deleted file mode 100644 index 4bad690..0000000 Binary files a/MapControl/OfflineMaps/5/21/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/11.jpg b/MapControl/OfflineMaps/5/21/11.jpg deleted file mode 100644 index d6dd061..0000000 Binary files a/MapControl/OfflineMaps/5/21/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/12.jpg b/MapControl/OfflineMaps/5/21/12.jpg deleted file mode 100644 index fc8090d..0000000 Binary files a/MapControl/OfflineMaps/5/21/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/13.jpg b/MapControl/OfflineMaps/5/21/13.jpg deleted file mode 100644 index 4d96db1..0000000 Binary files a/MapControl/OfflineMaps/5/21/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/14.jpg b/MapControl/OfflineMaps/5/21/14.jpg deleted file mode 100644 index 9b7c778..0000000 Binary files a/MapControl/OfflineMaps/5/21/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/15.jpg b/MapControl/OfflineMaps/5/21/15.jpg deleted file mode 100644 index 1b93445..0000000 Binary files a/MapControl/OfflineMaps/5/21/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/16.jpg b/MapControl/OfflineMaps/5/21/16.jpg deleted file mode 100644 index 9dacdd0..0000000 Binary files a/MapControl/OfflineMaps/5/21/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/17.jpg b/MapControl/OfflineMaps/5/21/17.jpg deleted file mode 100644 index 1ac87a7..0000000 Binary files a/MapControl/OfflineMaps/5/21/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/18.jpg b/MapControl/OfflineMaps/5/21/18.jpg deleted file mode 100644 index dc48fb5..0000000 Binary files a/MapControl/OfflineMaps/5/21/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/19.jpg b/MapControl/OfflineMaps/5/21/19.jpg deleted file mode 100644 index 2a415bf..0000000 Binary files a/MapControl/OfflineMaps/5/21/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/2.jpg b/MapControl/OfflineMaps/5/21/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/21/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/20.jpg b/MapControl/OfflineMaps/5/21/20.jpg deleted file mode 100644 index cebf17c..0000000 Binary files a/MapControl/OfflineMaps/5/21/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/21.jpg b/MapControl/OfflineMaps/5/21/21.jpg deleted file mode 100644 index ac1f283..0000000 Binary files a/MapControl/OfflineMaps/5/21/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/22.jpg b/MapControl/OfflineMaps/5/21/22.jpg deleted file mode 100644 index eb049fa..0000000 Binary files a/MapControl/OfflineMaps/5/21/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/23.jpg b/MapControl/OfflineMaps/5/21/23.jpg deleted file mode 100644 index 4dfd79f..0000000 Binary files a/MapControl/OfflineMaps/5/21/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/24.jpg b/MapControl/OfflineMaps/5/21/24.jpg deleted file mode 100644 index 9da3e63..0000000 Binary files a/MapControl/OfflineMaps/5/21/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/25.jpg b/MapControl/OfflineMaps/5/21/25.jpg deleted file mode 100644 index ea98efd..0000000 Binary files a/MapControl/OfflineMaps/5/21/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/26.jpg b/MapControl/OfflineMaps/5/21/26.jpg deleted file mode 100644 index f5fec16..0000000 Binary files a/MapControl/OfflineMaps/5/21/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/27.jpg b/MapControl/OfflineMaps/5/21/27.jpg deleted file mode 100644 index 62483dd..0000000 Binary files a/MapControl/OfflineMaps/5/21/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/28.jpg b/MapControl/OfflineMaps/5/21/28.jpg deleted file mode 100644 index 0176ed8..0000000 Binary files a/MapControl/OfflineMaps/5/21/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/29.jpg b/MapControl/OfflineMaps/5/21/29.jpg deleted file mode 100644 index 96abaec..0000000 Binary files a/MapControl/OfflineMaps/5/21/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/3.jpg b/MapControl/OfflineMaps/5/21/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/21/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/30.jpg b/MapControl/OfflineMaps/5/21/30.jpg deleted file mode 100644 index df13a3f..0000000 Binary files a/MapControl/OfflineMaps/5/21/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/31.jpg b/MapControl/OfflineMaps/5/21/31.jpg deleted file mode 100644 index ac6541d..0000000 Binary files a/MapControl/OfflineMaps/5/21/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/4.jpg b/MapControl/OfflineMaps/5/21/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/21/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/5.jpg b/MapControl/OfflineMaps/5/21/5.jpg deleted file mode 100644 index 0e6fb24..0000000 Binary files a/MapControl/OfflineMaps/5/21/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/6.jpg b/MapControl/OfflineMaps/5/21/6.jpg deleted file mode 100644 index 88f9d9a..0000000 Binary files a/MapControl/OfflineMaps/5/21/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/7.jpg b/MapControl/OfflineMaps/5/21/7.jpg deleted file mode 100644 index 548af5c..0000000 Binary files a/MapControl/OfflineMaps/5/21/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/8.jpg b/MapControl/OfflineMaps/5/21/8.jpg deleted file mode 100644 index 7d29b8a..0000000 Binary files a/MapControl/OfflineMaps/5/21/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/21/9.jpg b/MapControl/OfflineMaps/5/21/9.jpg deleted file mode 100644 index 7bf9fc4..0000000 Binary files a/MapControl/OfflineMaps/5/21/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/0.jpg b/MapControl/OfflineMaps/5/22/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/22/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/1.jpg b/MapControl/OfflineMaps/5/22/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/22/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/10.jpg b/MapControl/OfflineMaps/5/22/10.jpg deleted file mode 100644 index 8c6415b..0000000 Binary files a/MapControl/OfflineMaps/5/22/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/11.jpg b/MapControl/OfflineMaps/5/22/11.jpg deleted file mode 100644 index ca3f41e..0000000 Binary files a/MapControl/OfflineMaps/5/22/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/12.jpg b/MapControl/OfflineMaps/5/22/12.jpg deleted file mode 100644 index 49d3e53..0000000 Binary files a/MapControl/OfflineMaps/5/22/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/13.jpg b/MapControl/OfflineMaps/5/22/13.jpg deleted file mode 100644 index 514bf0b..0000000 Binary files a/MapControl/OfflineMaps/5/22/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/14.jpg b/MapControl/OfflineMaps/5/22/14.jpg deleted file mode 100644 index fdbfc83..0000000 Binary files a/MapControl/OfflineMaps/5/22/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/15.jpg b/MapControl/OfflineMaps/5/22/15.jpg deleted file mode 100644 index 051a90e..0000000 Binary files a/MapControl/OfflineMaps/5/22/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/16.jpg b/MapControl/OfflineMaps/5/22/16.jpg deleted file mode 100644 index af90341..0000000 Binary files a/MapControl/OfflineMaps/5/22/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/17.jpg b/MapControl/OfflineMaps/5/22/17.jpg deleted file mode 100644 index de238b4..0000000 Binary files a/MapControl/OfflineMaps/5/22/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/18.jpg b/MapControl/OfflineMaps/5/22/18.jpg deleted file mode 100644 index b3f826c..0000000 Binary files a/MapControl/OfflineMaps/5/22/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/19.jpg b/MapControl/OfflineMaps/5/22/19.jpg deleted file mode 100644 index da1f5bd..0000000 Binary files a/MapControl/OfflineMaps/5/22/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/2.jpg b/MapControl/OfflineMaps/5/22/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/22/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/20.jpg b/MapControl/OfflineMaps/5/22/20.jpg deleted file mode 100644 index a640574..0000000 Binary files a/MapControl/OfflineMaps/5/22/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/21.jpg b/MapControl/OfflineMaps/5/22/21.jpg deleted file mode 100644 index f2dab24..0000000 Binary files a/MapControl/OfflineMaps/5/22/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/22.jpg b/MapControl/OfflineMaps/5/22/22.jpg deleted file mode 100644 index e3fdb1a..0000000 Binary files a/MapControl/OfflineMaps/5/22/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/23.jpg b/MapControl/OfflineMaps/5/22/23.jpg deleted file mode 100644 index 3819dd1..0000000 Binary files a/MapControl/OfflineMaps/5/22/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/24.jpg b/MapControl/OfflineMaps/5/22/24.jpg deleted file mode 100644 index 7abef61..0000000 Binary files a/MapControl/OfflineMaps/5/22/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/25.jpg b/MapControl/OfflineMaps/5/22/25.jpg deleted file mode 100644 index 4d5da91..0000000 Binary files a/MapControl/OfflineMaps/5/22/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/26.jpg b/MapControl/OfflineMaps/5/22/26.jpg deleted file mode 100644 index f61c444..0000000 Binary files a/MapControl/OfflineMaps/5/22/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/27.jpg b/MapControl/OfflineMaps/5/22/27.jpg deleted file mode 100644 index 3f7a023..0000000 Binary files a/MapControl/OfflineMaps/5/22/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/28.jpg b/MapControl/OfflineMaps/5/22/28.jpg deleted file mode 100644 index ae2ae8e..0000000 Binary files a/MapControl/OfflineMaps/5/22/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/29.jpg b/MapControl/OfflineMaps/5/22/29.jpg deleted file mode 100644 index b13b18e..0000000 Binary files a/MapControl/OfflineMaps/5/22/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/3.jpg b/MapControl/OfflineMaps/5/22/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/22/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/30.jpg b/MapControl/OfflineMaps/5/22/30.jpg deleted file mode 100644 index 071ba93..0000000 Binary files a/MapControl/OfflineMaps/5/22/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/31.jpg b/MapControl/OfflineMaps/5/22/31.jpg deleted file mode 100644 index d629f63..0000000 Binary files a/MapControl/OfflineMaps/5/22/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/4.jpg b/MapControl/OfflineMaps/5/22/4.jpg deleted file mode 100644 index bac5978..0000000 Binary files a/MapControl/OfflineMaps/5/22/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/5.jpg b/MapControl/OfflineMaps/5/22/5.jpg deleted file mode 100644 index aabc9d1..0000000 Binary files a/MapControl/OfflineMaps/5/22/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/6.jpg b/MapControl/OfflineMaps/5/22/6.jpg deleted file mode 100644 index 06a9dd3..0000000 Binary files a/MapControl/OfflineMaps/5/22/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/7.jpg b/MapControl/OfflineMaps/5/22/7.jpg deleted file mode 100644 index 9f09402..0000000 Binary files a/MapControl/OfflineMaps/5/22/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/8.jpg b/MapControl/OfflineMaps/5/22/8.jpg deleted file mode 100644 index af7286f..0000000 Binary files a/MapControl/OfflineMaps/5/22/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/22/9.jpg b/MapControl/OfflineMaps/5/22/9.jpg deleted file mode 100644 index 1a9ea52..0000000 Binary files a/MapControl/OfflineMaps/5/22/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/0.jpg b/MapControl/OfflineMaps/5/23/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/23/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/1.jpg b/MapControl/OfflineMaps/5/23/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/23/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/10.jpg b/MapControl/OfflineMaps/5/23/10.jpg deleted file mode 100644 index fc659b0..0000000 Binary files a/MapControl/OfflineMaps/5/23/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/11.jpg b/MapControl/OfflineMaps/5/23/11.jpg deleted file mode 100644 index b633d01..0000000 Binary files a/MapControl/OfflineMaps/5/23/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/12.jpg b/MapControl/OfflineMaps/5/23/12.jpg deleted file mode 100644 index f69b53d..0000000 Binary files a/MapControl/OfflineMaps/5/23/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/13.jpg b/MapControl/OfflineMaps/5/23/13.jpg deleted file mode 100644 index cdf1c20..0000000 Binary files a/MapControl/OfflineMaps/5/23/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/14.jpg b/MapControl/OfflineMaps/5/23/14.jpg deleted file mode 100644 index f56c89e..0000000 Binary files a/MapControl/OfflineMaps/5/23/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/15.jpg b/MapControl/OfflineMaps/5/23/15.jpg deleted file mode 100644 index 6503882..0000000 Binary files a/MapControl/OfflineMaps/5/23/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/16.jpg b/MapControl/OfflineMaps/5/23/16.jpg deleted file mode 100644 index f0a81f0..0000000 Binary files a/MapControl/OfflineMaps/5/23/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/17.jpg b/MapControl/OfflineMaps/5/23/17.jpg deleted file mode 100644 index 24d9327..0000000 Binary files a/MapControl/OfflineMaps/5/23/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/18.jpg b/MapControl/OfflineMaps/5/23/18.jpg deleted file mode 100644 index ef45c27..0000000 Binary files a/MapControl/OfflineMaps/5/23/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/19.jpg b/MapControl/OfflineMaps/5/23/19.jpg deleted file mode 100644 index 442934f..0000000 Binary files a/MapControl/OfflineMaps/5/23/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/2.jpg b/MapControl/OfflineMaps/5/23/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/23/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/20.jpg b/MapControl/OfflineMaps/5/23/20.jpg deleted file mode 100644 index 041110f..0000000 Binary files a/MapControl/OfflineMaps/5/23/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/21.jpg b/MapControl/OfflineMaps/5/23/21.jpg deleted file mode 100644 index 3c97ea4..0000000 Binary files a/MapControl/OfflineMaps/5/23/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/22.jpg b/MapControl/OfflineMaps/5/23/22.jpg deleted file mode 100644 index ece1a37..0000000 Binary files a/MapControl/OfflineMaps/5/23/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/23.jpg b/MapControl/OfflineMaps/5/23/23.jpg deleted file mode 100644 index 733dd58..0000000 Binary files a/MapControl/OfflineMaps/5/23/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/24.jpg b/MapControl/OfflineMaps/5/23/24.jpg deleted file mode 100644 index 493c5d7..0000000 Binary files a/MapControl/OfflineMaps/5/23/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/25.jpg b/MapControl/OfflineMaps/5/23/25.jpg deleted file mode 100644 index a86a5fb..0000000 Binary files a/MapControl/OfflineMaps/5/23/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/26.jpg b/MapControl/OfflineMaps/5/23/26.jpg deleted file mode 100644 index 2d20b0d..0000000 Binary files a/MapControl/OfflineMaps/5/23/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/27.jpg b/MapControl/OfflineMaps/5/23/27.jpg deleted file mode 100644 index f0dfcc4..0000000 Binary files a/MapControl/OfflineMaps/5/23/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/28.jpg b/MapControl/OfflineMaps/5/23/28.jpg deleted file mode 100644 index c3e7cc4..0000000 Binary files a/MapControl/OfflineMaps/5/23/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/29.jpg b/MapControl/OfflineMaps/5/23/29.jpg deleted file mode 100644 index fb353f5..0000000 Binary files a/MapControl/OfflineMaps/5/23/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/3.jpg b/MapControl/OfflineMaps/5/23/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/23/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/30.jpg b/MapControl/OfflineMaps/5/23/30.jpg deleted file mode 100644 index 1e9e388..0000000 Binary files a/MapControl/OfflineMaps/5/23/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/31.jpg b/MapControl/OfflineMaps/5/23/31.jpg deleted file mode 100644 index 2a18f95..0000000 Binary files a/MapControl/OfflineMaps/5/23/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/4.jpg b/MapControl/OfflineMaps/5/23/4.jpg deleted file mode 100644 index bad4f70..0000000 Binary files a/MapControl/OfflineMaps/5/23/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/5.jpg b/MapControl/OfflineMaps/5/23/5.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/23/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/6.jpg b/MapControl/OfflineMaps/5/23/6.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/23/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/7.jpg b/MapControl/OfflineMaps/5/23/7.jpg deleted file mode 100644 index 81aec44..0000000 Binary files a/MapControl/OfflineMaps/5/23/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/8.jpg b/MapControl/OfflineMaps/5/23/8.jpg deleted file mode 100644 index 8255d95..0000000 Binary files a/MapControl/OfflineMaps/5/23/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/23/9.jpg b/MapControl/OfflineMaps/5/23/9.jpg deleted file mode 100644 index 06acc51..0000000 Binary files a/MapControl/OfflineMaps/5/23/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/0.jpg b/MapControl/OfflineMaps/5/24/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/24/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/1.jpg b/MapControl/OfflineMaps/5/24/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/24/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/10.jpg b/MapControl/OfflineMaps/5/24/10.jpg deleted file mode 100644 index ea0ab23..0000000 Binary files a/MapControl/OfflineMaps/5/24/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/11.jpg b/MapControl/OfflineMaps/5/24/11.jpg deleted file mode 100644 index 815d070..0000000 Binary files a/MapControl/OfflineMaps/5/24/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/12.jpg b/MapControl/OfflineMaps/5/24/12.jpg deleted file mode 100644 index 9d09efa..0000000 Binary files a/MapControl/OfflineMaps/5/24/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/13.jpg b/MapControl/OfflineMaps/5/24/13.jpg deleted file mode 100644 index 006bd5d..0000000 Binary files a/MapControl/OfflineMaps/5/24/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/14.jpg b/MapControl/OfflineMaps/5/24/14.jpg deleted file mode 100644 index 46c1d11..0000000 Binary files a/MapControl/OfflineMaps/5/24/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/15.jpg b/MapControl/OfflineMaps/5/24/15.jpg deleted file mode 100644 index 4540949..0000000 Binary files a/MapControl/OfflineMaps/5/24/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/16.jpg b/MapControl/OfflineMaps/5/24/16.jpg deleted file mode 100644 index aeef9c6..0000000 Binary files a/MapControl/OfflineMaps/5/24/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/17.jpg b/MapControl/OfflineMaps/5/24/17.jpg deleted file mode 100644 index d0b15b7..0000000 Binary files a/MapControl/OfflineMaps/5/24/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/18.jpg b/MapControl/OfflineMaps/5/24/18.jpg deleted file mode 100644 index 0d64b50..0000000 Binary files a/MapControl/OfflineMaps/5/24/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/19.jpg b/MapControl/OfflineMaps/5/24/19.jpg deleted file mode 100644 index e0ec6dd..0000000 Binary files a/MapControl/OfflineMaps/5/24/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/2.jpg b/MapControl/OfflineMaps/5/24/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/24/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/20.jpg b/MapControl/OfflineMaps/5/24/20.jpg deleted file mode 100644 index 0b52472..0000000 Binary files a/MapControl/OfflineMaps/5/24/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/21.jpg b/MapControl/OfflineMaps/5/24/21.jpg deleted file mode 100644 index 8dbda35..0000000 Binary files a/MapControl/OfflineMaps/5/24/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/22.jpg b/MapControl/OfflineMaps/5/24/22.jpg deleted file mode 100644 index ee58ae5..0000000 Binary files a/MapControl/OfflineMaps/5/24/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/23.jpg b/MapControl/OfflineMaps/5/24/23.jpg deleted file mode 100644 index 31e1911..0000000 Binary files a/MapControl/OfflineMaps/5/24/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/24.jpg b/MapControl/OfflineMaps/5/24/24.jpg deleted file mode 100644 index 251ae85..0000000 Binary files a/MapControl/OfflineMaps/5/24/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/25.jpg b/MapControl/OfflineMaps/5/24/25.jpg deleted file mode 100644 index 80e28e0..0000000 Binary files a/MapControl/OfflineMaps/5/24/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/26.jpg b/MapControl/OfflineMaps/5/24/26.jpg deleted file mode 100644 index 1c568d4..0000000 Binary files a/MapControl/OfflineMaps/5/24/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/27.jpg b/MapControl/OfflineMaps/5/24/27.jpg deleted file mode 100644 index 2a7ab4f..0000000 Binary files a/MapControl/OfflineMaps/5/24/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/28.jpg b/MapControl/OfflineMaps/5/24/28.jpg deleted file mode 100644 index d205cac..0000000 Binary files a/MapControl/OfflineMaps/5/24/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/29.jpg b/MapControl/OfflineMaps/5/24/29.jpg deleted file mode 100644 index ef3b504..0000000 Binary files a/MapControl/OfflineMaps/5/24/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/3.jpg b/MapControl/OfflineMaps/5/24/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/24/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/30.jpg b/MapControl/OfflineMaps/5/24/30.jpg deleted file mode 100644 index 786f004..0000000 Binary files a/MapControl/OfflineMaps/5/24/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/31.jpg b/MapControl/OfflineMaps/5/24/31.jpg deleted file mode 100644 index 844a54f..0000000 Binary files a/MapControl/OfflineMaps/5/24/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/4.jpg b/MapControl/OfflineMaps/5/24/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/24/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/5.jpg b/MapControl/OfflineMaps/5/24/5.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/24/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/6.jpg b/MapControl/OfflineMaps/5/24/6.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/24/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/7.jpg b/MapControl/OfflineMaps/5/24/7.jpg deleted file mode 100644 index 2e56bfb..0000000 Binary files a/MapControl/OfflineMaps/5/24/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/8.jpg b/MapControl/OfflineMaps/5/24/8.jpg deleted file mode 100644 index d57d636..0000000 Binary files a/MapControl/OfflineMaps/5/24/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/24/9.jpg b/MapControl/OfflineMaps/5/24/9.jpg deleted file mode 100644 index 1867bb7..0000000 Binary files a/MapControl/OfflineMaps/5/24/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/0.jpg b/MapControl/OfflineMaps/5/25/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/25/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/1.jpg b/MapControl/OfflineMaps/5/25/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/25/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/10.jpg b/MapControl/OfflineMaps/5/25/10.jpg deleted file mode 100644 index 60d135c..0000000 Binary files a/MapControl/OfflineMaps/5/25/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/11.jpg b/MapControl/OfflineMaps/5/25/11.jpg deleted file mode 100644 index 8d627e1..0000000 Binary files a/MapControl/OfflineMaps/5/25/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/12.jpg b/MapControl/OfflineMaps/5/25/12.jpg deleted file mode 100644 index c82a777..0000000 Binary files a/MapControl/OfflineMaps/5/25/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/13.jpg b/MapControl/OfflineMaps/5/25/13.jpg deleted file mode 100644 index da397c6..0000000 Binary files a/MapControl/OfflineMaps/5/25/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/14.jpg b/MapControl/OfflineMaps/5/25/14.jpg deleted file mode 100644 index 605a01a..0000000 Binary files a/MapControl/OfflineMaps/5/25/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/15.jpg b/MapControl/OfflineMaps/5/25/15.jpg deleted file mode 100644 index 32a91fb..0000000 Binary files a/MapControl/OfflineMaps/5/25/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/16.jpg b/MapControl/OfflineMaps/5/25/16.jpg deleted file mode 100644 index ded97d9..0000000 Binary files a/MapControl/OfflineMaps/5/25/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/17.jpg b/MapControl/OfflineMaps/5/25/17.jpg deleted file mode 100644 index 7a314e5..0000000 Binary files a/MapControl/OfflineMaps/5/25/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/18.jpg b/MapControl/OfflineMaps/5/25/18.jpg deleted file mode 100644 index 61ec571..0000000 Binary files a/MapControl/OfflineMaps/5/25/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/19.jpg b/MapControl/OfflineMaps/5/25/19.jpg deleted file mode 100644 index 66e15e7..0000000 Binary files a/MapControl/OfflineMaps/5/25/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/2.jpg b/MapControl/OfflineMaps/5/25/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/25/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/20.jpg b/MapControl/OfflineMaps/5/25/20.jpg deleted file mode 100644 index 8aa7664..0000000 Binary files a/MapControl/OfflineMaps/5/25/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/21.jpg b/MapControl/OfflineMaps/5/25/21.jpg deleted file mode 100644 index a375580..0000000 Binary files a/MapControl/OfflineMaps/5/25/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/22.jpg b/MapControl/OfflineMaps/5/25/22.jpg deleted file mode 100644 index 2beeb3a..0000000 Binary files a/MapControl/OfflineMaps/5/25/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/23.jpg b/MapControl/OfflineMaps/5/25/23.jpg deleted file mode 100644 index 1b749e6..0000000 Binary files a/MapControl/OfflineMaps/5/25/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/24.jpg b/MapControl/OfflineMaps/5/25/24.jpg deleted file mode 100644 index 1557bc2..0000000 Binary files a/MapControl/OfflineMaps/5/25/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/25.jpg b/MapControl/OfflineMaps/5/25/25.jpg deleted file mode 100644 index dce7bc5..0000000 Binary files a/MapControl/OfflineMaps/5/25/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/26.jpg b/MapControl/OfflineMaps/5/25/26.jpg deleted file mode 100644 index 330f149..0000000 Binary files a/MapControl/OfflineMaps/5/25/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/27.jpg b/MapControl/OfflineMaps/5/25/27.jpg deleted file mode 100644 index 3c9a55b..0000000 Binary files a/MapControl/OfflineMaps/5/25/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/28.jpg b/MapControl/OfflineMaps/5/25/28.jpg deleted file mode 100644 index 890eaae..0000000 Binary files a/MapControl/OfflineMaps/5/25/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/29.jpg b/MapControl/OfflineMaps/5/25/29.jpg deleted file mode 100644 index 18415bc..0000000 Binary files a/MapControl/OfflineMaps/5/25/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/3.jpg b/MapControl/OfflineMaps/5/25/3.jpg deleted file mode 100644 index b7220bd..0000000 Binary files a/MapControl/OfflineMaps/5/25/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/30.jpg b/MapControl/OfflineMaps/5/25/30.jpg deleted file mode 100644 index 19b5f11..0000000 Binary files a/MapControl/OfflineMaps/5/25/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/31.jpg b/MapControl/OfflineMaps/5/25/31.jpg deleted file mode 100644 index 861975b..0000000 Binary files a/MapControl/OfflineMaps/5/25/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/4.jpg b/MapControl/OfflineMaps/5/25/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/25/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/5.jpg b/MapControl/OfflineMaps/5/25/5.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/25/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/6.jpg b/MapControl/OfflineMaps/5/25/6.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/25/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/7.jpg b/MapControl/OfflineMaps/5/25/7.jpg deleted file mode 100644 index e007511..0000000 Binary files a/MapControl/OfflineMaps/5/25/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/8.jpg b/MapControl/OfflineMaps/5/25/8.jpg deleted file mode 100644 index 03e4bc4..0000000 Binary files a/MapControl/OfflineMaps/5/25/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/25/9.jpg b/MapControl/OfflineMaps/5/25/9.jpg deleted file mode 100644 index a972a01..0000000 Binary files a/MapControl/OfflineMaps/5/25/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/0.jpg b/MapControl/OfflineMaps/5/26/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/26/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/1.jpg b/MapControl/OfflineMaps/5/26/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/26/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/10.jpg b/MapControl/OfflineMaps/5/26/10.jpg deleted file mode 100644 index 30e143c..0000000 Binary files a/MapControl/OfflineMaps/5/26/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/11.jpg b/MapControl/OfflineMaps/5/26/11.jpg deleted file mode 100644 index 5983346..0000000 Binary files a/MapControl/OfflineMaps/5/26/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/12.jpg b/MapControl/OfflineMaps/5/26/12.jpg deleted file mode 100644 index 9853375..0000000 Binary files a/MapControl/OfflineMaps/5/26/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/13.jpg b/MapControl/OfflineMaps/5/26/13.jpg deleted file mode 100644 index 7945ab9..0000000 Binary files a/MapControl/OfflineMaps/5/26/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/14.jpg b/MapControl/OfflineMaps/5/26/14.jpg deleted file mode 100644 index 9934210..0000000 Binary files a/MapControl/OfflineMaps/5/26/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/15.jpg b/MapControl/OfflineMaps/5/26/15.jpg deleted file mode 100644 index 7d81a3e..0000000 Binary files a/MapControl/OfflineMaps/5/26/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/16.jpg b/MapControl/OfflineMaps/5/26/16.jpg deleted file mode 100644 index 095cc23..0000000 Binary files a/MapControl/OfflineMaps/5/26/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/17.jpg b/MapControl/OfflineMaps/5/26/17.jpg deleted file mode 100644 index 2be69ff..0000000 Binary files a/MapControl/OfflineMaps/5/26/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/18.jpg b/MapControl/OfflineMaps/5/26/18.jpg deleted file mode 100644 index da35953..0000000 Binary files a/MapControl/OfflineMaps/5/26/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/19.jpg b/MapControl/OfflineMaps/5/26/19.jpg deleted file mode 100644 index ba58539..0000000 Binary files a/MapControl/OfflineMaps/5/26/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/2.jpg b/MapControl/OfflineMaps/5/26/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/26/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/20.jpg b/MapControl/OfflineMaps/5/26/20.jpg deleted file mode 100644 index 16c1367..0000000 Binary files a/MapControl/OfflineMaps/5/26/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/21.jpg b/MapControl/OfflineMaps/5/26/21.jpg deleted file mode 100644 index 79ce3ab..0000000 Binary files a/MapControl/OfflineMaps/5/26/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/22.jpg b/MapControl/OfflineMaps/5/26/22.jpg deleted file mode 100644 index 81c2a2c..0000000 Binary files a/MapControl/OfflineMaps/5/26/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/23.jpg b/MapControl/OfflineMaps/5/26/23.jpg deleted file mode 100644 index e113269..0000000 Binary files a/MapControl/OfflineMaps/5/26/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/24.jpg b/MapControl/OfflineMaps/5/26/24.jpg deleted file mode 100644 index 6b20111..0000000 Binary files a/MapControl/OfflineMaps/5/26/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/25.jpg b/MapControl/OfflineMaps/5/26/25.jpg deleted file mode 100644 index 2f39da7..0000000 Binary files a/MapControl/OfflineMaps/5/26/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/26.jpg b/MapControl/OfflineMaps/5/26/26.jpg deleted file mode 100644 index 739348c..0000000 Binary files a/MapControl/OfflineMaps/5/26/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/27.jpg b/MapControl/OfflineMaps/5/26/27.jpg deleted file mode 100644 index 43f0e32..0000000 Binary files a/MapControl/OfflineMaps/5/26/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/28.jpg b/MapControl/OfflineMaps/5/26/28.jpg deleted file mode 100644 index 481ede9..0000000 Binary files a/MapControl/OfflineMaps/5/26/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/29.jpg b/MapControl/OfflineMaps/5/26/29.jpg deleted file mode 100644 index 68e7cdc..0000000 Binary files a/MapControl/OfflineMaps/5/26/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/3.jpg b/MapControl/OfflineMaps/5/26/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/26/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/30.jpg b/MapControl/OfflineMaps/5/26/30.jpg deleted file mode 100644 index 557b44e..0000000 Binary files a/MapControl/OfflineMaps/5/26/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/31.jpg b/MapControl/OfflineMaps/5/26/31.jpg deleted file mode 100644 index 202621b..0000000 Binary files a/MapControl/OfflineMaps/5/26/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/4.jpg b/MapControl/OfflineMaps/5/26/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/26/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/5.jpg b/MapControl/OfflineMaps/5/26/5.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/26/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/6.jpg b/MapControl/OfflineMaps/5/26/6.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/26/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/7.jpg b/MapControl/OfflineMaps/5/26/7.jpg deleted file mode 100644 index 656bcd2..0000000 Binary files a/MapControl/OfflineMaps/5/26/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/8.jpg b/MapControl/OfflineMaps/5/26/8.jpg deleted file mode 100644 index 1055c7c..0000000 Binary files a/MapControl/OfflineMaps/5/26/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/26/9.jpg b/MapControl/OfflineMaps/5/26/9.jpg deleted file mode 100644 index 7c14b7f..0000000 Binary files a/MapControl/OfflineMaps/5/26/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/0.jpg b/MapControl/OfflineMaps/5/27/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/27/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/1.jpg b/MapControl/OfflineMaps/5/27/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/27/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/10.jpg b/MapControl/OfflineMaps/5/27/10.jpg deleted file mode 100644 index 155253a..0000000 Binary files a/MapControl/OfflineMaps/5/27/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/11.jpg b/MapControl/OfflineMaps/5/27/11.jpg deleted file mode 100644 index fa796ab..0000000 Binary files a/MapControl/OfflineMaps/5/27/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/12.jpg b/MapControl/OfflineMaps/5/27/12.jpg deleted file mode 100644 index 0dc586e..0000000 Binary files a/MapControl/OfflineMaps/5/27/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/13.jpg b/MapControl/OfflineMaps/5/27/13.jpg deleted file mode 100644 index a4da468..0000000 Binary files a/MapControl/OfflineMaps/5/27/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/14.jpg b/MapControl/OfflineMaps/5/27/14.jpg deleted file mode 100644 index 40dae73..0000000 Binary files a/MapControl/OfflineMaps/5/27/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/15.jpg b/MapControl/OfflineMaps/5/27/15.jpg deleted file mode 100644 index 4c31e90..0000000 Binary files a/MapControl/OfflineMaps/5/27/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/16.jpg b/MapControl/OfflineMaps/5/27/16.jpg deleted file mode 100644 index f8414e4..0000000 Binary files a/MapControl/OfflineMaps/5/27/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/17.jpg b/MapControl/OfflineMaps/5/27/17.jpg deleted file mode 100644 index 63c733e..0000000 Binary files a/MapControl/OfflineMaps/5/27/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/18.jpg b/MapControl/OfflineMaps/5/27/18.jpg deleted file mode 100644 index a338b6b..0000000 Binary files a/MapControl/OfflineMaps/5/27/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/19.jpg b/MapControl/OfflineMaps/5/27/19.jpg deleted file mode 100644 index da98ccd..0000000 Binary files a/MapControl/OfflineMaps/5/27/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/2.jpg b/MapControl/OfflineMaps/5/27/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/27/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/20.jpg b/MapControl/OfflineMaps/5/27/20.jpg deleted file mode 100644 index c76400f..0000000 Binary files a/MapControl/OfflineMaps/5/27/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/21.jpg b/MapControl/OfflineMaps/5/27/21.jpg deleted file mode 100644 index 3680449..0000000 Binary files a/MapControl/OfflineMaps/5/27/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/22.jpg b/MapControl/OfflineMaps/5/27/22.jpg deleted file mode 100644 index b88e290..0000000 Binary files a/MapControl/OfflineMaps/5/27/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/23.jpg b/MapControl/OfflineMaps/5/27/23.jpg deleted file mode 100644 index f825d78..0000000 Binary files a/MapControl/OfflineMaps/5/27/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/24.jpg b/MapControl/OfflineMaps/5/27/24.jpg deleted file mode 100644 index 3d0edec..0000000 Binary files a/MapControl/OfflineMaps/5/27/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/25.jpg b/MapControl/OfflineMaps/5/27/25.jpg deleted file mode 100644 index d92a248..0000000 Binary files a/MapControl/OfflineMaps/5/27/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/26.jpg b/MapControl/OfflineMaps/5/27/26.jpg deleted file mode 100644 index d639ae5..0000000 Binary files a/MapControl/OfflineMaps/5/27/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/27.jpg b/MapControl/OfflineMaps/5/27/27.jpg deleted file mode 100644 index fb0d510..0000000 Binary files a/MapControl/OfflineMaps/5/27/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/28.jpg b/MapControl/OfflineMaps/5/27/28.jpg deleted file mode 100644 index 42aa505..0000000 Binary files a/MapControl/OfflineMaps/5/27/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/29.jpg b/MapControl/OfflineMaps/5/27/29.jpg deleted file mode 100644 index 97ea71c..0000000 Binary files a/MapControl/OfflineMaps/5/27/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/3.jpg b/MapControl/OfflineMaps/5/27/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/27/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/30.jpg b/MapControl/OfflineMaps/5/27/30.jpg deleted file mode 100644 index e51b9e4..0000000 Binary files a/MapControl/OfflineMaps/5/27/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/31.jpg b/MapControl/OfflineMaps/5/27/31.jpg deleted file mode 100644 index 4262577..0000000 Binary files a/MapControl/OfflineMaps/5/27/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/4.jpg b/MapControl/OfflineMaps/5/27/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/27/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/5.jpg b/MapControl/OfflineMaps/5/27/5.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/27/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/6.jpg b/MapControl/OfflineMaps/5/27/6.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/27/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/7.jpg b/MapControl/OfflineMaps/5/27/7.jpg deleted file mode 100644 index f335726..0000000 Binary files a/MapControl/OfflineMaps/5/27/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/8.jpg b/MapControl/OfflineMaps/5/27/8.jpg deleted file mode 100644 index b566a97..0000000 Binary files a/MapControl/OfflineMaps/5/27/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/27/9.jpg b/MapControl/OfflineMaps/5/27/9.jpg deleted file mode 100644 index 9419538..0000000 Binary files a/MapControl/OfflineMaps/5/27/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/0.jpg b/MapControl/OfflineMaps/5/28/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/28/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/1.jpg b/MapControl/OfflineMaps/5/28/1.jpg deleted file mode 100644 index d00bdb3..0000000 Binary files a/MapControl/OfflineMaps/5/28/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/10.jpg b/MapControl/OfflineMaps/5/28/10.jpg deleted file mode 100644 index 9452066..0000000 Binary files a/MapControl/OfflineMaps/5/28/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/11.jpg b/MapControl/OfflineMaps/5/28/11.jpg deleted file mode 100644 index fdb4046..0000000 Binary files a/MapControl/OfflineMaps/5/28/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/12.jpg b/MapControl/OfflineMaps/5/28/12.jpg deleted file mode 100644 index 0bb10af..0000000 Binary files a/MapControl/OfflineMaps/5/28/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/13.jpg b/MapControl/OfflineMaps/5/28/13.jpg deleted file mode 100644 index 714fb5f..0000000 Binary files a/MapControl/OfflineMaps/5/28/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/14.jpg b/MapControl/OfflineMaps/5/28/14.jpg deleted file mode 100644 index eba4352..0000000 Binary files a/MapControl/OfflineMaps/5/28/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/15.jpg b/MapControl/OfflineMaps/5/28/15.jpg deleted file mode 100644 index 10c70c1..0000000 Binary files a/MapControl/OfflineMaps/5/28/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/16.jpg b/MapControl/OfflineMaps/5/28/16.jpg deleted file mode 100644 index 978487c..0000000 Binary files a/MapControl/OfflineMaps/5/28/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/17.jpg b/MapControl/OfflineMaps/5/28/17.jpg deleted file mode 100644 index 46ab946..0000000 Binary files a/MapControl/OfflineMaps/5/28/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/18.jpg b/MapControl/OfflineMaps/5/28/18.jpg deleted file mode 100644 index 7a03249..0000000 Binary files a/MapControl/OfflineMaps/5/28/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/19.jpg b/MapControl/OfflineMaps/5/28/19.jpg deleted file mode 100644 index 6403870..0000000 Binary files a/MapControl/OfflineMaps/5/28/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/2.jpg b/MapControl/OfflineMaps/5/28/2.jpg deleted file mode 100644 index a152be9..0000000 Binary files a/MapControl/OfflineMaps/5/28/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/20.jpg b/MapControl/OfflineMaps/5/28/20.jpg deleted file mode 100644 index 7ed0814..0000000 Binary files a/MapControl/OfflineMaps/5/28/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/21.jpg b/MapControl/OfflineMaps/5/28/21.jpg deleted file mode 100644 index 09c4856..0000000 Binary files a/MapControl/OfflineMaps/5/28/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/22.jpg b/MapControl/OfflineMaps/5/28/22.jpg deleted file mode 100644 index ede72c0..0000000 Binary files a/MapControl/OfflineMaps/5/28/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/23.jpg b/MapControl/OfflineMaps/5/28/23.jpg deleted file mode 100644 index e8a589e..0000000 Binary files a/MapControl/OfflineMaps/5/28/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/24.jpg b/MapControl/OfflineMaps/5/28/24.jpg deleted file mode 100644 index 21ea014..0000000 Binary files a/MapControl/OfflineMaps/5/28/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/25.jpg b/MapControl/OfflineMaps/5/28/25.jpg deleted file mode 100644 index cdb5d2b..0000000 Binary files a/MapControl/OfflineMaps/5/28/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/26.jpg b/MapControl/OfflineMaps/5/28/26.jpg deleted file mode 100644 index fd0ecb1..0000000 Binary files a/MapControl/OfflineMaps/5/28/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/27.jpg b/MapControl/OfflineMaps/5/28/27.jpg deleted file mode 100644 index 7a71825..0000000 Binary files a/MapControl/OfflineMaps/5/28/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/28.jpg b/MapControl/OfflineMaps/5/28/28.jpg deleted file mode 100644 index 3cb0f31..0000000 Binary files a/MapControl/OfflineMaps/5/28/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/29.jpg b/MapControl/OfflineMaps/5/28/29.jpg deleted file mode 100644 index 0051b32..0000000 Binary files a/MapControl/OfflineMaps/5/28/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/3.jpg b/MapControl/OfflineMaps/5/28/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/28/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/30.jpg b/MapControl/OfflineMaps/5/28/30.jpg deleted file mode 100644 index 4a80ba0..0000000 Binary files a/MapControl/OfflineMaps/5/28/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/31.jpg b/MapControl/OfflineMaps/5/28/31.jpg deleted file mode 100644 index b669ab4..0000000 Binary files a/MapControl/OfflineMaps/5/28/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/4.jpg b/MapControl/OfflineMaps/5/28/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/28/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/5.jpg b/MapControl/OfflineMaps/5/28/5.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/28/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/6.jpg b/MapControl/OfflineMaps/5/28/6.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/28/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/7.jpg b/MapControl/OfflineMaps/5/28/7.jpg deleted file mode 100644 index 7744bf4..0000000 Binary files a/MapControl/OfflineMaps/5/28/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/8.jpg b/MapControl/OfflineMaps/5/28/8.jpg deleted file mode 100644 index 46c0d7e..0000000 Binary files a/MapControl/OfflineMaps/5/28/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/28/9.jpg b/MapControl/OfflineMaps/5/28/9.jpg deleted file mode 100644 index 0cfdbb3..0000000 Binary files a/MapControl/OfflineMaps/5/28/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/0.jpg b/MapControl/OfflineMaps/5/29/0.jpg deleted file mode 100644 index 5748a80..0000000 Binary files a/MapControl/OfflineMaps/5/29/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/1.jpg b/MapControl/OfflineMaps/5/29/1.jpg deleted file mode 100644 index f596965..0000000 Binary files a/MapControl/OfflineMaps/5/29/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/10.jpg b/MapControl/OfflineMaps/5/29/10.jpg deleted file mode 100644 index f06eaf8..0000000 Binary files a/MapControl/OfflineMaps/5/29/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/11.jpg b/MapControl/OfflineMaps/5/29/11.jpg deleted file mode 100644 index 9e5a6af..0000000 Binary files a/MapControl/OfflineMaps/5/29/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/12.jpg b/MapControl/OfflineMaps/5/29/12.jpg deleted file mode 100644 index eb0dbfb..0000000 Binary files a/MapControl/OfflineMaps/5/29/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/13.jpg b/MapControl/OfflineMaps/5/29/13.jpg deleted file mode 100644 index adaba74..0000000 Binary files a/MapControl/OfflineMaps/5/29/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/14.jpg b/MapControl/OfflineMaps/5/29/14.jpg deleted file mode 100644 index a57f855..0000000 Binary files a/MapControl/OfflineMaps/5/29/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/15.jpg b/MapControl/OfflineMaps/5/29/15.jpg deleted file mode 100644 index 1287208..0000000 Binary files a/MapControl/OfflineMaps/5/29/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/16.jpg b/MapControl/OfflineMaps/5/29/16.jpg deleted file mode 100644 index f5b93c7..0000000 Binary files a/MapControl/OfflineMaps/5/29/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/17.jpg b/MapControl/OfflineMaps/5/29/17.jpg deleted file mode 100644 index 94197d9..0000000 Binary files a/MapControl/OfflineMaps/5/29/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/18.jpg b/MapControl/OfflineMaps/5/29/18.jpg deleted file mode 100644 index c07e827..0000000 Binary files a/MapControl/OfflineMaps/5/29/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/19.jpg b/MapControl/OfflineMaps/5/29/19.jpg deleted file mode 100644 index 51dcdf5..0000000 Binary files a/MapControl/OfflineMaps/5/29/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/2.jpg b/MapControl/OfflineMaps/5/29/2.jpg deleted file mode 100644 index dcd04b4..0000000 Binary files a/MapControl/OfflineMaps/5/29/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/20.jpg b/MapControl/OfflineMaps/5/29/20.jpg deleted file mode 100644 index 6c1ca69..0000000 Binary files a/MapControl/OfflineMaps/5/29/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/21.jpg b/MapControl/OfflineMaps/5/29/21.jpg deleted file mode 100644 index fdf4bd6..0000000 Binary files a/MapControl/OfflineMaps/5/29/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/22.jpg b/MapControl/OfflineMaps/5/29/22.jpg deleted file mode 100644 index 078c5c6..0000000 Binary files a/MapControl/OfflineMaps/5/29/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/23.jpg b/MapControl/OfflineMaps/5/29/23.jpg deleted file mode 100644 index 7d3f497..0000000 Binary files a/MapControl/OfflineMaps/5/29/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/24.jpg b/MapControl/OfflineMaps/5/29/24.jpg deleted file mode 100644 index 942bd44..0000000 Binary files a/MapControl/OfflineMaps/5/29/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/25.jpg b/MapControl/OfflineMaps/5/29/25.jpg deleted file mode 100644 index 00ba974..0000000 Binary files a/MapControl/OfflineMaps/5/29/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/26.jpg b/MapControl/OfflineMaps/5/29/26.jpg deleted file mode 100644 index 2414ca0..0000000 Binary files a/MapControl/OfflineMaps/5/29/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/27.jpg b/MapControl/OfflineMaps/5/29/27.jpg deleted file mode 100644 index 8c19a66..0000000 Binary files a/MapControl/OfflineMaps/5/29/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/28.jpg b/MapControl/OfflineMaps/5/29/28.jpg deleted file mode 100644 index 67c38ac..0000000 Binary files a/MapControl/OfflineMaps/5/29/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/29.jpg b/MapControl/OfflineMaps/5/29/29.jpg deleted file mode 100644 index 83f41f3..0000000 Binary files a/MapControl/OfflineMaps/5/29/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/3.jpg b/MapControl/OfflineMaps/5/29/3.jpg deleted file mode 100644 index aa38b98..0000000 Binary files a/MapControl/OfflineMaps/5/29/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/30.jpg b/MapControl/OfflineMaps/5/29/30.jpg deleted file mode 100644 index 97bed2c..0000000 Binary files a/MapControl/OfflineMaps/5/29/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/31.jpg b/MapControl/OfflineMaps/5/29/31.jpg deleted file mode 100644 index be71c06..0000000 Binary files a/MapControl/OfflineMaps/5/29/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/4.jpg b/MapControl/OfflineMaps/5/29/4.jpg deleted file mode 100644 index 9d1d360..0000000 Binary files a/MapControl/OfflineMaps/5/29/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/5.jpg b/MapControl/OfflineMaps/5/29/5.jpg deleted file mode 100644 index 4dc4792..0000000 Binary files a/MapControl/OfflineMaps/5/29/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/6.jpg b/MapControl/OfflineMaps/5/29/6.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/29/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/7.jpg b/MapControl/OfflineMaps/5/29/7.jpg deleted file mode 100644 index 0df9313..0000000 Binary files a/MapControl/OfflineMaps/5/29/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/8.jpg b/MapControl/OfflineMaps/5/29/8.jpg deleted file mode 100644 index 000c56d..0000000 Binary files a/MapControl/OfflineMaps/5/29/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/29/9.jpg b/MapControl/OfflineMaps/5/29/9.jpg deleted file mode 100644 index 9ce991f..0000000 Binary files a/MapControl/OfflineMaps/5/29/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/0.jpg b/MapControl/OfflineMaps/5/3/0.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/3/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/1.jpg b/MapControl/OfflineMaps/5/3/1.jpg deleted file mode 100644 index 3c4544c..0000000 Binary files a/MapControl/OfflineMaps/5/3/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/10.jpg b/MapControl/OfflineMaps/5/3/10.jpg deleted file mode 100644 index 4b588ae..0000000 Binary files a/MapControl/OfflineMaps/5/3/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/11.jpg b/MapControl/OfflineMaps/5/3/11.jpg deleted file mode 100644 index bd66faa..0000000 Binary files a/MapControl/OfflineMaps/5/3/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/12.jpg b/MapControl/OfflineMaps/5/3/12.jpg deleted file mode 100644 index 442ab9f..0000000 Binary files a/MapControl/OfflineMaps/5/3/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/13.jpg b/MapControl/OfflineMaps/5/3/13.jpg deleted file mode 100644 index 4af4eb6..0000000 Binary files a/MapControl/OfflineMaps/5/3/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/14.jpg b/MapControl/OfflineMaps/5/3/14.jpg deleted file mode 100644 index c769b26..0000000 Binary files a/MapControl/OfflineMaps/5/3/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/15.jpg b/MapControl/OfflineMaps/5/3/15.jpg deleted file mode 100644 index 24d33ad..0000000 Binary files a/MapControl/OfflineMaps/5/3/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/16.jpg b/MapControl/OfflineMaps/5/3/16.jpg deleted file mode 100644 index fe16b71..0000000 Binary files a/MapControl/OfflineMaps/5/3/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/17.jpg b/MapControl/OfflineMaps/5/3/17.jpg deleted file mode 100644 index 529b780..0000000 Binary files a/MapControl/OfflineMaps/5/3/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/18.jpg b/MapControl/OfflineMaps/5/3/18.jpg deleted file mode 100644 index 7551a5c..0000000 Binary files a/MapControl/OfflineMaps/5/3/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/19.jpg b/MapControl/OfflineMaps/5/3/19.jpg deleted file mode 100644 index 61015cd..0000000 Binary files a/MapControl/OfflineMaps/5/3/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/2.jpg b/MapControl/OfflineMaps/5/3/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/3/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/20.jpg b/MapControl/OfflineMaps/5/3/20.jpg deleted file mode 100644 index 3252a93..0000000 Binary files a/MapControl/OfflineMaps/5/3/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/21.jpg b/MapControl/OfflineMaps/5/3/21.jpg deleted file mode 100644 index 9053600..0000000 Binary files a/MapControl/OfflineMaps/5/3/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/22.jpg b/MapControl/OfflineMaps/5/3/22.jpg deleted file mode 100644 index bb5bf5c..0000000 Binary files a/MapControl/OfflineMaps/5/3/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/23.jpg b/MapControl/OfflineMaps/5/3/23.jpg deleted file mode 100644 index d02ccb8..0000000 Binary files a/MapControl/OfflineMaps/5/3/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/24.jpg b/MapControl/OfflineMaps/5/3/24.jpg deleted file mode 100644 index e94c397..0000000 Binary files a/MapControl/OfflineMaps/5/3/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/25.jpg b/MapControl/OfflineMaps/5/3/25.jpg deleted file mode 100644 index 9664e05..0000000 Binary files a/MapControl/OfflineMaps/5/3/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/26.jpg b/MapControl/OfflineMaps/5/3/26.jpg deleted file mode 100644 index fd064fe..0000000 Binary files a/MapControl/OfflineMaps/5/3/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/27.jpg b/MapControl/OfflineMaps/5/3/27.jpg deleted file mode 100644 index 73fe26b..0000000 Binary files a/MapControl/OfflineMaps/5/3/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/28.jpg b/MapControl/OfflineMaps/5/3/28.jpg deleted file mode 100644 index 02aee5d..0000000 Binary files a/MapControl/OfflineMaps/5/3/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/29.jpg b/MapControl/OfflineMaps/5/3/29.jpg deleted file mode 100644 index ab2fc5b..0000000 Binary files a/MapControl/OfflineMaps/5/3/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/3.jpg b/MapControl/OfflineMaps/5/3/3.jpg deleted file mode 100644 index dfd2e3b..0000000 Binary files a/MapControl/OfflineMaps/5/3/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/30.jpg b/MapControl/OfflineMaps/5/3/30.jpg deleted file mode 100644 index 875f23c..0000000 Binary files a/MapControl/OfflineMaps/5/3/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/31.jpg b/MapControl/OfflineMaps/5/3/31.jpg deleted file mode 100644 index cf78165..0000000 Binary files a/MapControl/OfflineMaps/5/3/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/4.jpg b/MapControl/OfflineMaps/5/3/4.jpg deleted file mode 100644 index 4feacdb..0000000 Binary files a/MapControl/OfflineMaps/5/3/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/5.jpg b/MapControl/OfflineMaps/5/3/5.jpg deleted file mode 100644 index 486fb04..0000000 Binary files a/MapControl/OfflineMaps/5/3/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/6.jpg b/MapControl/OfflineMaps/5/3/6.jpg deleted file mode 100644 index feb7a3b..0000000 Binary files a/MapControl/OfflineMaps/5/3/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/7.jpg b/MapControl/OfflineMaps/5/3/7.jpg deleted file mode 100644 index c734e63..0000000 Binary files a/MapControl/OfflineMaps/5/3/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/8.jpg b/MapControl/OfflineMaps/5/3/8.jpg deleted file mode 100644 index 569d098..0000000 Binary files a/MapControl/OfflineMaps/5/3/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/3/9.jpg b/MapControl/OfflineMaps/5/3/9.jpg deleted file mode 100644 index dc28562..0000000 Binary files a/MapControl/OfflineMaps/5/3/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/0.jpg b/MapControl/OfflineMaps/5/30/0.jpg deleted file mode 100644 index 9c7179d..0000000 Binary files a/MapControl/OfflineMaps/5/30/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/1.jpg b/MapControl/OfflineMaps/5/30/1.jpg deleted file mode 100644 index 1cb2632..0000000 Binary files a/MapControl/OfflineMaps/5/30/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/10.jpg b/MapControl/OfflineMaps/5/30/10.jpg deleted file mode 100644 index 9d57f30..0000000 Binary files a/MapControl/OfflineMaps/5/30/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/11.jpg b/MapControl/OfflineMaps/5/30/11.jpg deleted file mode 100644 index eea38af..0000000 Binary files a/MapControl/OfflineMaps/5/30/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/12.jpg b/MapControl/OfflineMaps/5/30/12.jpg deleted file mode 100644 index bc5f705..0000000 Binary files a/MapControl/OfflineMaps/5/30/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/13.jpg b/MapControl/OfflineMaps/5/30/13.jpg deleted file mode 100644 index 40ccdee..0000000 Binary files a/MapControl/OfflineMaps/5/30/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/14.jpg b/MapControl/OfflineMaps/5/30/14.jpg deleted file mode 100644 index cc84a8e..0000000 Binary files a/MapControl/OfflineMaps/5/30/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/15.jpg b/MapControl/OfflineMaps/5/30/15.jpg deleted file mode 100644 index 9fd6eb4..0000000 Binary files a/MapControl/OfflineMaps/5/30/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/16.jpg b/MapControl/OfflineMaps/5/30/16.jpg deleted file mode 100644 index bc527a1..0000000 Binary files a/MapControl/OfflineMaps/5/30/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/17.jpg b/MapControl/OfflineMaps/5/30/17.jpg deleted file mode 100644 index ac24b4a..0000000 Binary files a/MapControl/OfflineMaps/5/30/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/18.jpg b/MapControl/OfflineMaps/5/30/18.jpg deleted file mode 100644 index 40cb451..0000000 Binary files a/MapControl/OfflineMaps/5/30/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/19.jpg b/MapControl/OfflineMaps/5/30/19.jpg deleted file mode 100644 index 84e103f..0000000 Binary files a/MapControl/OfflineMaps/5/30/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/2.jpg b/MapControl/OfflineMaps/5/30/2.jpg deleted file mode 100644 index b7a7560..0000000 Binary files a/MapControl/OfflineMaps/5/30/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/20.jpg b/MapControl/OfflineMaps/5/30/20.jpg deleted file mode 100644 index 3ec7d10..0000000 Binary files a/MapControl/OfflineMaps/5/30/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/21.jpg b/MapControl/OfflineMaps/5/30/21.jpg deleted file mode 100644 index 54c91c6..0000000 Binary files a/MapControl/OfflineMaps/5/30/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/22.jpg b/MapControl/OfflineMaps/5/30/22.jpg deleted file mode 100644 index 8c7a725..0000000 Binary files a/MapControl/OfflineMaps/5/30/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/23.jpg b/MapControl/OfflineMaps/5/30/23.jpg deleted file mode 100644 index 3f4be35..0000000 Binary files a/MapControl/OfflineMaps/5/30/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/24.jpg b/MapControl/OfflineMaps/5/30/24.jpg deleted file mode 100644 index 425902a..0000000 Binary files a/MapControl/OfflineMaps/5/30/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/25.jpg b/MapControl/OfflineMaps/5/30/25.jpg deleted file mode 100644 index 5562c05..0000000 Binary files a/MapControl/OfflineMaps/5/30/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/26.jpg b/MapControl/OfflineMaps/5/30/26.jpg deleted file mode 100644 index 5324260..0000000 Binary files a/MapControl/OfflineMaps/5/30/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/27.jpg b/MapControl/OfflineMaps/5/30/27.jpg deleted file mode 100644 index 01bae71..0000000 Binary files a/MapControl/OfflineMaps/5/30/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/28.jpg b/MapControl/OfflineMaps/5/30/28.jpg deleted file mode 100644 index ce13aed..0000000 Binary files a/MapControl/OfflineMaps/5/30/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/29.jpg b/MapControl/OfflineMaps/5/30/29.jpg deleted file mode 100644 index 96c23e5..0000000 Binary files a/MapControl/OfflineMaps/5/30/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/3.jpg b/MapControl/OfflineMaps/5/30/3.jpg deleted file mode 100644 index 02fe8de..0000000 Binary files a/MapControl/OfflineMaps/5/30/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/30.jpg b/MapControl/OfflineMaps/5/30/30.jpg deleted file mode 100644 index e04c025..0000000 Binary files a/MapControl/OfflineMaps/5/30/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/31.jpg b/MapControl/OfflineMaps/5/30/31.jpg deleted file mode 100644 index 52672b3..0000000 Binary files a/MapControl/OfflineMaps/5/30/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/4.jpg b/MapControl/OfflineMaps/5/30/4.jpg deleted file mode 100644 index 1b1fbd0..0000000 Binary files a/MapControl/OfflineMaps/5/30/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/5.jpg b/MapControl/OfflineMaps/5/30/5.jpg deleted file mode 100644 index 485c760..0000000 Binary files a/MapControl/OfflineMaps/5/30/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/6.jpg b/MapControl/OfflineMaps/5/30/6.jpg deleted file mode 100644 index cd87624..0000000 Binary files a/MapControl/OfflineMaps/5/30/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/7.jpg b/MapControl/OfflineMaps/5/30/7.jpg deleted file mode 100644 index 542a81e..0000000 Binary files a/MapControl/OfflineMaps/5/30/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/8.jpg b/MapControl/OfflineMaps/5/30/8.jpg deleted file mode 100644 index e13d850..0000000 Binary files a/MapControl/OfflineMaps/5/30/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/30/9.jpg b/MapControl/OfflineMaps/5/30/9.jpg deleted file mode 100644 index 8a960bb..0000000 Binary files a/MapControl/OfflineMaps/5/30/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/0.jpg b/MapControl/OfflineMaps/5/31/0.jpg deleted file mode 100644 index 86bb19f..0000000 Binary files a/MapControl/OfflineMaps/5/31/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/1.jpg b/MapControl/OfflineMaps/5/31/1.jpg deleted file mode 100644 index de4a651..0000000 Binary files a/MapControl/OfflineMaps/5/31/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/10.jpg b/MapControl/OfflineMaps/5/31/10.jpg deleted file mode 100644 index e5ebfce..0000000 Binary files a/MapControl/OfflineMaps/5/31/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/11.jpg b/MapControl/OfflineMaps/5/31/11.jpg deleted file mode 100644 index 9972cc8..0000000 Binary files a/MapControl/OfflineMaps/5/31/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/12.jpg b/MapControl/OfflineMaps/5/31/12.jpg deleted file mode 100644 index 39e1111..0000000 Binary files a/MapControl/OfflineMaps/5/31/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/13.jpg b/MapControl/OfflineMaps/5/31/13.jpg deleted file mode 100644 index 851e39a..0000000 Binary files a/MapControl/OfflineMaps/5/31/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/14.jpg b/MapControl/OfflineMaps/5/31/14.jpg deleted file mode 100644 index 5e5e6ad..0000000 Binary files a/MapControl/OfflineMaps/5/31/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/15.jpg b/MapControl/OfflineMaps/5/31/15.jpg deleted file mode 100644 index 925850e..0000000 Binary files a/MapControl/OfflineMaps/5/31/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/16.jpg b/MapControl/OfflineMaps/5/31/16.jpg deleted file mode 100644 index af23cc1..0000000 Binary files a/MapControl/OfflineMaps/5/31/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/17.jpg b/MapControl/OfflineMaps/5/31/17.jpg deleted file mode 100644 index 6242d1f..0000000 Binary files a/MapControl/OfflineMaps/5/31/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/18.jpg b/MapControl/OfflineMaps/5/31/18.jpg deleted file mode 100644 index 3e6f196..0000000 Binary files a/MapControl/OfflineMaps/5/31/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/19.jpg b/MapControl/OfflineMaps/5/31/19.jpg deleted file mode 100644 index 38420aa..0000000 Binary files a/MapControl/OfflineMaps/5/31/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/2.jpg b/MapControl/OfflineMaps/5/31/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/31/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/20.jpg b/MapControl/OfflineMaps/5/31/20.jpg deleted file mode 100644 index ed0edcb..0000000 Binary files a/MapControl/OfflineMaps/5/31/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/21.jpg b/MapControl/OfflineMaps/5/31/21.jpg deleted file mode 100644 index 8c615b5..0000000 Binary files a/MapControl/OfflineMaps/5/31/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/22.jpg b/MapControl/OfflineMaps/5/31/22.jpg deleted file mode 100644 index 9cd250f..0000000 Binary files a/MapControl/OfflineMaps/5/31/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/23.jpg b/MapControl/OfflineMaps/5/31/23.jpg deleted file mode 100644 index 7f377ab..0000000 Binary files a/MapControl/OfflineMaps/5/31/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/24.jpg b/MapControl/OfflineMaps/5/31/24.jpg deleted file mode 100644 index f664645..0000000 Binary files a/MapControl/OfflineMaps/5/31/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/25.jpg b/MapControl/OfflineMaps/5/31/25.jpg deleted file mode 100644 index b35f5c4..0000000 Binary files a/MapControl/OfflineMaps/5/31/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/26.jpg b/MapControl/OfflineMaps/5/31/26.jpg deleted file mode 100644 index f365896..0000000 Binary files a/MapControl/OfflineMaps/5/31/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/27.jpg b/MapControl/OfflineMaps/5/31/27.jpg deleted file mode 100644 index 41e8c40..0000000 Binary files a/MapControl/OfflineMaps/5/31/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/28.jpg b/MapControl/OfflineMaps/5/31/28.jpg deleted file mode 100644 index 5d44574..0000000 Binary files a/MapControl/OfflineMaps/5/31/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/29.jpg b/MapControl/OfflineMaps/5/31/29.jpg deleted file mode 100644 index 905433a..0000000 Binary files a/MapControl/OfflineMaps/5/31/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/3.jpg b/MapControl/OfflineMaps/5/31/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/31/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/30.jpg b/MapControl/OfflineMaps/5/31/30.jpg deleted file mode 100644 index dbfcafe..0000000 Binary files a/MapControl/OfflineMaps/5/31/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/31.jpg b/MapControl/OfflineMaps/5/31/31.jpg deleted file mode 100644 index 46b556c..0000000 Binary files a/MapControl/OfflineMaps/5/31/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/4.jpg b/MapControl/OfflineMaps/5/31/4.jpg deleted file mode 100644 index 61e8b1b..0000000 Binary files a/MapControl/OfflineMaps/5/31/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/5.jpg b/MapControl/OfflineMaps/5/31/5.jpg deleted file mode 100644 index 1a6b019..0000000 Binary files a/MapControl/OfflineMaps/5/31/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/6.jpg b/MapControl/OfflineMaps/5/31/6.jpg deleted file mode 100644 index afe367c..0000000 Binary files a/MapControl/OfflineMaps/5/31/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/7.jpg b/MapControl/OfflineMaps/5/31/7.jpg deleted file mode 100644 index 01eeccd..0000000 Binary files a/MapControl/OfflineMaps/5/31/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/8.jpg b/MapControl/OfflineMaps/5/31/8.jpg deleted file mode 100644 index c0b1b6a..0000000 Binary files a/MapControl/OfflineMaps/5/31/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/31/9.jpg b/MapControl/OfflineMaps/5/31/9.jpg deleted file mode 100644 index bdc78e1..0000000 Binary files a/MapControl/OfflineMaps/5/31/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/0.jpg b/MapControl/OfflineMaps/5/4/0.jpg deleted file mode 100644 index 2c0241f..0000000 Binary files a/MapControl/OfflineMaps/5/4/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/1.jpg b/MapControl/OfflineMaps/5/4/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/4/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/10.jpg b/MapControl/OfflineMaps/5/4/10.jpg deleted file mode 100644 index 6b2c2ee..0000000 Binary files a/MapControl/OfflineMaps/5/4/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/11.jpg b/MapControl/OfflineMaps/5/4/11.jpg deleted file mode 100644 index 9af8672..0000000 Binary files a/MapControl/OfflineMaps/5/4/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/12.jpg b/MapControl/OfflineMaps/5/4/12.jpg deleted file mode 100644 index ae92a55..0000000 Binary files a/MapControl/OfflineMaps/5/4/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/13.jpg b/MapControl/OfflineMaps/5/4/13.jpg deleted file mode 100644 index 295db3b..0000000 Binary files a/MapControl/OfflineMaps/5/4/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/14.jpg b/MapControl/OfflineMaps/5/4/14.jpg deleted file mode 100644 index 9d0df3a..0000000 Binary files a/MapControl/OfflineMaps/5/4/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/15.jpg b/MapControl/OfflineMaps/5/4/15.jpg deleted file mode 100644 index a2c1353..0000000 Binary files a/MapControl/OfflineMaps/5/4/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/16.jpg b/MapControl/OfflineMaps/5/4/16.jpg deleted file mode 100644 index c2070df..0000000 Binary files a/MapControl/OfflineMaps/5/4/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/17.jpg b/MapControl/OfflineMaps/5/4/17.jpg deleted file mode 100644 index 3f1df9b..0000000 Binary files a/MapControl/OfflineMaps/5/4/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/18.jpg b/MapControl/OfflineMaps/5/4/18.jpg deleted file mode 100644 index a8e823b..0000000 Binary files a/MapControl/OfflineMaps/5/4/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/19.jpg b/MapControl/OfflineMaps/5/4/19.jpg deleted file mode 100644 index d17041c..0000000 Binary files a/MapControl/OfflineMaps/5/4/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/2.jpg b/MapControl/OfflineMaps/5/4/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/4/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/20.jpg b/MapControl/OfflineMaps/5/4/20.jpg deleted file mode 100644 index e23c152..0000000 Binary files a/MapControl/OfflineMaps/5/4/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/21.jpg b/MapControl/OfflineMaps/5/4/21.jpg deleted file mode 100644 index dc37b7e..0000000 Binary files a/MapControl/OfflineMaps/5/4/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/22.jpg b/MapControl/OfflineMaps/5/4/22.jpg deleted file mode 100644 index 9f362d6..0000000 Binary files a/MapControl/OfflineMaps/5/4/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/23.jpg b/MapControl/OfflineMaps/5/4/23.jpg deleted file mode 100644 index d049324..0000000 Binary files a/MapControl/OfflineMaps/5/4/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/24.jpg b/MapControl/OfflineMaps/5/4/24.jpg deleted file mode 100644 index 280319d..0000000 Binary files a/MapControl/OfflineMaps/5/4/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/25.jpg b/MapControl/OfflineMaps/5/4/25.jpg deleted file mode 100644 index 7b674e7..0000000 Binary files a/MapControl/OfflineMaps/5/4/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/26.jpg b/MapControl/OfflineMaps/5/4/26.jpg deleted file mode 100644 index c596048..0000000 Binary files a/MapControl/OfflineMaps/5/4/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/27.jpg b/MapControl/OfflineMaps/5/4/27.jpg deleted file mode 100644 index d9de337..0000000 Binary files a/MapControl/OfflineMaps/5/4/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/28.jpg b/MapControl/OfflineMaps/5/4/28.jpg deleted file mode 100644 index 8e9d0cc..0000000 Binary files a/MapControl/OfflineMaps/5/4/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/29.jpg b/MapControl/OfflineMaps/5/4/29.jpg deleted file mode 100644 index 13cba8e..0000000 Binary files a/MapControl/OfflineMaps/5/4/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/3.jpg b/MapControl/OfflineMaps/5/4/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/4/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/30.jpg b/MapControl/OfflineMaps/5/4/30.jpg deleted file mode 100644 index abdf1ef..0000000 Binary files a/MapControl/OfflineMaps/5/4/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/31.jpg b/MapControl/OfflineMaps/5/4/31.jpg deleted file mode 100644 index 5bbd081..0000000 Binary files a/MapControl/OfflineMaps/5/4/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/4.jpg b/MapControl/OfflineMaps/5/4/4.jpg deleted file mode 100644 index 0bf4381..0000000 Binary files a/MapControl/OfflineMaps/5/4/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/5.jpg b/MapControl/OfflineMaps/5/4/5.jpg deleted file mode 100644 index ba7ad38..0000000 Binary files a/MapControl/OfflineMaps/5/4/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/6.jpg b/MapControl/OfflineMaps/5/4/6.jpg deleted file mode 100644 index 956a1b5..0000000 Binary files a/MapControl/OfflineMaps/5/4/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/7.jpg b/MapControl/OfflineMaps/5/4/7.jpg deleted file mode 100644 index 8870965..0000000 Binary files a/MapControl/OfflineMaps/5/4/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/8.jpg b/MapControl/OfflineMaps/5/4/8.jpg deleted file mode 100644 index 0095c29..0000000 Binary files a/MapControl/OfflineMaps/5/4/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/4/9.jpg b/MapControl/OfflineMaps/5/4/9.jpg deleted file mode 100644 index 7d43c6f..0000000 Binary files a/MapControl/OfflineMaps/5/4/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/0.jpg b/MapControl/OfflineMaps/5/5/0.jpg deleted file mode 100644 index 8eec0ab..0000000 Binary files a/MapControl/OfflineMaps/5/5/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/1.jpg b/MapControl/OfflineMaps/5/5/1.jpg deleted file mode 100644 index 7a584a5..0000000 Binary files a/MapControl/OfflineMaps/5/5/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/10.jpg b/MapControl/OfflineMaps/5/5/10.jpg deleted file mode 100644 index d8cc09b..0000000 Binary files a/MapControl/OfflineMaps/5/5/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/11.jpg b/MapControl/OfflineMaps/5/5/11.jpg deleted file mode 100644 index 34dd00f..0000000 Binary files a/MapControl/OfflineMaps/5/5/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/12.jpg b/MapControl/OfflineMaps/5/5/12.jpg deleted file mode 100644 index b08d763..0000000 Binary files a/MapControl/OfflineMaps/5/5/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/13.jpg b/MapControl/OfflineMaps/5/5/13.jpg deleted file mode 100644 index ea4d52a..0000000 Binary files a/MapControl/OfflineMaps/5/5/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/14.jpg b/MapControl/OfflineMaps/5/5/14.jpg deleted file mode 100644 index 09ad819..0000000 Binary files a/MapControl/OfflineMaps/5/5/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/15.jpg b/MapControl/OfflineMaps/5/5/15.jpg deleted file mode 100644 index ac6a5a1..0000000 Binary files a/MapControl/OfflineMaps/5/5/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/16.jpg b/MapControl/OfflineMaps/5/5/16.jpg deleted file mode 100644 index ac06180..0000000 Binary files a/MapControl/OfflineMaps/5/5/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/17.jpg b/MapControl/OfflineMaps/5/5/17.jpg deleted file mode 100644 index 84cbbfe..0000000 Binary files a/MapControl/OfflineMaps/5/5/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/18.jpg b/MapControl/OfflineMaps/5/5/18.jpg deleted file mode 100644 index 01cec5f..0000000 Binary files a/MapControl/OfflineMaps/5/5/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/19.jpg b/MapControl/OfflineMaps/5/5/19.jpg deleted file mode 100644 index a964cdc..0000000 Binary files a/MapControl/OfflineMaps/5/5/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/2.jpg b/MapControl/OfflineMaps/5/5/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/5/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/20.jpg b/MapControl/OfflineMaps/5/5/20.jpg deleted file mode 100644 index 264c5ce..0000000 Binary files a/MapControl/OfflineMaps/5/5/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/21.jpg b/MapControl/OfflineMaps/5/5/21.jpg deleted file mode 100644 index 94680fc..0000000 Binary files a/MapControl/OfflineMaps/5/5/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/22.jpg b/MapControl/OfflineMaps/5/5/22.jpg deleted file mode 100644 index 101556f..0000000 Binary files a/MapControl/OfflineMaps/5/5/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/23.jpg b/MapControl/OfflineMaps/5/5/23.jpg deleted file mode 100644 index c264854..0000000 Binary files a/MapControl/OfflineMaps/5/5/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/24.jpg b/MapControl/OfflineMaps/5/5/24.jpg deleted file mode 100644 index 0009922..0000000 Binary files a/MapControl/OfflineMaps/5/5/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/25.jpg b/MapControl/OfflineMaps/5/5/25.jpg deleted file mode 100644 index 17d067b..0000000 Binary files a/MapControl/OfflineMaps/5/5/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/26.jpg b/MapControl/OfflineMaps/5/5/26.jpg deleted file mode 100644 index f37a010..0000000 Binary files a/MapControl/OfflineMaps/5/5/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/27.jpg b/MapControl/OfflineMaps/5/5/27.jpg deleted file mode 100644 index 0c06c0c..0000000 Binary files a/MapControl/OfflineMaps/5/5/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/28.jpg b/MapControl/OfflineMaps/5/5/28.jpg deleted file mode 100644 index 8cc0aaf..0000000 Binary files a/MapControl/OfflineMaps/5/5/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/29.jpg b/MapControl/OfflineMaps/5/5/29.jpg deleted file mode 100644 index 683464c..0000000 Binary files a/MapControl/OfflineMaps/5/5/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/3.jpg b/MapControl/OfflineMaps/5/5/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/5/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/30.jpg b/MapControl/OfflineMaps/5/5/30.jpg deleted file mode 100644 index 5ce406e..0000000 Binary files a/MapControl/OfflineMaps/5/5/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/31.jpg b/MapControl/OfflineMaps/5/5/31.jpg deleted file mode 100644 index f1d2ff1..0000000 Binary files a/MapControl/OfflineMaps/5/5/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/4.jpg b/MapControl/OfflineMaps/5/5/4.jpg deleted file mode 100644 index eef58a2..0000000 Binary files a/MapControl/OfflineMaps/5/5/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/5.jpg b/MapControl/OfflineMaps/5/5/5.jpg deleted file mode 100644 index b053e36..0000000 Binary files a/MapControl/OfflineMaps/5/5/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/6.jpg b/MapControl/OfflineMaps/5/5/6.jpg deleted file mode 100644 index 0e73c66..0000000 Binary files a/MapControl/OfflineMaps/5/5/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/7.jpg b/MapControl/OfflineMaps/5/5/7.jpg deleted file mode 100644 index 676b71b..0000000 Binary files a/MapControl/OfflineMaps/5/5/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/8.jpg b/MapControl/OfflineMaps/5/5/8.jpg deleted file mode 100644 index 5eeea7b..0000000 Binary files a/MapControl/OfflineMaps/5/5/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/5/9.jpg b/MapControl/OfflineMaps/5/5/9.jpg deleted file mode 100644 index 23581f1..0000000 Binary files a/MapControl/OfflineMaps/5/5/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/0.jpg b/MapControl/OfflineMaps/5/6/0.jpg deleted file mode 100644 index 29c58f3..0000000 Binary files a/MapControl/OfflineMaps/5/6/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/1.jpg b/MapControl/OfflineMaps/5/6/1.jpg deleted file mode 100644 index e0a009e..0000000 Binary files a/MapControl/OfflineMaps/5/6/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/10.jpg b/MapControl/OfflineMaps/5/6/10.jpg deleted file mode 100644 index dfee815..0000000 Binary files a/MapControl/OfflineMaps/5/6/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/11.jpg b/MapControl/OfflineMaps/5/6/11.jpg deleted file mode 100644 index 8557cc0..0000000 Binary files a/MapControl/OfflineMaps/5/6/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/12.jpg b/MapControl/OfflineMaps/5/6/12.jpg deleted file mode 100644 index 52de3b8..0000000 Binary files a/MapControl/OfflineMaps/5/6/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/13.jpg b/MapControl/OfflineMaps/5/6/13.jpg deleted file mode 100644 index bdfa6a5..0000000 Binary files a/MapControl/OfflineMaps/5/6/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/14.jpg b/MapControl/OfflineMaps/5/6/14.jpg deleted file mode 100644 index b4847bd..0000000 Binary files a/MapControl/OfflineMaps/5/6/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/15.jpg b/MapControl/OfflineMaps/5/6/15.jpg deleted file mode 100644 index 90afbb0..0000000 Binary files a/MapControl/OfflineMaps/5/6/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/16.jpg b/MapControl/OfflineMaps/5/6/16.jpg deleted file mode 100644 index 6651325..0000000 Binary files a/MapControl/OfflineMaps/5/6/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/17.jpg b/MapControl/OfflineMaps/5/6/17.jpg deleted file mode 100644 index 1e7e8e7..0000000 Binary files a/MapControl/OfflineMaps/5/6/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/18.jpg b/MapControl/OfflineMaps/5/6/18.jpg deleted file mode 100644 index c288137..0000000 Binary files a/MapControl/OfflineMaps/5/6/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/19.jpg b/MapControl/OfflineMaps/5/6/19.jpg deleted file mode 100644 index 84bc448..0000000 Binary files a/MapControl/OfflineMaps/5/6/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/2.jpg b/MapControl/OfflineMaps/5/6/2.jpg deleted file mode 100644 index d7b1d59..0000000 Binary files a/MapControl/OfflineMaps/5/6/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/20.jpg b/MapControl/OfflineMaps/5/6/20.jpg deleted file mode 100644 index a27c447..0000000 Binary files a/MapControl/OfflineMaps/5/6/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/21.jpg b/MapControl/OfflineMaps/5/6/21.jpg deleted file mode 100644 index f0c24a1..0000000 Binary files a/MapControl/OfflineMaps/5/6/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/22.jpg b/MapControl/OfflineMaps/5/6/22.jpg deleted file mode 100644 index fe85327..0000000 Binary files a/MapControl/OfflineMaps/5/6/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/23.jpg b/MapControl/OfflineMaps/5/6/23.jpg deleted file mode 100644 index 5160a83..0000000 Binary files a/MapControl/OfflineMaps/5/6/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/24.jpg b/MapControl/OfflineMaps/5/6/24.jpg deleted file mode 100644 index 4109535..0000000 Binary files a/MapControl/OfflineMaps/5/6/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/25.jpg b/MapControl/OfflineMaps/5/6/25.jpg deleted file mode 100644 index 45b8978..0000000 Binary files a/MapControl/OfflineMaps/5/6/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/26.jpg b/MapControl/OfflineMaps/5/6/26.jpg deleted file mode 100644 index d187809..0000000 Binary files a/MapControl/OfflineMaps/5/6/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/27.jpg b/MapControl/OfflineMaps/5/6/27.jpg deleted file mode 100644 index 0fa6299..0000000 Binary files a/MapControl/OfflineMaps/5/6/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/28.jpg b/MapControl/OfflineMaps/5/6/28.jpg deleted file mode 100644 index d4c72c7..0000000 Binary files a/MapControl/OfflineMaps/5/6/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/29.jpg b/MapControl/OfflineMaps/5/6/29.jpg deleted file mode 100644 index c530a76..0000000 Binary files a/MapControl/OfflineMaps/5/6/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/3.jpg b/MapControl/OfflineMaps/5/6/3.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/6/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/30.jpg b/MapControl/OfflineMaps/5/6/30.jpg deleted file mode 100644 index acc7aed..0000000 Binary files a/MapControl/OfflineMaps/5/6/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/31.jpg b/MapControl/OfflineMaps/5/6/31.jpg deleted file mode 100644 index f38fb26..0000000 Binary files a/MapControl/OfflineMaps/5/6/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/4.jpg b/MapControl/OfflineMaps/5/6/4.jpg deleted file mode 100644 index b0d716c..0000000 Binary files a/MapControl/OfflineMaps/5/6/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/5.jpg b/MapControl/OfflineMaps/5/6/5.jpg deleted file mode 100644 index aade28c..0000000 Binary files a/MapControl/OfflineMaps/5/6/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/6.jpg b/MapControl/OfflineMaps/5/6/6.jpg deleted file mode 100644 index 638ba5c..0000000 Binary files a/MapControl/OfflineMaps/5/6/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/7.jpg b/MapControl/OfflineMaps/5/6/7.jpg deleted file mode 100644 index 3c59ada..0000000 Binary files a/MapControl/OfflineMaps/5/6/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/8.jpg b/MapControl/OfflineMaps/5/6/8.jpg deleted file mode 100644 index 6bd7cd0..0000000 Binary files a/MapControl/OfflineMaps/5/6/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/6/9.jpg b/MapControl/OfflineMaps/5/6/9.jpg deleted file mode 100644 index f437928..0000000 Binary files a/MapControl/OfflineMaps/5/6/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/0.jpg b/MapControl/OfflineMaps/5/7/0.jpg deleted file mode 100644 index 0cd250f..0000000 Binary files a/MapControl/OfflineMaps/5/7/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/1.jpg b/MapControl/OfflineMaps/5/7/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/7/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/10.jpg b/MapControl/OfflineMaps/5/7/10.jpg deleted file mode 100644 index 4d3d834..0000000 Binary files a/MapControl/OfflineMaps/5/7/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/11.jpg b/MapControl/OfflineMaps/5/7/11.jpg deleted file mode 100644 index 50d797d..0000000 Binary files a/MapControl/OfflineMaps/5/7/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/12.jpg b/MapControl/OfflineMaps/5/7/12.jpg deleted file mode 100644 index c2da934..0000000 Binary files a/MapControl/OfflineMaps/5/7/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/13.jpg b/MapControl/OfflineMaps/5/7/13.jpg deleted file mode 100644 index 1cc8d3e..0000000 Binary files a/MapControl/OfflineMaps/5/7/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/14.jpg b/MapControl/OfflineMaps/5/7/14.jpg deleted file mode 100644 index 6626507..0000000 Binary files a/MapControl/OfflineMaps/5/7/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/15.jpg b/MapControl/OfflineMaps/5/7/15.jpg deleted file mode 100644 index 0f1af46..0000000 Binary files a/MapControl/OfflineMaps/5/7/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/16.jpg b/MapControl/OfflineMaps/5/7/16.jpg deleted file mode 100644 index 8c1b5a2..0000000 Binary files a/MapControl/OfflineMaps/5/7/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/17.jpg b/MapControl/OfflineMaps/5/7/17.jpg deleted file mode 100644 index 3fd5d64..0000000 Binary files a/MapControl/OfflineMaps/5/7/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/18.jpg b/MapControl/OfflineMaps/5/7/18.jpg deleted file mode 100644 index 815a2b3..0000000 Binary files a/MapControl/OfflineMaps/5/7/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/19.jpg b/MapControl/OfflineMaps/5/7/19.jpg deleted file mode 100644 index 31f6609..0000000 Binary files a/MapControl/OfflineMaps/5/7/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/2.jpg b/MapControl/OfflineMaps/5/7/2.jpg deleted file mode 100644 index 1558472..0000000 Binary files a/MapControl/OfflineMaps/5/7/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/20.jpg b/MapControl/OfflineMaps/5/7/20.jpg deleted file mode 100644 index 192bcf9..0000000 Binary files a/MapControl/OfflineMaps/5/7/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/21.jpg b/MapControl/OfflineMaps/5/7/21.jpg deleted file mode 100644 index 1882266..0000000 Binary files a/MapControl/OfflineMaps/5/7/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/22.jpg b/MapControl/OfflineMaps/5/7/22.jpg deleted file mode 100644 index fe6ae97..0000000 Binary files a/MapControl/OfflineMaps/5/7/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/23.jpg b/MapControl/OfflineMaps/5/7/23.jpg deleted file mode 100644 index 8d31c15..0000000 Binary files a/MapControl/OfflineMaps/5/7/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/24.jpg b/MapControl/OfflineMaps/5/7/24.jpg deleted file mode 100644 index 0125eac..0000000 Binary files a/MapControl/OfflineMaps/5/7/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/25.jpg b/MapControl/OfflineMaps/5/7/25.jpg deleted file mode 100644 index d1fe2c4..0000000 Binary files a/MapControl/OfflineMaps/5/7/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/26.jpg b/MapControl/OfflineMaps/5/7/26.jpg deleted file mode 100644 index 4c03365..0000000 Binary files a/MapControl/OfflineMaps/5/7/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/27.jpg b/MapControl/OfflineMaps/5/7/27.jpg deleted file mode 100644 index fc326e8..0000000 Binary files a/MapControl/OfflineMaps/5/7/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/28.jpg b/MapControl/OfflineMaps/5/7/28.jpg deleted file mode 100644 index 8b504da..0000000 Binary files a/MapControl/OfflineMaps/5/7/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/29.jpg b/MapControl/OfflineMaps/5/7/29.jpg deleted file mode 100644 index 0732707..0000000 Binary files a/MapControl/OfflineMaps/5/7/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/3.jpg b/MapControl/OfflineMaps/5/7/3.jpg deleted file mode 100644 index 88aa09d..0000000 Binary files a/MapControl/OfflineMaps/5/7/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/30.jpg b/MapControl/OfflineMaps/5/7/30.jpg deleted file mode 100644 index f4d74d0..0000000 Binary files a/MapControl/OfflineMaps/5/7/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/31.jpg b/MapControl/OfflineMaps/5/7/31.jpg deleted file mode 100644 index 4a68333..0000000 Binary files a/MapControl/OfflineMaps/5/7/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/4.jpg b/MapControl/OfflineMaps/5/7/4.jpg deleted file mode 100644 index dddbe58..0000000 Binary files a/MapControl/OfflineMaps/5/7/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/5.jpg b/MapControl/OfflineMaps/5/7/5.jpg deleted file mode 100644 index 0a180f4..0000000 Binary files a/MapControl/OfflineMaps/5/7/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/6.jpg b/MapControl/OfflineMaps/5/7/6.jpg deleted file mode 100644 index 1efe91b..0000000 Binary files a/MapControl/OfflineMaps/5/7/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/7.jpg b/MapControl/OfflineMaps/5/7/7.jpg deleted file mode 100644 index 1e87b19..0000000 Binary files a/MapControl/OfflineMaps/5/7/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/8.jpg b/MapControl/OfflineMaps/5/7/8.jpg deleted file mode 100644 index 559136b..0000000 Binary files a/MapControl/OfflineMaps/5/7/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/7/9.jpg b/MapControl/OfflineMaps/5/7/9.jpg deleted file mode 100644 index 586f81a..0000000 Binary files a/MapControl/OfflineMaps/5/7/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/0.jpg b/MapControl/OfflineMaps/5/8/0.jpg deleted file mode 100644 index 3c5ea86..0000000 Binary files a/MapControl/OfflineMaps/5/8/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/1.jpg b/MapControl/OfflineMaps/5/8/1.jpg deleted file mode 100644 index 0b0eeb0..0000000 Binary files a/MapControl/OfflineMaps/5/8/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/10.jpg b/MapControl/OfflineMaps/5/8/10.jpg deleted file mode 100644 index 9676c5b..0000000 Binary files a/MapControl/OfflineMaps/5/8/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/11.jpg b/MapControl/OfflineMaps/5/8/11.jpg deleted file mode 100644 index 523df18..0000000 Binary files a/MapControl/OfflineMaps/5/8/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/12.jpg b/MapControl/OfflineMaps/5/8/12.jpg deleted file mode 100644 index f4b4f79..0000000 Binary files a/MapControl/OfflineMaps/5/8/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/13.jpg b/MapControl/OfflineMaps/5/8/13.jpg deleted file mode 100644 index 9ec9b96..0000000 Binary files a/MapControl/OfflineMaps/5/8/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/14.jpg b/MapControl/OfflineMaps/5/8/14.jpg deleted file mode 100644 index a98b50d..0000000 Binary files a/MapControl/OfflineMaps/5/8/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/15.jpg b/MapControl/OfflineMaps/5/8/15.jpg deleted file mode 100644 index 1343c7c..0000000 Binary files a/MapControl/OfflineMaps/5/8/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/16.jpg b/MapControl/OfflineMaps/5/8/16.jpg deleted file mode 100644 index 0c73c2a..0000000 Binary files a/MapControl/OfflineMaps/5/8/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/17.jpg b/MapControl/OfflineMaps/5/8/17.jpg deleted file mode 100644 index a042ecf..0000000 Binary files a/MapControl/OfflineMaps/5/8/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/18.jpg b/MapControl/OfflineMaps/5/8/18.jpg deleted file mode 100644 index 0302c30..0000000 Binary files a/MapControl/OfflineMaps/5/8/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/19.jpg b/MapControl/OfflineMaps/5/8/19.jpg deleted file mode 100644 index 238d95d..0000000 Binary files a/MapControl/OfflineMaps/5/8/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/2.jpg b/MapControl/OfflineMaps/5/8/2.jpg deleted file mode 100644 index 3cd5c73..0000000 Binary files a/MapControl/OfflineMaps/5/8/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/20.jpg b/MapControl/OfflineMaps/5/8/20.jpg deleted file mode 100644 index 9ad3dcb..0000000 Binary files a/MapControl/OfflineMaps/5/8/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/21.jpg b/MapControl/OfflineMaps/5/8/21.jpg deleted file mode 100644 index 5065388..0000000 Binary files a/MapControl/OfflineMaps/5/8/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/22.jpg b/MapControl/OfflineMaps/5/8/22.jpg deleted file mode 100644 index 24d65e3..0000000 Binary files a/MapControl/OfflineMaps/5/8/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/23.jpg b/MapControl/OfflineMaps/5/8/23.jpg deleted file mode 100644 index 40e84a4..0000000 Binary files a/MapControl/OfflineMaps/5/8/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/24.jpg b/MapControl/OfflineMaps/5/8/24.jpg deleted file mode 100644 index e09169d..0000000 Binary files a/MapControl/OfflineMaps/5/8/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/25.jpg b/MapControl/OfflineMaps/5/8/25.jpg deleted file mode 100644 index db8b644..0000000 Binary files a/MapControl/OfflineMaps/5/8/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/26.jpg b/MapControl/OfflineMaps/5/8/26.jpg deleted file mode 100644 index 154011f..0000000 Binary files a/MapControl/OfflineMaps/5/8/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/27.jpg b/MapControl/OfflineMaps/5/8/27.jpg deleted file mode 100644 index abed8df..0000000 Binary files a/MapControl/OfflineMaps/5/8/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/28.jpg b/MapControl/OfflineMaps/5/8/28.jpg deleted file mode 100644 index e81258f..0000000 Binary files a/MapControl/OfflineMaps/5/8/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/29.jpg b/MapControl/OfflineMaps/5/8/29.jpg deleted file mode 100644 index 59cb606..0000000 Binary files a/MapControl/OfflineMaps/5/8/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/3.jpg b/MapControl/OfflineMaps/5/8/3.jpg deleted file mode 100644 index 95ec69b..0000000 Binary files a/MapControl/OfflineMaps/5/8/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/30.jpg b/MapControl/OfflineMaps/5/8/30.jpg deleted file mode 100644 index a61444b..0000000 Binary files a/MapControl/OfflineMaps/5/8/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/31.jpg b/MapControl/OfflineMaps/5/8/31.jpg deleted file mode 100644 index 12284dd..0000000 Binary files a/MapControl/OfflineMaps/5/8/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/4.jpg b/MapControl/OfflineMaps/5/8/4.jpg deleted file mode 100644 index f4c58aa..0000000 Binary files a/MapControl/OfflineMaps/5/8/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/5.jpg b/MapControl/OfflineMaps/5/8/5.jpg deleted file mode 100644 index e1313e0..0000000 Binary files a/MapControl/OfflineMaps/5/8/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/6.jpg b/MapControl/OfflineMaps/5/8/6.jpg deleted file mode 100644 index 7e42bcc..0000000 Binary files a/MapControl/OfflineMaps/5/8/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/7.jpg b/MapControl/OfflineMaps/5/8/7.jpg deleted file mode 100644 index 489ccaa..0000000 Binary files a/MapControl/OfflineMaps/5/8/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/8.jpg b/MapControl/OfflineMaps/5/8/8.jpg deleted file mode 100644 index 3f5479a..0000000 Binary files a/MapControl/OfflineMaps/5/8/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/8/9.jpg b/MapControl/OfflineMaps/5/8/9.jpg deleted file mode 100644 index 8668a87..0000000 Binary files a/MapControl/OfflineMaps/5/8/9.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/0.jpg b/MapControl/OfflineMaps/5/9/0.jpg deleted file mode 100644 index fc1d7b3..0000000 Binary files a/MapControl/OfflineMaps/5/9/0.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/1.jpg b/MapControl/OfflineMaps/5/9/1.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/9/1.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/10.jpg b/MapControl/OfflineMaps/5/9/10.jpg deleted file mode 100644 index a1aef8d..0000000 Binary files a/MapControl/OfflineMaps/5/9/10.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/11.jpg b/MapControl/OfflineMaps/5/9/11.jpg deleted file mode 100644 index b3146b3..0000000 Binary files a/MapControl/OfflineMaps/5/9/11.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/12.jpg b/MapControl/OfflineMaps/5/9/12.jpg deleted file mode 100644 index e650d68..0000000 Binary files a/MapControl/OfflineMaps/5/9/12.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/13.jpg b/MapControl/OfflineMaps/5/9/13.jpg deleted file mode 100644 index 9d7c59e..0000000 Binary files a/MapControl/OfflineMaps/5/9/13.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/14.jpg b/MapControl/OfflineMaps/5/9/14.jpg deleted file mode 100644 index a30186a..0000000 Binary files a/MapControl/OfflineMaps/5/9/14.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/15.jpg b/MapControl/OfflineMaps/5/9/15.jpg deleted file mode 100644 index f991189..0000000 Binary files a/MapControl/OfflineMaps/5/9/15.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/16.jpg b/MapControl/OfflineMaps/5/9/16.jpg deleted file mode 100644 index f55b1bf..0000000 Binary files a/MapControl/OfflineMaps/5/9/16.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/17.jpg b/MapControl/OfflineMaps/5/9/17.jpg deleted file mode 100644 index 1c5b33b..0000000 Binary files a/MapControl/OfflineMaps/5/9/17.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/18.jpg b/MapControl/OfflineMaps/5/9/18.jpg deleted file mode 100644 index 94ef23e..0000000 Binary files a/MapControl/OfflineMaps/5/9/18.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/19.jpg b/MapControl/OfflineMaps/5/9/19.jpg deleted file mode 100644 index 4138278..0000000 Binary files a/MapControl/OfflineMaps/5/9/19.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/2.jpg b/MapControl/OfflineMaps/5/9/2.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/9/2.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/20.jpg b/MapControl/OfflineMaps/5/9/20.jpg deleted file mode 100644 index 0b70fe4..0000000 Binary files a/MapControl/OfflineMaps/5/9/20.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/21.jpg b/MapControl/OfflineMaps/5/9/21.jpg deleted file mode 100644 index fd51772..0000000 Binary files a/MapControl/OfflineMaps/5/9/21.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/22.jpg b/MapControl/OfflineMaps/5/9/22.jpg deleted file mode 100644 index 8b1f0bc..0000000 Binary files a/MapControl/OfflineMaps/5/9/22.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/23.jpg b/MapControl/OfflineMaps/5/9/23.jpg deleted file mode 100644 index 8f38406..0000000 Binary files a/MapControl/OfflineMaps/5/9/23.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/24.jpg b/MapControl/OfflineMaps/5/9/24.jpg deleted file mode 100644 index bd8b9ae..0000000 Binary files a/MapControl/OfflineMaps/5/9/24.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/25.jpg b/MapControl/OfflineMaps/5/9/25.jpg deleted file mode 100644 index e49864c..0000000 Binary files a/MapControl/OfflineMaps/5/9/25.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/26.jpg b/MapControl/OfflineMaps/5/9/26.jpg deleted file mode 100644 index 21a497f..0000000 Binary files a/MapControl/OfflineMaps/5/9/26.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/27.jpg b/MapControl/OfflineMaps/5/9/27.jpg deleted file mode 100644 index 88d33bc..0000000 Binary files a/MapControl/OfflineMaps/5/9/27.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/28.jpg b/MapControl/OfflineMaps/5/9/28.jpg deleted file mode 100644 index 1e25a69..0000000 Binary files a/MapControl/OfflineMaps/5/9/28.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/29.jpg b/MapControl/OfflineMaps/5/9/29.jpg deleted file mode 100644 index 576b2a8..0000000 Binary files a/MapControl/OfflineMaps/5/9/29.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/3.jpg b/MapControl/OfflineMaps/5/9/3.jpg deleted file mode 100644 index c9ff148..0000000 Binary files a/MapControl/OfflineMaps/5/9/3.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/30.jpg b/MapControl/OfflineMaps/5/9/30.jpg deleted file mode 100644 index e2b2ff0..0000000 Binary files a/MapControl/OfflineMaps/5/9/30.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/31.jpg b/MapControl/OfflineMaps/5/9/31.jpg deleted file mode 100644 index b36880c..0000000 Binary files a/MapControl/OfflineMaps/5/9/31.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/4.jpg b/MapControl/OfflineMaps/5/9/4.jpg deleted file mode 100644 index 1357e7c..0000000 Binary files a/MapControl/OfflineMaps/5/9/4.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/5.jpg b/MapControl/OfflineMaps/5/9/5.jpg deleted file mode 100644 index b8b04f4..0000000 Binary files a/MapControl/OfflineMaps/5/9/5.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/6.jpg b/MapControl/OfflineMaps/5/9/6.jpg deleted file mode 100644 index 931bc79..0000000 Binary files a/MapControl/OfflineMaps/5/9/6.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/7.jpg b/MapControl/OfflineMaps/5/9/7.jpg deleted file mode 100644 index a80b002..0000000 Binary files a/MapControl/OfflineMaps/5/9/7.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/8.jpg b/MapControl/OfflineMaps/5/9/8.jpg deleted file mode 100644 index f713fee..0000000 Binary files a/MapControl/OfflineMaps/5/9/8.jpg and /dev/null differ diff --git a/MapControl/OfflineMaps/5/9/9.jpg b/MapControl/OfflineMaps/5/9/9.jpg deleted file mode 100644 index f440869..0000000 Binary files a/MapControl/OfflineMaps/5/9/9.jpg and /dev/null differ diff --git a/MapControl/System.Windows.Forms.MapControl.xml b/MapControl/System.Windows.Forms.MapControl.xml index 2966231..4f881cd 100644 --- a/MapControl/System.Windows.Forms.MapControl.xml +++ b/MapControl/System.Windows.Forms.MapControl.xml @@ -4,6 +4,729 @@ System.Windows.Forms.MapControl + + + Represents point on the Earth surface with geographical coordinates + + + + + Longitude of the point, in degrees, from 0 to ±180, positive East, negative West. 0 is a point on prime meridian. + + + + + Latitude of the point, in degrees, from +90 (North pole) to -90 (South Pole). 0 is a point on equator. + + + + + Creates new instance of and initializes it with longitude and latitude values. + + Longitude of the point, in degrees, from 0 to ±180, positive East, negative West. 0 is a point on prime meridian. + Latitude of the point, in degrees, from +90 (North pole) to -90 (South Pole). 0 is a point on equator. + + + + + + + Calculates the distance in meters to a reference + + Reference geo point + + + + + Set of useful graphics extensions + + + + + Draws polyline. This method is more optimized than default + because it draws only visible segments of the line. + + Graphics object + Pen object + Array of points defining the polyline + Flag indicating the line is closed one (last point should be connected with first point) + + + + Draws graphics path, optionally with fill and/or outline + + Graphics object + Path to be drawn + Fill brush + Outline pen + + + + Finds nearest points for a point with specified coordinates + + Point to find nearest point for. + Array of points to select nearest one. + Nearest point from the array closest to the specified one. + + + + Finds visible part of segment + + Graphics object + First point of a segment + Last point of a segment + Visible part of segment, i.e. first and last points + + + + Finds intersections of a line segment with clip bounds + + Graphics object + First point of a segment + Last point of a segment + Intersection points. Count can be from 0 to 2. + + + + Finds point of intersection of two segments + + First point of first segment + Last point of first segment + First point of second segment + Last point of second segment + Point of intersection of two segments, or null if no intersection + + + + Multiplies two vectors defined by coordinates + + + + + + + + + + Calculates constants of a line equation by two points lie on that line. + + First point lies on the line + Second point lies on the line + A-constant + B-constant + C-constant + + + + Extended control with auto-parsing of HTML links in the property. + + + + + Used to store tile image in memory + + + + + X-index of the tile image + + + + + Y-index of the tile image + + + + + Zoom level of the tile image + + + + + Tile server name + + + + + Tile image + + + + + Error message that should be displayed if tile does not exist by some reason (incorrect X/Y indices, zoom level, server unavailable etc.). + + + + + Flag indicating image recently used (requested to be drawn on the map). + + + + + Creates new tile with X/Y indices, zoom level, and tileServer name. + + X-index of the tile. + Y-index of the tile. + Zoom level. + Tile server name. + + + + Creates new tile with image, X/Y indices, zoom level, and tileServer name. + + Tile image + X-index of the tile. + Y-index of the tile. + Zoom level. + Tile server name. + + + + Represents ellipse on the map. + + + + + Ellipse coordinates. + + + + + Style to draw the ellipse. + + + + + Custom data associated with the ellipse. + + + + + Creates new object with specified coordinates. + + Coordinates of the ellipse. + + + + Creates new object with specified coordinates and style. + + Coordinates of the ellipse. + Ellipse style. + + + + Defines visual style of the . + + + + + Pen to draw ellipse outline. + + + + + Brush to fill ellipse interior. + + + + + Width of the ellipse circle in specified unit. + + + + + Height of the ellipse circle in specified unit. + + + + + Unit for width and height. Default is PIXELS. + + + + + Creates new ellipse style. + + + + + Creates new ellipse style. + + Width of the ellipse circle. + + + + Creates new ellipse style. + + Width of the ellipse circle. + Height of the ellipse circle. + + + + Creates new ellipse style. + + Width of the ellipse circle. + Height of the ellipse circle. + Brush to fill ellipse interior. + + + + Creates new ellipse style. + + Width of the ellipse circle. + Height of the ellipse circle. + Brush to fill ellipse interior. + Pen to draw ellipse outline. + Unit to measure ellipse outline. + + + + Default ellipse style. + + + + + Unit enumeration defining units for width and height. + + + + + Iterface for map elements. + + + + + Represents marker point on the map. + + + + + Marker coordinates. + + + + + Style to draw the marker. + + + + + Marker label. + + + + + Custom data associated with the marker. + + + + + Creates new object with specified coordinates. + + Coordinates of the marker. + + + + Creates new object with specified coordinates and style. + + Coordinates of the marker. + Marker style. + + + + Creates new object with specified coordinates and label. + + Coordinates of the marker. + Marker label. + + + + Creates new object with specified coordinates, style and label. + + Coordinates of the marker. + Marker style. + Marker label. + + + + Defines visual style of the . + + + + + Pen to draw marker outline. + + + + + Brush to fill marker interior. + + + + + Image to draw the marker alternatively. + + + + + Width of the marker circle, in pixels. + + + + + Brush to draw marker label. + + + + + Font used to draw marker label. + + + + + String format used to draw marker label. + + + + + Creates new marker style. + + + + + Creates new marker style. + + Width of the marker circle, in pixels. + + + + Creates new marker style. + + Width of the marker circle, in pixels. + /// Brush to fill marker interior. + + + + Creates a new marker style from image. + + Image to be drawn as marker. + + + + Creates new marker style. + + Width of the marker circle, in pixels. + Brush to fill marker interior. + Pen to draw marker outline. + Brush to draw marker label. + Font used to draw marker label. + String format used to draw marker label. + + + + Default marker style. + + + + + Represents filled closed area on the map. + + + + + Gets or sets polygon style. + + + + + Creates new polygon without assigned style + + + + + Creates new polygon with specified style. + + + + + + Defines drawing style for object. + + + + + Fill brush + + + + + Outline pen. + + + + + Creates new with fill brush and without outline. + + Fill brush. + + + + Creates new with outline and without fill. + + Outline pen. + + + + Creates new with fill brush and outline pen. + + Fill brush. + Outline pen. + + + + Default polygon style. + + + + + Represents track (collection of connected points). + + + + + Style to draw the track + + + + + Custom data associated with the marker + + + + + Creates a track with specified style + + + + + + Defines visual style of the . + + + + + Pen used to draw track path. + + + + + Creates new . + + + + + Creates new . + + Pen used to draw track path. + + + + Default track style. + + + + + Represents a collection of ellipses grouped together into a layer. + + + + + List of ellipses + + + + + Creates an ellipse layer with specified level + + + + + + Represents an abstract base class for layers of each type. + + + + + Internal GUID to uniquely identify an layer. + + + + + Informational name of the layer. + + + + + Backing field for property. + + + + + Level of the layer, decides whether a layer is displayed above / below another one + + + + + Backing field for property. + + + + + Enables visibility of an layer + + + + + Returns or sets whether the elements of the layer are hoverable or not. + + + + + Returns or sets whether the elements of the layer are clickable or not. + + + + + Raised when property value is changed. + + + + + Creates a layer with specified level + + + + + + Raises in base class. + + Sender object which raised the event. + Event arguments. + + + + Compares two layers. + + Layer to compare + Whether the layers are equal + + + + Represents a layer grouping other layers together. + + + + + List of layers + + + + + Creates a layer group with level 0 + + + + + Creates a layer group with specified level + + + + + + Adds a layer into layer group. + + Layer to add into group. + + + + Cleas all subsequent layers. + + + + + Handles event from subsequent layers. + + The layer which raised the event. + Event arguments. + + + + Represents a collection of markers grouped together into a layer. + + + + + List of markers + + + + + Creates a marker layer with specified level + + + + + + Represents a collection of polygons grouped together into a layer. + + + + + List of polygons + + + + + Creates a polygon layer with specified level + + + + + + Represents a collection of tracks grouped together into a layer. + + + + + List of tracks + + + + + Creates a track layer with specified level + + + + + + Provides data for event. + + + + + instance to be drawn. + + + + + Coordinates of the marker on the map. + + + + + Creates new instance of . + + Provides data for event. @@ -11,7 +734,7 @@ - instance to be drawn. + instance to be drawn. @@ -31,7 +754,7 @@ - instance to be drawn. + instance to be drawn. @@ -51,7 +774,7 @@ - instance to be drawn. + instance to be drawn. @@ -74,139 +797,89 @@ instance to draw on. - + - Represents point on the Earth surface with geographical coordinates - - - - - Longitude of the point, in degrees, from 0 to ±180, positive East, negative West. 0 is a point on prime meridian. - - - - - Latitude of the point, in degrees, from +90 (North pole) to -90 (South Pole). 0 is a point on equator. + Represents class for map element events. - + - Creates new instance of and initializes it with longitude and latitude values. + Cursor X position. - Longitude of the point, in degrees, from 0 to ±180, positive East, negative West. 0 is a point on prime meridian. - Latitude of the point, in degrees, from +90 (North pole) to -90 (South Pole). 0 is a point on equator. - - - - + - Set of useful graphics extensions + Cursor Y position. - + - Draws polyline. This method is more optimized than default - because it draws only visible segments of the line. + insance containing the element. - Graphics object - Pen object - Array of points defining the polyline - Flag indicating the line is closed one (last point should be connected with first point) - + - Draws graphics path, optionally with fill and/or outline + instance which has been clicked. - Graphics object - Path to be drawn - Fill brush - Outline pen - + - Finds nearest points for a point with specified coordinates + Map control for displaying online and offline maps. - Point to find nearest point for. - Array of points to select nearest one. - Nearest point from the array closest to the specified one. - + - Finds visible part of segment + Tile size, in pixels. - Graphics object - First point of a segment - Last point of a segment - Visible part of segment, i.e. first and last points - + - Finds intersections of a line segment with clip bounds + Layer for markers added directly to the map. - Graphics object - First point of a segment - Last point of a segment - Intersection points. Count can be from 0 to 2. - + - Finds point of intersection of two segments + Layer for tracks added directly to the map. - First point of first segment - Last point of first segment - First point of second segment - Last point of second segment - Point of intersection of two segments, or null if no intersection - + - Multiplies two vectors defined by coordinates + Layer for polgons added directly to the map. - - - - - - + - Calculates constants of a line equation by two points lie on that line. + Layer for ellipses added directly to the map. - First point lies on the line - Second point lies on the line - A-constant - B-constant - C-constant - + - Extended control with auto-parsing of HTML links in the property. + First tile offset. - + - Map control for displaying online and offline maps. + Flag indicating thar mouse is captured. - + - Tile size, in pixels. + Last element used to send an enter, leave or click event. - + - First tile offset. + Last layer in which an element for enter, leave or click event has been found. - + - Flag indicating thar mouse is captured. + Last known mouse position. - + - Last known mouse position. + Last known center point before resizing. @@ -329,19 +1002,9 @@ Gets geographical coordinates of the bottom right point of the map - - - Gets collection of markers to be displayed on the map. - - - + - Gets collection of tracks to be displayed on the map. - - - - - Gets collection of polygons to be displayed on the map. + Gets collection of layers to be displayed on the map. @@ -404,479 +1067,359 @@ Raised when polygon is drawn on the map. - - - Raised when property value is changed. - - - - - Raised when property value is changed. - - - - - Raised when property value is changed. - - - - - Creates new control. - - - - - Called on creating control. - - - - - Handles clicks on LinkLabel links - - - - - Does painting of the map. - - Paint event args. - - - - Called when control size is changed. - - Event args. - - - - Called when mouse is down. - - Event args. - - - - Called when mouse is up. - - Event args. - - - - Called when mouse is moving. - - Event args. - - - - Called when mouse is wheeling. - - Event args. - - - - Adjusts map bounds if required. - - - - - Normalizes tile number to fit value from 0 to FullMapSizeInTiles. - - Tile number, with fractions. - Tile number in range from 0 to FullMapSizeInTiles. - - - - Draws error string on the map. - - Graphics instance to draw on. - Error string to be drawn. - - - - Draws map tiles. - - Graphics instance to draw on. - - - - Draws markers on the map - - Graphics instance to draw on. - - - - Draws tracks on the map - - Graphics instance to draw on. - - - - Draws polygons on the map - - Graphics instance to draw on. - - - - Draws part of a tile. - This method is needed to draw portion of a tile with highest zoom level if a tile with smallest zoom is not ready yet. - - Graphics instance to draw on. - X-index of the tile. - Y-index of the tile. - X-index of a tile portion to be drawn. - Y-index of a tile portion to be drawn. - Portion of a tile to be drawn, 2 means 1/2, 4 means 1/4 etc. - Full tile image. - - - - Draws a tile on the map. - - Graphics instance to draw on. - X-index of the tile. - Y-index of the tile. - Tile image. - - - - Draws thumbnail frame and text instead of a tile. - - Graphics instance to draw on. - X-index of the tile. - Y-index of the tile. - Message to be displayed instead of the tile. - Flag indicating the message should be displayed with error color. - - - - Does the draw action. - The method is needed for repeating drawing because map is infinite in longitude. - - Graphics instance to draw on. - Draw action to perform several times for all visible width of the map. - - + - Sets zoom level with specifying central point to zoom in/out. + Raised when ellipse is drawn on the map. - Zoom level to be set. - Central point to zoom in/out. - + - Gets tile image by X and Y indices and zoom level. + Raised when of an layer has been clicked. - X-index of the tile. - Y-index of the tile. - Zoom level. - Flag indicating the tile can be fetched from cache only (server request is not allowed). - instance. - + - Does a tile request to the tile server + Raised when of an layer is entered. - X-index of the tile to be requested. - Y-index of the tile to be requested. - Zoom level - + - Background worker function. - Processes tiles requests if requests pool is not empty, - than stops execution until the pool gets a new image request. - Breaks execution on disposing. + Raised when of an layer is leaved. - + - Gets projection of geographical coordinates onto the map. + Raised when property value is changed. - Point with geographical coordinates. - object representing projection of the specified geographical coordinates on the map. - + - Converts geographical coordinates to tile indices with fractions. + Raised when property value is changed. - Point with geographical coordinates. - Point representing X/Y indices of the specified geographical coordinates in Slippy map scheme. - + - Converts tile indices to geographical coordinates. + Raised when property value is changed. - X-index of the tile. - Y-index of the tile. - Point representing geographical coordinates. - + - Clears map cache. If flag is set to true, cache for all tile servers will be cleared. - If no, only current tile server cache will be cleared. + Creates new control. - If flag is set to true, cache for all tile servers will be cleared. - + - Removes all markers, tracks and polygons from the map. + Adds a layer to the map control and invalidates map. + Layer to add to the map. - + - Required designer variable. + Adds a marker to the map control and invalidates map. + Marker to add to the map. - + - Clean up any resources being used. + Adds a track to the map control and invalidates map. - true if managed resources should be disposed; otherwise, false. + Track to add to the map. - + - Required method for Designer support - do not modify - the contents of this method with the code editor. + Adds a polygon to the map control and invalidates map. + Polygon to add to the map. - + - Represents marker point on the map. + Adds an ellipse to the map control and invalidates map. + Ellipse to add to the map. - + - Marker coordinates. + Removes all layers from the map. - + - Style to draw the marker. + Removes all markers, tracks, polygons and ellipses from the map. - + - Marker label. + Clears map cache. If flag is set to true, cache for all tile servers will be cleared. + If no, only current tile server cache will be cleared. + If flag is set to true, cache for all tile servers will be cleared. - + - Custom data associated with the marker. + Zooms map control to a certain layer. + Layer to zoom to. - + - Creates new object with specified coordinates. + Called on creating control. - Coordinates of the marker. - + - Creates new object with specified coordinates and style. + Does painting of the map. - Coordinates of the marker. - Marker style. + Paint event args. - + - Creates new object with specified coordinates and label. + Called when control size is changed. - Coordinates of the marker. - Marker label. + Event args. - + - Creates new object with specified coordinates, style and label. + Called when mouse is down. - Coordinates of the marker. - Marker style. - Marker label. + Event args. - + - Defines visual style of the . + Called when mouse is up. + Event args. - + - Pen to draw marker outline. + Called when mouse is moving. + Event args. - + - Brush to fill marker interior. + Called when mouse is wheeling. + Event args. - + - Width of the marker circle, in pixels. + Draws error string on the map. + Graphics instance to draw on. + Error string to be drawn. - + - Brush to draw marker label. + Draws map tiles. + Graphics instance to draw on. - + - Font used to draw marker label. + Draw layers + Graphics instance to draw on. - + - String format used to draw marker label. + Draw a single layer + Layer to draw. + Graphics instance to draw on. - + - Creates new marker style. - + Draw a single marker + + Marker to draw. + Graphics instance to draw on. - + - Creates new marker style. + Draw a single track - Width of the marker circle, in pixels. + Track to draw. + Graphics instance to draw on. - + - Creates new marker style. + Draw a single polygon. - Width of the marker circle, in pixels. - /// Brush to fill marker interior. + Polygon to draw. + Graphics instance to draw on. - + - Creates new marker style. + Draw a single ellipse. - Width of the marker circle, in pixels. - Brush to fill marker interior. - Pen to draw marker outline. - Brush to draw marker label. - Font used to draw marker label. - String format used to draw marker label. + Ellipse to draw. + Graphics instance to draw on. - + - Default marker style. + Draws part of a tile. + This method is needed to draw portion of a tile with highest zoom level if a tile with smallest zoom is not ready yet. + Graphics instance to draw on. + X-index of the tile. + Y-index of the tile. + X-index of a tile portion to be drawn. + Y-index of a tile portion to be drawn. + Portion of a tile to be drawn, 2 means 1/2, 4 means 1/4 etc. + Full tile image. - + - Represents filled closed area on the map. + Draws a tile on the map. + Graphics instance to draw on. + X-index of the tile. + Y-index of the tile. + Tile image. - + - Gets or sets polygon style. + Draws thumbnail frame and text instead of a tile. + Graphics instance to draw on. + X-index of the tile. + Y-index of the tile. + Message to be displayed instead of the tile. + Flag indicating the message should be displayed with error color. - + - Creates new polygon without assigned style + Does the draw action. + The method is needed for repeating drawing because map is infinite in longitude. + Graphics instance to draw on. + Draw action to perform several times for all visible width of the map. - + - Creates new polygon with specified style. + Normalizes tile number to fit value from 0 to FullMapSizeInTiles. - + Tile number, with fractions. + Tile number in range from 0 to FullMapSizeInTiles. - + - Defines drawing style for object. + Returns the number of pixels per meter according to the reference latitude and zoom level. + Latitude for which the distance should be calculated + Current zoomlevel + Number of pixels representing one meter. - + - Fill brush + Returns the number of pixels per yard according to the reference latitude and zoom level. + Latitude for which the distance should be calculated + Current zoomlevel + Number of pixels representing one yard. - + - Outline pen. + Gets projection of geographical coordinates onto the map. + Point with geographical coordinates. + object representing projection of the specified geographical coordinates on the map. - + - Creates new with fill brush and without outline. + Converts geographical coordinates to tile indices with fractions. - Fill brush. + Point with geographical coordinates. + Point representing X/Y indices of the specified geographical coordinates in Slippy map scheme. - + - Creates new with outline and without fill. + Converts tile indices to geographical coordinates. - Outline pen. + X-index of the tile. + Y-index of the tile. + Point representing geographical coordinates. - + - Creates new with fill brush and outline pen. + Adjusts map bounds if required. - Fill brush. - Outline pen. - + - Default polygon style. + Sets zoom level with specifying central point to zoom in/out. + Zoom level to be set. + Central point to zoom in/out. - + - Used to store tile image in memory + Gets tile image by X and Y indices and zoom level. + X-index of the tile. + Y-index of the tile. + Zoom level. + Flag indicating the tile can be fetched from cache only (server request is not allowed). + instance. - + - X-index of the tile image + Does a tile request to the tile server + X-index of the tile to be requested. + Y-index of the tile to be requested. + Zoom level - + - Y-index of the tile image + Background worker function. + Processes tiles requests if requests pool is not empty, + than stops execution until the pool gets a new image request. + Breaks execution on disposing. - + - Zoom level of the tile image + Returns the bounds of a layer. + Layer to measure. + Bounds of a layer, null if layer doesn't contain objects. - + - Tile server name + Iterates over all elements in layers and returns the first matching element of the top most layer. + Cursor positon + The first matching element, null if there was no element found - + - Tile image + Handles event when a property of a layer is changed. + Layer which raised the event. + Event arguments. - + - Error message that should be displayed if tile does not exist by some reason (incorrect X/Y indices, zoom level, server unavailable etc.). + Handles clicks on LinkLabel links - + - Flag indicating image recently used (requested to be drawn on the map). + Required designer variable. - + - Creates new tile with X/Y indices, zoom level, and tileServer name. + Clean up any resources being used. - X-index of the tile. - Y-index of the tile. - Zoom level. - Tile server name. + true if managed resources should be disposed; otherwise, false. - + - Creates new tile with image, X/Y indices, zoom level, and tileServer name. + Required method for Designer support - do not modify + the contents of this method with the code editor. - Tile image - X-index of the tile. - Y-index of the tile. - Zoom level. - Tile server name. @@ -1003,41 +1546,6 @@ See about tile indexing schema here: - - - Tile server for offline maps. - Uses embedded tiles from MapTiler. - - - - - Displayable name of the tile server - - - - - Attribution text that will be displayed in bottom-right corner of the map. - - - - - Gets minimal zoom level allowed for the tile server. - - - - - Gets maximal zoom level allowed for the tile server. - - - - - Gets tile image by X and Y indices of the tile and zoom level Z. - - X-index of the tile. - Y-index of the tile. - Zoom level. - Tile image. - Represents OpenStreetMap web tile server. @@ -1259,52 +1767,5 @@ Function to handle accepting HTTPs certificates - - - Represents track (collection of connected points). - - - - - Style to draw the track - - - - - Custom data associated with the marker - - - - - Creates a track with specified style - - - - - - Defines visual style of the . - - - - - Pen used to draw track path. - - - - - Creates new . - - - - - Creates new . - - Pen used to draw track path. - - - - Default track style. - - diff --git a/MapControl/TileServers/CustomTileServer.cs b/MapControl/TileServers/CustomTileServer.cs new file mode 100644 index 0000000..bb9415a --- /dev/null +++ b/MapControl/TileServers/CustomTileServer.cs @@ -0,0 +1,102 @@ +using System.Net; + +namespace System.Windows.Forms +{ + /// + /// Represents a custom wrapper for custom tile servers. + /// + public class CustomTileServer : WebTileServer + { + + /// + /// Gets displayable name of the Tile server. + /// + public override string Name => "CustomTileServer"; + + /// + /// Gets attribution text. + /// + public override string AttributionText => "© OpenStreetMap Contributors"; + + /// + /// User-Agent string used to dowload tile images from the tile server. + /// + /// + /// OpenStreetMap requires valid HTTP User-Agent identifying application. + /// Faking app's User-Agent may get you blocked. + /// + public override string UserAgent { get; set; } + + /// + /// Represents the server address to load tiles from with placeholder for z, x and y. + /// + /// + /// Server address needs to be formatted in http[s]://[IP-Address]/.../{z}/{x}/{y}.[Format] + /// + public string ServerAddress { get; set; } + + /// + /// Gets tile URI by X and Y indices of the tile and zoom level Z. + /// + /// X-index of the tile. + /// Y-index of the tile. + /// Zoom level. + /// instance. + public override Uri GetTileUri(int x, int y, int z) + { + string serverAddress = this.ServerAddress; + + serverAddress = serverAddress.Replace("{z}", Convert.ToString(z)); + serverAddress = serverAddress.Replace("{x}", Convert.ToString(x)); + serverAddress = serverAddress.Replace("{y}", Convert.ToString(y)); + + return new Uri(serverAddress); + } + + /// + /// Constructs a new instance of custom tile server. + /// + /// The server's address where to load tiles from in ZXY format + public CustomTileServer(string serverAddress) + { + this.ServerAddress = serverAddress; + } + + /// + /// Constructs a new instance of custom tile server. + /// + /// The server's address where to load tiles from in ZXY format + /// Username for authentication at the server + /// Password for authentication at the server + public CustomTileServer(string serverAddress, string username, string password) + { + this.ServerAddress = serverAddress; + this.Credentials = new NetworkCredential(username, password); + } + + /// + /// Constructs a new instance of custom tile server. + /// + /// The server's address where to load tiles from in ZXY format + /// Proxy to use for network connection + public CustomTileServer(string serverAddress, IWebProxy proxy) + { + this.ServerAddress = serverAddress; + this.Proxy = proxy; + } + + /// + /// Constructs a new instance of custom tile server. + /// + /// The server's address where to load tiles from in ZXY format + /// Username for authentication at the server + /// Password for authentication at the server + /// Proxy to use for network connection + public CustomTileServer(string serverAddress, string username, string password, IWebProxy proxy) + { + this.ServerAddress = serverAddress; + this.Credentials = new NetworkCredential(username, password); + this.Proxy = proxy; + } + } +} diff --git a/MapControl/TileServers/OfflineTileServer.cs b/MapControl/TileServers/OfflineTileServer.cs deleted file mode 100644 index 0fc3f96..0000000 --- a/MapControl/TileServers/OfflineTileServer.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System.Drawing; -using System.IO; - -namespace System.Windows.Forms -{ - /// - /// Tile server for offline maps. - /// Uses embedded tiles from MapTiler. - /// - public class OfflineTileServer : ITileServer - { - /// - /// Displayable name of the tile server - /// - public string Name => "Offline map"; - - /// - /// Attribution text that will be displayed in bottom-right corner of the map. - /// - public string AttributionText => "© MapTiler © OpenStreetMap contributors"; - - /// - /// Gets minimal zoom level allowed for the tile server. - /// - public int MinZoomLevel => 0; - - /// - /// Gets maximal zoom level allowed for the tile server. - /// - public int MaxZoomLevel => 5; - - /// - /// Gets tile image by X and Y indices of the tile and zoom level Z. - /// - /// X-index of the tile. - /// Y-index of the tile. - /// Zoom level. - /// Tile image. - public Image GetTile(int x, int y, int z) - { - Stream stream = Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream($"System.Windows.Forms.OfflineMaps._{z}._{x}.{(1 << z) - y - 1}.jpg"); - if (stream != null) - { - return new Bitmap(stream); - } - else - { - throw new Exception("Tile image does not exist."); - } - } - } -} diff --git a/MapControl/TileServers/OpenStreetMapTileServer.cs b/MapControl/TileServers/OpenStreetMapTileServer.cs index 6fd68ae..173249a 100644 --- a/MapControl/TileServers/OpenStreetMapTileServer.cs +++ b/MapControl/TileServers/OpenStreetMapTileServer.cs @@ -1,38 +1,38 @@ -namespace System.Windows.Forms -{ +namespace System.Windows.Forms +{ /// /// Represents OpenStreetMap web tile server. - /// - public class OpenStreetMapTileServer : WebTileServer - { + /// + public class OpenStreetMapTileServer : WebTileServer + { /// /// Used to access random tile subdomains. - /// - private readonly Random _Random = new Random(); - + /// + private readonly Random _Random = new Random(); + /// /// Tile server subdomains. - /// - private readonly string[] _Subdomains = new[] { "a", "b", "c" }; - + /// + private readonly string[] _Subdomains = new[] { "a", "b", "c" }; + /// /// Gets displayable name of the Tile server. - /// - public override string Name => "OpenStreetMap"; - + /// + public override string Name => "OpenStreetMap"; + /// /// Gets attribution text. - /// - public override string AttributionText => "© OpenStreetMap contributors"; + /// + public override string AttributionText => "© OpenStreetMap Contributors"; - /// - /// User-Agent string used to dowload tile images from the tile server. - /// - /// - /// OpenStreetMap requires valid HTTP User-Agent identifying application. - /// Faking app's User-Agent may get you blocked. - /// - public override string UserAgent { get; set; } + /// + /// User-Agent string used to dowload tile images from the tile server. + /// + /// + /// OpenStreetMap requires valid HTTP User-Agent identifying application. + /// Faking app's User-Agent may get you blocked. + /// + public override string UserAgent { get; set; } /// /// Gets tile URI by X and Y indices of the tile and zoom level Z. @@ -40,24 +40,24 @@ public class OpenStreetMapTileServer : WebTileServer /// X-index of the tile. /// Y-index of the tile. /// Zoom level. - /// instance. - public override Uri GetTileUri(int x, int y, int z) - { - string server = _Subdomains[_Random.Next(_Subdomains.Length)]; - return new Uri($"https://{server}.tile.openstreetmap.org/{z}/{x}/{y}.png"); + /// instance. + public override Uri GetTileUri(int x, int y, int z) + { + string server = _Subdomains[_Random.Next(_Subdomains.Length)]; + return new Uri($"https://{server}.tile.openstreetmap.org/{z}/{x}/{y}.png"); } - /// - /// Creates new instance of . - /// - /// User-Agent string used to dowload tile images from OpenStreetMap tile servers. - /// - /// OpenStreetMap usage policy requires valid HTTP User-Agent identifying application. - /// Faking another app’s User-Agent WILL get you blocked - /// - public OpenStreetMapTileServer(string userAgent) - { - UserAgent = userAgent; + /// + /// Creates new instance of . + /// + /// User-Agent string used to dowload tile images from OpenStreetMap tile servers. + /// + /// OpenStreetMap usage policy requires valid HTTP User-Agent identifying application. + /// Faking another app’s User-Agent WILL get you blocked + /// + public OpenStreetMapTileServer(string userAgent) + { + UserAgent = userAgent; } - } -} + } +} diff --git a/MapControl/TileServers/WebTileServer.cs b/MapControl/TileServers/WebTileServer.cs index ce7c5e3..9f7f121 100644 --- a/MapControl/TileServers/WebTileServer.cs +++ b/MapControl/TileServers/WebTileServer.cs @@ -1,62 +1,72 @@ -using System.Drawing; -using System.IO; -using System.Net; -using System.Threading; - -namespace System.Windows.Forms -{ +using System.Drawing; +using System.IO; +using System.Net; +using System.Threading; + +namespace System.Windows.Forms +{ /// /// Base class for all web tile servers - /// - public abstract class WebTileServer : IFileCacheTileServer - { + /// + public abstract class WebTileServer : IFileCacheTileServer + { /// /// Gets tile URI by X and Y indices of the tile and zoom level Z. /// /// X-index of the tile. /// Y-index of the tile. /// Zoom level. - /// instance. - public abstract Uri GetTileUri(int x, int y, int z); - + /// instance. + public abstract Uri GetTileUri(int x, int y, int z); + /// /// User-Agent string used to dowload tile images from the tile server. /// /// /// Some web tile servers (for example OpenStreetMap) require valid HTTP User-Agent identifying application. /// Faking app's User-Agent may get you blocked. - /// - public abstract string UserAgent { get; set; } - + /// + public abstract string UserAgent { get; set; } + + /// + /// Credentials to authenticate a request on the tile server. + /// + public NetworkCredential Credentials { get; set; } + + /// + /// Proxy instance to use for network connection. + /// + public IWebProxy Proxy { get; set; } + /// /// Tile expiration period. - /// - /// + /// + /// /// Different tile servers have various tile usage policies, so do not set small values here to prevent loading same tiles from the server frequently. - /// For example, for OpenStretMap tile expiration period should not be smaller than 7 days: - /// - public virtual TimeSpan TileExpirationPeriod { get; set; } = TimeSpan.FromDays(30); - + /// For example, for OpenStretMap tile expiration period should not be smaller than 7 days: + /// + public virtual TimeSpan TileExpirationPeriod { get; set; } = TimeSpan.FromDays(30); + /// /// Displayable name of the tile server, i.e. human-readable map name, for example, "Open Street Map". - /// - public abstract string Name { get; } - + /// + public abstract string Name { get; } + /// /// Attribution text that will be displayed in bottom-right corner of the map. /// Can be null (no attribution text) or can contain html links for navigating with default system web browser. /// - /// © OpenStreetMap contributors - public abstract string AttributionText { get; } - + /// © OpenStreetMap contributors + public abstract string AttributionText { get; } + /// /// Gets minimal zoom level allowed for the tile server - /// + /// public virtual int MinZoomLevel => 0; /// /// Gets maximal zoom level allowed for the tile server - /// + /// public virtual int MaxZoomLevel => 19; /// @@ -65,20 +75,42 @@ public abstract class WebTileServer : IFileCacheTileServer /// X-coordinate of the tile. /// Y-coordinate of the tile. /// Zoom level - /// - public Image GetTile(int x, int y, int z) + /// + public Image GetTile(int x, int y, int z) { try { Uri uri = GetTileUri(x, y, z); var request = (HttpWebRequest)WebRequest.Create(uri); - request.UserAgent = UserAgent; + + if (this.UserAgent != null) + { + request.UserAgent = this.UserAgent; + } + + if (this.Credentials != null) + { + // PreAuthenticate is only a caching mechanism, there're many requests with 401 status left + // use second approach instead, which adds the auth header with each request + + //request.PreAuthenticate = true; + //request.Credentials = this.Credentials; + + string authorizationHeader = "Basic " + Convert.ToBase64String(Text.Encoding.Default.GetBytes(this.Credentials.UserName + ":" + this.Credentials.Password)); + request.Headers.Add("Authorization", authorizationHeader); + } + + if (this.Proxy != null) + { + request.Proxy = this.Proxy; + } + using (var response = request.GetResponse()) using (Stream stream = response.GetResponseStream()) { return Image.FromStream(stream); - } - } + } + } catch (Exception ex) { if (ex is WebException wex) @@ -89,25 +121,25 @@ public Image GetTile(int x, int y, int z) } } - throw new Exception($"Unable to download tile.\n{ex.Message}"); - } - } - + throw new Exception($"{ex.Message}"); + } + } + /// /// Base constructor for initializing . - /// + /// protected WebTileServer() { - ServicePointManager.ServerCertificateValidationCallback = new Net.Security.RemoteCertificateValidationCallback(AcceptAllCertificates); - ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; + // ServicePointManager.ServerCertificateValidationCallback = new Net.Security.RemoteCertificateValidationCallback(AcceptAllCertificates); + // ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; } /// /// Function to handle accepting HTTPs certificates - /// - private bool AcceptAllCertificates(object sender, Security.Cryptography.X509Certificates.X509Certificate certification, Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) - { - return true; - } - } -} + /// + private bool AcceptAllCertificates(object sender, Security.Cryptography.X509Certificates.X509Certificate certification, Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) + { + return true; + } + } +} diff --git a/MapControl/TileServers/ZipTileServer.cs b/MapControl/TileServers/ZipTileServer.cs new file mode 100644 index 0000000..9533fcf --- /dev/null +++ b/MapControl/TileServers/ZipTileServer.cs @@ -0,0 +1,140 @@ +using System.Drawing; +using System.IO; +using System.IO.Compression; + +namespace System.Windows.Forms +{ + /// + /// Represents a tile server loading offline tiles from a ZIP file. + /// + public class ZipTileServer : ITileServer, IDisposable + { + /// + /// Zip archive instance holding the offline tiles. + /// + private ZipArchive zipArchive; + + /// + /// Displayable name of the tile server + /// + public string Name => "ZipTileServer"; + + /// + /// Attribution text that will be displayed in bottom-right corner of the map. + /// + public string AttributionText => "© OpenStreetMap Contributors"; + + /// + /// Gets minimal zoom level allowed for the tile server. + /// + public int MinZoomLevel + { + protected set; get; + } = 0; + + /// + /// Gets maximal zoom level allowed for the tile server. + /// + public int MaxZoomLevel + { + protected set; get; + } = 20; + + /// + /// Gets the image extension of the style loaded. + /// + public string ImageExtension + { + protected set; get; + } = "jpg"; + + /// + /// Gets the style name of the style currently loaded. + /// + public string StyleName + { + protected set; get; + } = "default"; + + /// + /// Constructor method. + /// + /// ZIP archive containing map tiles. + public ZipTileServer(string zipFileName) + { + this.zipArchive = ZipFile.OpenRead(zipFileName); + this.LoadStyle(this.StyleName); + } + + /// + /// Constructor method. + /// + /// ZIP archive containing map tiles. + /// Name of the map style to be loaded. + public ZipTileServer(string zipFileName, string styleName) + { + this.zipArchive = ZipFile.OpenRead(zipFileName); + this.LoadStyle(styleName); + } + + /// + /// Loads another map style at runtime. + /// + /// Name of the map style to be loaded. + public void LoadStyle(string styleName) + { + this.StyleName = styleName; + + // load info file - if not present or valid, we don't have a valid map archive + string infoFilePath = string.Format("{0}/info.txt", this.StyleName); + using (Stream infoFileStream = this.zipArchive.GetEntry(infoFilePath)?.Open()) + { + try + { + using (StreamReader infoFileReader = new StreamReader(infoFileStream)) + { + this.MinZoomLevel = Convert.ToInt32(infoFileReader.ReadLine()); + this.MaxZoomLevel = Convert.ToInt32(infoFileReader.ReadLine()); + this.ImageExtension = infoFileReader.ReadLine()?.Trim(); + } + } + catch (Exception) + { + throw new Exception("Invalid map data archive."); + } + } + } + + /// + /// Gets tile image by X and Y indices of the tile and zoom level Z. + /// + /// X-index of the tile. + /// Y-index of the tile. + /// Zoom level. + /// Tile image. + public Image GetTile(int x, int y, int z) + { + string path = string.Format("{0}/{1}/{2}/{3}.{4}", this.StyleName, z, x, y, this.ImageExtension); + + using (Stream tileStream = this.zipArchive.GetEntry(path)?.Open()) + { + if (tileStream != null) + { + return new Bitmap(tileStream); + } + else + { + throw new Exception("Tile image does not exist."); + } + } + } + + /// + /// Disposes the virtual tile server. + /// + public void Dispose() + { + this.zipArchive?.Dispose(); + } + } +} diff --git a/MapControl/TrackStyle.cs b/MapControl/TrackStyle.cs deleted file mode 100644 index a542411..0000000 --- a/MapControl/TrackStyle.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace System.Windows.Forms -{ - /// - /// Defines visual style of the . - /// - public class TrackStyle - { - /// - /// Pen used to draw track path. - /// - public Pen Pen { get; set; } - - /// - /// Creates new . - /// - public TrackStyle() - { - - } - - /// - /// Creates new . - /// - /// Pen used to draw track path. - public TrackStyle(Pen pen) - { - Pen = pen; - } - - /// - /// Default track style. - /// - public static TrackStyle Default = new TrackStyle(new Pen(Color.Blue) { DashStyle = System.Drawing.Drawing2D.DashStyle.Dash }); - } -} diff --git a/README.md b/README.md index d9c0684..c3c982a 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,6 @@ # WinFormsMapControl Windows Forms control for displaying online and offline maps. -![Demo](/Docs/Demo.png) - -## Installation [![NuGet Status](http://img.shields.io/nuget/v/WinFormsMapControl.svg?style=flat)](https://www.nuget.org/packages/WinFormsMapControl/) -``` -PM> Install-Package WinFormsMapControl -``` - -## Features - -* Different map sources: - * Offline maps (embedded tiles from [MapTiler](https://www.maptiler.com/copyright/)) - * [OpenStreetMap](https://www.openstreetmap.org/) - * [OpenTopoMap](https://opentopomap.org/) - * [Stamen Terrain](http://maps.stamen.com/terrain/) -* Easy to add new tile sources -* Infinite map (endless in longitude) -* File system and in-memory tile cache -* Custom data over the map: - * Markers - * Tracks - * Polygons - ## How to use it? [See documentation](/Docs/Index.md)