mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2026-04-04 14:08:32 +00:00
Version 5.0: Separated map projection and view transform.
This commit is contained in:
parent
53723844a0
commit
c7cb2efcdb
47 changed files with 401 additions and 382 deletions
|
|
@ -45,10 +45,6 @@ namespace MapControl
|
|||
|
||||
public MapBase()
|
||||
{
|
||||
MapProjection = new WebMercatorProjection();
|
||||
ScaleRotateTransform.Children.Add(ScaleTransform);
|
||||
ScaleRotateTransform.Children.Add(RotateTransform);
|
||||
|
||||
// set Background by Style to enable resetting by ClearValue in MapLayerPropertyChanged
|
||||
var style = new Style(typeof(MapBase));
|
||||
style.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.Transparent)));
|
||||
|
|
|
|||
|
|
@ -140,18 +140,21 @@
|
|||
<Compile Include="..\Shared\Tile.cs">
|
||||
<Link>Tile.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\Shared\TileGrid.cs">
|
||||
<Link>TileGrid.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\Shared\TileImageLoader.cs">
|
||||
<Link>TileImageLoader.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\Shared\TileMatrix.cs">
|
||||
<Link>TileMatrix.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\Shared\TileSource.cs">
|
||||
<Link>TileSource.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\Shared\ViewportChangedEventArgs.cs">
|
||||
<Link>ViewportChangedEventArgs.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\Shared\ViewTransform.cs">
|
||||
<Link>ViewTransform.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\Shared\WebMercatorProjection.cs">
|
||||
<Link>WebMercatorProjection.cs</Link>
|
||||
</Compile>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@ namespace MapControl
|
|||
|
||||
protected override void OnViewportChanged(ViewportChangedEventArgs e)
|
||||
{
|
||||
var projection = ParentMap.MapProjection;
|
||||
var map = ParentMap;
|
||||
var projection = map.MapProjection;
|
||||
|
||||
if (projection.IsNormalCylindrical)
|
||||
{
|
||||
|
|
@ -39,7 +40,7 @@ namespace MapControl
|
|||
Children.Add(path);
|
||||
}
|
||||
|
||||
var bounds = projection.ViewportRectToBoundingBox(new Rect(0d, 0d, ParentMap.RenderSize.Width, ParentMap.RenderSize.Height));
|
||||
var bounds = map.ViewportRectToBoundingBox(new Rect(0d, 0d, map.RenderSize.Width, map.RenderSize.Height));
|
||||
var lineDistance = GetLineDistance();
|
||||
|
||||
var labelStart = new Location(
|
||||
|
|
@ -65,14 +66,14 @@ namespace MapControl
|
|||
{
|
||||
var figure = new PathFigure
|
||||
{
|
||||
StartPoint = projection.LocationToViewportPoint(new Location(lat, lineStart.Longitude)),
|
||||
StartPoint = map.LocationToViewportPoint(new Location(lat, lineStart.Longitude)),
|
||||
IsClosed = false,
|
||||
IsFilled = false
|
||||
};
|
||||
|
||||
figure.Segments.Add(new LineSegment
|
||||
{
|
||||
Point = projection.LocationToViewportPoint(new Location(lat, lineEnd.Longitude))
|
||||
Point = map.LocationToViewportPoint(new Location(lat, lineEnd.Longitude))
|
||||
});
|
||||
|
||||
geometry.Figures.Add(figure);
|
||||
|
|
@ -82,14 +83,14 @@ namespace MapControl
|
|||
{
|
||||
var figure = new PathFigure
|
||||
{
|
||||
StartPoint = projection.LocationToViewportPoint(new Location(lineStart.Latitude, lon)),
|
||||
StartPoint = map.LocationToViewportPoint(new Location(lineStart.Latitude, lon)),
|
||||
IsClosed = false,
|
||||
IsFilled = false
|
||||
};
|
||||
|
||||
figure.Segments.Add(new LineSegment
|
||||
{
|
||||
Point = projection.LocationToViewportPoint(new Location(lineEnd.Latitude, lon))
|
||||
Point = map.LocationToViewportPoint(new Location(lineEnd.Latitude, lon))
|
||||
});
|
||||
|
||||
geometry.Figures.Add(figure);
|
||||
|
|
@ -112,7 +113,7 @@ namespace MapControl
|
|||
{
|
||||
var renderTransform = new TransformGroup();
|
||||
renderTransform.Children.Add(new TranslateTransform());
|
||||
renderTransform.Children.Add(ParentMap.RotateTransform);
|
||||
renderTransform.Children.Add(map.RotateTransform);
|
||||
renderTransform.Children.Add(new TranslateTransform());
|
||||
|
||||
label = new TextBlock { RenderTransform = renderTransform };
|
||||
|
|
@ -153,7 +154,7 @@ namespace MapControl
|
|||
var label = (TextBlock)Children[i];
|
||||
var location = (Location)label.Tag;
|
||||
var viewportTransform = (TranslateTransform)((TransformGroup)label.RenderTransform).Children[2];
|
||||
var viewportPosition = projection.LocationToViewportPoint(location);
|
||||
var viewportPosition = map.LocationToViewportPoint(location);
|
||||
viewportTransform.X = viewportPosition.X;
|
||||
viewportTransform.Y = viewportPosition.Y;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCompany("Clemens Fischer")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Clemens Fischer")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyVersion("4.17.0")]
|
||||
[assembly: AssemblyFileVersion("4.17.0")]
|
||||
[assembly: AssemblyVersion("5.0.0")]
|
||||
[assembly: AssemblyFileVersion("5.0.0")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue