Version 1.10.1: Fixed MapBase.TranslateMap and TileContainer.SetViewportTransform.

This commit is contained in:
ClemensF 2013-11-22 18:46:45 +01:00
parent f11c71799f
commit 11934a121a
11 changed files with 48 additions and 53 deletions

View file

@ -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)]

View file

@ -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)]

View file

@ -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);

View file

@ -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)]

View file

@ -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();
} }

View file

@ -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)]

View file

@ -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)]

View file

@ -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)]

View file

@ -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)]

View file

@ -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)]

View file

@ -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)]