mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Version 1.10.1: Fixed MapBase.TranslateMap and TileContainer.SetViewportTransform.
This commit is contained in:
parent
f11c71799f
commit
11934a121a
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCompany("Clemens Fischer")]
|
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyVersion("1.10.0")]
|
[assembly: AssemblyVersion("1.10.1")]
|
||||||
[assembly: AssemblyFileVersion("1.10.0")]
|
[assembly: AssemblyFileVersion("1.10.1")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCompany("Clemens Fischer")]
|
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyVersion("1.10.0")]
|
[assembly: AssemblyVersion("1.10.1")]
|
||||||
[assembly: AssemblyFileVersion("1.10.0")]
|
[assembly: AssemblyFileVersion("1.10.1")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -345,18 +345,14 @@ namespace MapControl
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void TranslateMap(Point translation)
|
public void TranslateMap(Point translation)
|
||||||
{
|
{
|
||||||
|
if (transformOrigin != null)
|
||||||
|
{
|
||||||
|
ResetTransformOrigin();
|
||||||
|
}
|
||||||
|
|
||||||
if (translation.X != 0d || translation.Y != 0d)
|
if (translation.X != 0d || translation.Y != 0d)
|
||||||
{
|
{
|
||||||
if (transformOrigin != null)
|
Center = ViewportPointToLocation(new Point(viewportOrigin.X - translation.X, viewportOrigin.Y - translation.Y));
|
||||||
{
|
|
||||||
viewportOrigin.X += translation.X;
|
|
||||||
viewportOrigin.Y += translation.Y;
|
|
||||||
UpdateTransform();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Center = ViewportPointToLocation(new Point(viewportOrigin.X - translation.X, viewportOrigin.Y - translation.Y));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -386,8 +382,7 @@ namespace MapControl
|
||||||
InternalSetValue(TargetZoomLevelProperty, zoomLevel);
|
InternalSetValue(TargetZoomLevelProperty, zoomLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateTransform();
|
UpdateTransform(true);
|
||||||
ResetTransformOrigin();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -577,16 +572,14 @@ namespace MapControl
|
||||||
center = new Location();
|
center = new Location();
|
||||||
InternalSetValue(property, center);
|
InternalSetValue(property, center);
|
||||||
}
|
}
|
||||||
else
|
else if (center.Longitude < -180d || center.Longitude > 180d ||
|
||||||
|
center.Latitude < -mapTransform.MaxLatitude || center.Latitude > mapTransform.MaxLatitude)
|
||||||
{
|
{
|
||||||
var latitude = Math.Min(Math.Max(center.Latitude, -mapTransform.MaxLatitude), mapTransform.MaxLatitude);
|
center = new Location(
|
||||||
var longitude = Location.NormalizeLongitude(center.Longitude);
|
Math.Min(Math.Max(center.Latitude, -mapTransform.MaxLatitude), mapTransform.MaxLatitude),
|
||||||
|
Location.NormalizeLongitude(center.Longitude));
|
||||||
|
|
||||||
if (center.Latitude != latitude || center.Longitude != longitude)
|
InternalSetValue(property, center);
|
||||||
{
|
|
||||||
center = new Location(latitude, longitude);
|
|
||||||
InternalSetValue(property, center);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -750,8 +743,7 @@ namespace MapControl
|
||||||
InternalSetValue(ZoomLevelProperty, TargetZoomLevel);
|
InternalSetValue(ZoomLevelProperty, TargetZoomLevel);
|
||||||
RemoveAnimation(ZoomLevelProperty); // remove holding animation in WPF
|
RemoveAnimation(ZoomLevelProperty); // remove holding animation in WPF
|
||||||
|
|
||||||
UpdateTransform();
|
UpdateTransform(true);
|
||||||
ResetTransformOrigin();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -830,7 +822,7 @@ namespace MapControl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateTransform()
|
private void UpdateTransform(bool resetTransformOrigin = false)
|
||||||
{
|
{
|
||||||
var center = Center;
|
var center = Center;
|
||||||
var scale = SetViewportTransform(transformOrigin ?? center);
|
var scale = SetViewportTransform(transformOrigin ?? center);
|
||||||
|
|
@ -838,9 +830,13 @@ namespace MapControl
|
||||||
if (transformOrigin != null)
|
if (transformOrigin != null)
|
||||||
{
|
{
|
||||||
center = ViewportPointToLocation(new Point(RenderSize.Width / 2d, RenderSize.Height / 2d));
|
center = ViewportPointToLocation(new Point(RenderSize.Width / 2d, RenderSize.Height / 2d));
|
||||||
|
center.Longitude = Location.NormalizeLongitude(center.Longitude);
|
||||||
|
|
||||||
var latitude = center.Latitude;
|
if (center.Latitude < -mapTransform.MaxLatitude || center.Latitude > mapTransform.MaxLatitude)
|
||||||
center.Latitude = Math.Min(Math.Max(latitude, -mapTransform.MaxLatitude), mapTransform.MaxLatitude);
|
{
|
||||||
|
center.Latitude = Math.Min(Math.Max(center.Latitude, -mapTransform.MaxLatitude), mapTransform.MaxLatitude);
|
||||||
|
resetTransformOrigin = true;
|
||||||
|
}
|
||||||
|
|
||||||
InternalSetValue(CenterProperty, center);
|
InternalSetValue(CenterProperty, center);
|
||||||
|
|
||||||
|
|
@ -850,7 +846,7 @@ namespace MapControl
|
||||||
InternalSetValue(CenterPointProperty, MapTransform.Transform(center));
|
InternalSetValue(CenterPointProperty, MapTransform.Transform(center));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (center.Latitude != latitude)
|
if (resetTransformOrigin)
|
||||||
{
|
{
|
||||||
ResetTransformOrigin();
|
ResetTransformOrigin();
|
||||||
scale = SetViewportTransform(center);
|
scale = SetViewportTransform(center);
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@ using System.Windows;
|
||||||
[assembly: AssemblyCompany("Clemens Fischer")]
|
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyVersion("1.10.0")]
|
[assembly: AssemblyVersion("1.10.1")]
|
||||||
[assembly: AssemblyFileVersion("1.10.0")]
|
[assembly: AssemblyFileVersion("1.10.1")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -98,26 +98,25 @@ namespace MapControl
|
||||||
var transformOffsetX = viewportOrigin.X - mapOrigin.X * scale;
|
var transformOffsetX = viewportOrigin.X - mapOrigin.X * scale;
|
||||||
var transformOffsetY = viewportOrigin.Y + mapOrigin.Y * scale;
|
var transformOffsetY = viewportOrigin.Y + mapOrigin.Y * scale;
|
||||||
|
|
||||||
|
ViewportTransform.Matrix = GetViewportTransformMatrix(scale, transformOffsetX, transformOffsetY);
|
||||||
|
|
||||||
tileLayerOffset.X = transformOffsetX - 180d * scale;
|
tileLayerOffset.X = transformOffsetX - 180d * scale;
|
||||||
tileLayerOffset.Y = transformOffsetY - 180d * scale;
|
tileLayerOffset.Y = transformOffsetY - 180d * scale;
|
||||||
|
|
||||||
ViewportTransform.Matrix = GetViewportTransformMatrix(scale, transformOffsetX, transformOffsetY);
|
var tileLayerTransform = GetTileLayerTransformMatrix();
|
||||||
|
|
||||||
|
foreach (TileLayer tileLayer in Children)
|
||||||
|
{
|
||||||
|
tileLayer.SetTransformMatrix(tileLayerTransform);
|
||||||
|
}
|
||||||
|
|
||||||
if (Math.Abs(mapOrigin.X - oldMapOriginX) > 180d)
|
if (Math.Abs(mapOrigin.X - oldMapOriginX) > 180d)
|
||||||
{
|
{
|
||||||
// immediately handle map origin leap when map center moves across 180° longitude
|
// immediately handle map origin leap when map center moves across 180° longitude
|
||||||
|
|
||||||
UpdateTiles(this, EventArgs.Empty);
|
UpdateTiles(this, EventArgs.Empty);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var tileLayerTransform = GetTileLayerTransformMatrix();
|
|
||||||
|
|
||||||
foreach (TileLayer tileLayer in Children)
|
|
||||||
{
|
|
||||||
tileLayer.SetTransformMatrix(tileLayerTransform);
|
|
||||||
}
|
|
||||||
|
|
||||||
updateTimer.Start();
|
updateTimer.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCompany("Clemens Fischer")]
|
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyVersion("1.10.0")]
|
[assembly: AssemblyVersion("1.10.1")]
|
||||||
[assembly: AssemblyFileVersion("1.10.0")]
|
[assembly: AssemblyFileVersion("1.10.1")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCompany("Clemens Fischer")]
|
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyVersion("1.10.0")]
|
[assembly: AssemblyVersion("1.10.1")]
|
||||||
[assembly: AssemblyFileVersion("1.10.0")]
|
[assembly: AssemblyFileVersion("1.10.1")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCompany("Clemens Fischer")]
|
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyVersion("1.10.0")]
|
[assembly: AssemblyVersion("1.10.1")]
|
||||||
[assembly: AssemblyFileVersion("1.10.0")]
|
[assembly: AssemblyFileVersion("1.10.1")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCompany("Clemens Fischer")]
|
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyVersion("1.10.0")]
|
[assembly: AssemblyVersion("1.10.1")]
|
||||||
[assembly: AssemblyFileVersion("1.10.0")]
|
[assembly: AssemblyFileVersion("1.10.1")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCompany("Clemens Fischer")]
|
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyVersion("1.10.0")]
|
[assembly: AssemblyVersion("1.10.1")]
|
||||||
[assembly: AssemblyFileVersion("1.10.0")]
|
[assembly: AssemblyFileVersion("1.10.1")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCompany("Clemens Fischer")]
|
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyVersion("1.10.0")]
|
[assembly: AssemblyVersion("1.10.1")]
|
||||||
[assembly: AssemblyFileVersion("1.10.0")]
|
[assembly: AssemblyFileVersion("1.10.1")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue