mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2026-04-05 22:46:58 +00:00
Version 2.3.1. Some cleanup.
This commit is contained in:
parent
91ff46c506
commit
b2063e2c6c
22 changed files with 62 additions and 158 deletions
|
|
@ -782,12 +782,12 @@ namespace MapControl
|
|||
|
||||
private void UpdateTransform(bool resetTransformOrigin = false)
|
||||
{
|
||||
var center = Center;
|
||||
|
||||
SetViewportTransform(transformOrigin ?? center);
|
||||
Location center;
|
||||
|
||||
if (transformOrigin != null)
|
||||
{
|
||||
SetViewportTransform(transformOrigin);
|
||||
|
||||
center = ViewportPointToLocation(new Point(RenderSize.Width / 2d, RenderSize.Height / 2d));
|
||||
center.Longitude = Location.NormalizeLongitude(center.Longitude);
|
||||
|
||||
|
|
@ -811,6 +811,11 @@ namespace MapControl
|
|||
SetViewportTransform(center);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
center = Center;
|
||||
SetViewportTransform(center);
|
||||
}
|
||||
|
||||
CenterScale = ViewportScale * mapTransform.RelativeScale(center) / TileSource.MetersPerDegree; // Pixels per meter at center latitude
|
||||
|
||||
|
|
@ -820,7 +825,7 @@ namespace MapControl
|
|||
|
||||
private void SetViewportTransform(Location origin)
|
||||
{
|
||||
ViewportScale = tileContainer.SetViewportTransform(ZoomLevel, Heading, mapTransform.Transform(origin), viewportOrigin, RenderSize);
|
||||
ViewportScale = tileContainer.SetViewportTransform(ZoomLevel, Heading, mapTransform.Transform(origin), viewportOrigin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,48 +40,6 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>Bin\x86\Debug</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
||||
<NoStdLib>true</NoStdLib>
|
||||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>Bin\x86\Release</OutputPath>
|
||||
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
||||
<NoStdLib>true</NoStdLib>
|
||||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>Bin\ARM\Debug</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
||||
<NoStdLib>true</NoStdLib>
|
||||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>Bin\ARM\Release</OutputPath>
|
||||
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
||||
<NoStdLib>true</NoStdLib>
|
||||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="BingMapsTileLayer.cs" />
|
||||
<Compile Include="BingMapsTileSource.cs" />
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{C089C8C0-30E0-4E22-80C0-CE093F111A43}">
|
||||
<SilverlightMobileCSProjectFlavor>
|
||||
<FullDeploy>True</FullDeploy>
|
||||
<DebuggerType>Managed</DebuggerType>
|
||||
<DebuggerAgentType>Managed</DebuggerAgentType>
|
||||
<Tombstone>False</Tombstone>
|
||||
</SilverlightMobileCSProjectFlavor>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
|
|
@ -9,7 +9,6 @@ using Windows.UI.Xaml.Controls;
|
|||
#else
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
#endif
|
||||
|
||||
namespace MapControl
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ using System.Windows;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2014 Clemens Fischer")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("2.3.0")]
|
||||
[assembly: AssemblyFileVersion("2.3.0")]
|
||||
[assembly: AssemblyVersion("2.3.1")]
|
||||
[assembly: AssemblyFileVersion("2.3.1")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
|
|
@ -4,8 +4,10 @@
|
|||
|
||||
using System;
|
||||
#if WINDOWS_RUNTIME
|
||||
using Windows.Foundation;
|
||||
using Windows.UI.Xaml.Media;
|
||||
#else
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
#endif
|
||||
|
||||
|
|
@ -21,11 +23,13 @@ namespace MapControl
|
|||
.Scale(scale, -scale); // map coordinates to tile indices
|
||||
}
|
||||
|
||||
private void UpdateViewportTransform(double scale, double offsetX, double offsetY)
|
||||
private void UpdateViewportTransform(double scale, Point mapOrigin)
|
||||
{
|
||||
ViewportTransform.Matrix =
|
||||
new Matrix(scale, 0d, 0d, -scale, offsetX, offsetY)
|
||||
.RotateAt(rotation, viewportOrigin.X, viewportOrigin.Y);
|
||||
new Matrix(1d, 0d, 0d, 1d, -mapOrigin.X, -mapOrigin.Y)
|
||||
.Scale(scale, -scale)
|
||||
.Rotate(rotation)
|
||||
.Translate(viewportOrigin.X, viewportOrigin.Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
// Licensed under the Microsoft Public License (Ms-PL)
|
||||
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace MapControl
|
||||
|
|
@ -19,10 +20,12 @@ namespace MapControl
|
|||
return transform;
|
||||
}
|
||||
|
||||
private void UpdateViewportTransform(double scale, double offsetX, double offsetY)
|
||||
private void UpdateViewportTransform(double scale, Point mapOrigin)
|
||||
{
|
||||
var transform = new Matrix(scale, 0d, 0d, -scale, offsetX, offsetY);
|
||||
transform.RotateAt(rotation, viewportOrigin.X, viewportOrigin.Y);
|
||||
var transform = new Matrix(1d, 0d, 0d, 1d, -mapOrigin.X, -mapOrigin.Y);
|
||||
transform.Scale(scale, -scale);
|
||||
transform.Rotate(rotation);
|
||||
transform.Translate(viewportOrigin.X, viewportOrigin.Y);
|
||||
|
||||
ViewportTransform.Matrix = transform;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ namespace MapControl
|
|||
private static double zoomLevelSwitchDelta = -Math.Log(0.75, 2d);
|
||||
|
||||
private readonly DispatcherTimer updateTimer;
|
||||
private Size viewportSize;
|
||||
private Point viewportOrigin;
|
||||
private Point tileLayerOffset;
|
||||
private double rotation;
|
||||
|
|
@ -82,7 +81,7 @@ namespace MapControl
|
|||
Children.Clear();
|
||||
}
|
||||
|
||||
public double SetViewportTransform(double mapZoomLevel, double mapRotation, Point mapOrigin, Point vpOrigin, Size vpSize)
|
||||
public double SetViewportTransform(double mapZoomLevel, double mapRotation, Point mapOrigin, Point viewOrigin)
|
||||
{
|
||||
var scale = Math.Pow(2d, zoomLevel) * TileSource.TileSize / 360d;
|
||||
var oldMapOriginX = (viewportOrigin.X - tileLayerOffset.X) / scale - 180d;
|
||||
|
|
@ -94,17 +93,11 @@ namespace MapControl
|
|||
}
|
||||
|
||||
rotation = mapRotation;
|
||||
viewportSize = vpSize;
|
||||
viewportOrigin = vpOrigin;
|
||||
|
||||
var transformOffsetX = viewportOrigin.X - mapOrigin.X * scale;
|
||||
var transformOffsetY = viewportOrigin.Y + mapOrigin.Y * scale;
|
||||
|
||||
UpdateViewportTransform(scale, transformOffsetX, transformOffsetY);
|
||||
|
||||
tileLayerOffset.X = transformOffsetX - 180d * scale;
|
||||
tileLayerOffset.Y = transformOffsetY - 180d * scale;
|
||||
viewportOrigin = viewOrigin;
|
||||
tileLayerOffset.X = viewportOrigin.X - (180d + mapOrigin.X) * scale;
|
||||
tileLayerOffset.Y = viewportOrigin.Y - (180d - mapOrigin.Y) * scale;
|
||||
|
||||
UpdateViewportTransform(scale, mapOrigin);
|
||||
UpdateRenderTransform();
|
||||
|
||||
if (Math.Abs(mapOrigin.X - oldMapOriginX) > 180d)
|
||||
|
|
@ -130,9 +123,9 @@ namespace MapControl
|
|||
|
||||
// tile indices of visible rectangle
|
||||
var p1 = transform.Transform(new Point(0d, 0d));
|
||||
var p2 = transform.Transform(new Point(viewportSize.Width, 0d));
|
||||
var p3 = transform.Transform(new Point(0d, viewportSize.Height));
|
||||
var p4 = transform.Transform(new Point(viewportSize.Width, viewportSize.Height));
|
||||
var p2 = transform.Transform(new Point(RenderSize.Width, 0d));
|
||||
var p3 = transform.Transform(new Point(0d, RenderSize.Height));
|
||||
var p4 = transform.Transform(new Point(RenderSize.Width, RenderSize.Height));
|
||||
|
||||
// index ranges of visible tiles
|
||||
var x1 = (int)Math.Floor(Math.Min(p1.X, Math.Min(p2.X, Math.Min(p3.X, p4.X))));
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2014 Clemens Fischer")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("2.3.0")]
|
||||
[assembly: AssemblyFileVersion("2.3.0")]
|
||||
[assembly: AssemblyVersion("2.3.1")]
|
||||
[assembly: AssemblyFileVersion("2.3.1")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue