mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Version 1.11.1: Fixed MapImageLayer.
This commit is contained in:
parent
e733e98443
commit
34aa59a8c4
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("1.11.0")]
|
||||
[assembly: AssemblyFileVersion("1.11.0")]
|
||||
[assembly: AssemblyVersion("1.11.1")]
|
||||
[assembly: AssemblyFileVersion("1.11.1")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("1.11.0")]
|
||||
[assembly: AssemblyFileVersion("1.11.0")]
|
||||
[assembly: AssemblyVersion("1.11.1")]
|
||||
[assembly: AssemblyFileVersion("1.11.1")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
|
|
@ -60,14 +60,14 @@ namespace MapControl
|
|||
|
||||
public static double NormalizeLongitude(double longitude)
|
||||
{
|
||||
if (longitude > 180)
|
||||
{
|
||||
longitude = ((longitude - 180d) % 360d) - 180d;
|
||||
}
|
||||
else if (longitude < -180d)
|
||||
if (longitude < -180d)
|
||||
{
|
||||
longitude = ((longitude + 180d) % 360d) + 180d;
|
||||
}
|
||||
else if (longitude > 180d)
|
||||
{
|
||||
longitude = ((longitude - 180d) % 360d) - 180d;
|
||||
}
|
||||
|
||||
return longitude;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,9 +59,9 @@ namespace MapControl
|
|||
UpdateTransform();
|
||||
}
|
||||
|
||||
private void SetTransformMatrixes(double scale)
|
||||
private void SetTransformMatrixes()
|
||||
{
|
||||
scaleTransform.Matrix = new Matrix(scale, 0d, 0d, scale, 0d, 0d);
|
||||
scaleTransform.Matrix = new Matrix(CenterScale, 0d, 0d, CenterScale, 0d, 0d);
|
||||
rotateTransform.Matrix = Matrix.Identity.Rotate(Heading);
|
||||
scaleRotateTransform.Matrix = scaleTransform.Matrix.Multiply(rotateTransform.Matrix);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,12 +84,12 @@ namespace MapControl
|
|||
UpdateTransform();
|
||||
}
|
||||
|
||||
private void SetTransformMatrixes(double scale)
|
||||
private void SetTransformMatrixes()
|
||||
{
|
||||
Matrix rotateMatrix = Matrix.Identity;
|
||||
rotateMatrix.Rotate(Heading);
|
||||
rotateTransform.Matrix = rotateMatrix;
|
||||
scaleTransform.Matrix = new Matrix(scale, 0d, 0d, scale, 0d, 0d);
|
||||
scaleTransform.Matrix = new Matrix(CenterScale, 0d, 0d, CenterScale, 0d, 0d);
|
||||
scaleRotateTransform.Matrix = scaleTransform.Matrix * rotateMatrix;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,9 +51,6 @@ namespace MapControl
|
|||
"MaxZoomLevel", typeof(double), typeof(MapBase), new PropertyMetadata(18d,
|
||||
(o, e) => ((MapBase)o).MaxZoomLevelPropertyChanged((double)e.NewValue)));
|
||||
|
||||
public static readonly DependencyProperty CenterScaleProperty = DependencyProperty.Register(
|
||||
"CenterScale", typeof(double), typeof(MapBase), null);
|
||||
|
||||
internal static readonly DependencyProperty CenterPointProperty = DependencyProperty.Register(
|
||||
"CenterPoint", typeof(Point), typeof(MapBase), new PropertyMetadata(new Point(),
|
||||
(o, e) => ((MapBase)o).CenterPointPropertyChanged((Point)e.NewValue)));
|
||||
|
|
@ -201,13 +198,14 @@ namespace MapControl
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the map scale at the Center location as viewport coordinate units (pixels) per meter.
|
||||
/// Gets the scaling factor from cartesian map coordinates to viewport coordinates.
|
||||
/// </summary>
|
||||
public double CenterScale
|
||||
{
|
||||
get { return (double)GetValue(CenterScaleProperty); }
|
||||
private set { SetValue(CenterScaleProperty, value); }
|
||||
}
|
||||
public double ViewportScale { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the scaling factor from meters to viewport coordinate units (pixels) at the Center location.
|
||||
/// </summary>
|
||||
public double CenterScale { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the transformation from geographic coordinates to cartesian map coordinates.
|
||||
|
|
@ -226,8 +224,7 @@ namespace MapControl
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the scaling transformation from meters to viewport coordinate units (pixels)
|
||||
/// at the viewport center point.
|
||||
/// Gets the scaling transformation from meters to viewport coordinate units (pixels) at the Center location.
|
||||
/// </summary>
|
||||
public Transform ScaleTransform
|
||||
{
|
||||
|
|
@ -725,7 +722,7 @@ namespace MapControl
|
|||
|
||||
private void AdjustHeadingProperty(DependencyProperty property, ref double heading)
|
||||
{
|
||||
if (heading < -180d || heading > 360d)
|
||||
if (heading < 0d || heading > 360d)
|
||||
{
|
||||
heading = ((heading % 360d) + 360d) % 360d;
|
||||
InternalSetValue(property, heading);
|
||||
|
|
@ -801,7 +798,8 @@ namespace MapControl
|
|||
private void UpdateTransform(bool resetTransformOrigin = false)
|
||||
{
|
||||
var center = Center;
|
||||
var scale = SetViewportTransform(transformOrigin ?? center);
|
||||
|
||||
SetViewportTransform(transformOrigin ?? center);
|
||||
|
||||
if (transformOrigin != null)
|
||||
{
|
||||
|
|
@ -825,20 +823,19 @@ namespace MapControl
|
|||
if (resetTransformOrigin)
|
||||
{
|
||||
ResetTransformOrigin();
|
||||
scale = SetViewportTransform(center);
|
||||
SetViewportTransform(center);
|
||||
}
|
||||
}
|
||||
|
||||
scale *= mapTransform.RelativeScale(center) / MetersPerDegree; // Pixels per meter at center latitude
|
||||
CenterScale = scale;
|
||||
SetTransformMatrixes(scale);
|
||||
CenterScale = ViewportScale * mapTransform.RelativeScale(center) / MetersPerDegree; // Pixels per meter at center latitude
|
||||
|
||||
SetTransformMatrixes();
|
||||
OnViewportChanged();
|
||||
}
|
||||
|
||||
private double SetViewportTransform(Location origin)
|
||||
private void SetViewportTransform(Location origin)
|
||||
{
|
||||
return tileContainer.SetViewportTransform(ZoomLevel, Heading, mapTransform.Transform(origin), viewportOrigin, RenderSize);
|
||||
ViewportScale = tileContainer.SetViewportTransform(ZoomLevel, Heading, mapTransform.Transform(origin), viewportOrigin, RenderSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ namespace MapControl
|
|||
var height = ActualHeight * relativeSize;
|
||||
var dx = (ActualWidth - width) / 2d;
|
||||
var dy = (ActualHeight - height) / 2d;
|
||||
|
||||
var loc1 = ParentMap.ViewportPointToLocation(new Point(dx, dy));
|
||||
var loc2 = ParentMap.ViewportPointToLocation(new Point(dx + width, dy));
|
||||
var loc3 = ParentMap.ViewportPointToLocation(new Point(dx, dy + height));
|
||||
|
|
@ -168,9 +169,16 @@ namespace MapControl
|
|||
var east = Math.Max(loc1.Longitude, Math.Max(loc2.Longitude, Math.Max(loc3.Longitude, loc4.Longitude)));
|
||||
var south = Math.Min(loc1.Latitude, Math.Min(loc2.Latitude, Math.Min(loc3.Latitude, loc4.Latitude)));
|
||||
var north = Math.Max(loc1.Latitude, Math.Max(loc2.Latitude, Math.Max(loc3.Latitude, loc4.Latitude)));
|
||||
var image = GetImage(west, east, south, north, (int)Math.Round(width), (int)Math.Round(height));
|
||||
|
||||
Dispatcher.BeginInvoke((Action)(() => UpdateImage(west, east, south, north, image)));
|
||||
var p1 = ParentMap.MapTransform.Transform(new Location(south, west));
|
||||
var p2 = ParentMap.MapTransform.Transform(new Location(north, east));
|
||||
|
||||
width = Math.Round((p2.X - p1.X) * ParentMap.ViewportScale);
|
||||
height = Math.Round((p2.Y - p1.Y) * ParentMap.ViewportScale);
|
||||
|
||||
var image = GetImage(west, east, south, north, (int)width, (int)height);
|
||||
|
||||
Dispatcher.BeginInvoke(new Action(() => UpdateImage(west, east, south, north, image)));
|
||||
|
||||
updateInProgress = false;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -231,7 +231,8 @@ namespace MapControl
|
|||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (frameworkElement.HorizontalAlignment != HorizontalAlignment.Left ||
|
||||
frameworkElement.VerticalAlignment != VerticalAlignment.Top)
|
||||
{
|
||||
if (!panelSize.HasValue)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ using System.Windows;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("1.11.0")]
|
||||
[assembly: AssemblyFileVersion("1.11.0")]
|
||||
[assembly: AssemblyVersion("1.11.1")]
|
||||
[assembly: AssemblyFileVersion("1.11.1")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("1.11.0")]
|
||||
[assembly: AssemblyFileVersion("1.11.0")]
|
||||
[assembly: AssemblyVersion("1.11.1")]
|
||||
[assembly: AssemblyFileVersion("1.11.1")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("1.11.0")]
|
||||
[assembly: AssemblyFileVersion("1.11.0")]
|
||||
[assembly: AssemblyVersion("1.11.1")]
|
||||
[assembly: AssemblyFileVersion("1.11.1")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("1.11.0")]
|
||||
[assembly: AssemblyFileVersion("1.11.0")]
|
||||
[assembly: AssemblyVersion("1.11.1")]
|
||||
[assembly: AssemblyFileVersion("1.11.1")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("1.11.0")]
|
||||
[assembly: AssemblyFileVersion("1.11.0")]
|
||||
[assembly: AssemblyVersion("1.11.1")]
|
||||
[assembly: AssemblyFileVersion("1.11.1")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("1.11.0")]
|
||||
[assembly: AssemblyFileVersion("1.11.0")]
|
||||
[assembly: AssemblyVersion("1.11.1")]
|
||||
[assembly: AssemblyFileVersion("1.11.1")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@
|
|||
<!--<map:MapImageLayer Opacity="0.5"
|
||||
UriFormat="http://watzmann-geog.urz.uni-heidelberg.de/cached/osm?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&LAYERS=osm_auto:all&STYLES=&SRS=EPSG:900913&BBOX={W},{S},{E},{N}&WIDTH={X}&HEIGHT={Y}&FORMAT=image/png"/>-->
|
||||
<!--<map:MapImageLayer Opacity="0.5"
|
||||
UriFormat="http://ows.terrestris.de/osm-basemap/service?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&LAYERS=OSM-WMS-Deutschland&STYLES=&SRS=EPSG:900913&BBOX={W},{S},{E},{N}&WIDTH={X}&HEIGHT={Y}&FORMAT=image/png"/>-->
|
||||
UriFormat="http://ows.terrestris.de/osm/service?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&LAYERS=OSM-WMS&STYLES=&SRS=EPSG:900913&BBOX={W},{S},{E},{N}&WIDTH={X}&HEIGHT={Y}&FORMAT=image/png"/>-->
|
||||
|
||||
<map:MapImage x:Name="mapImage" South="53.54031" North="53.74871" West="8.08594" East="8.43750"
|
||||
Source="10_535_330.jpg" Opacity="0.5"/>
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("1.11.0")]
|
||||
[assembly: AssemblyFileVersion("1.11.0")]
|
||||
[assembly: AssemblyVersion("1.11.1")]
|
||||
[assembly: AssemblyFileVersion("1.11.1")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
Loading…
Reference in a new issue