mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
60 lines
1.5 KiB
C#
60 lines
1.5 KiB
C#
// XAML Map Control - http://xamlmapcontrol.codeplex.com/
|
|
// Copyright © 2012 Clemens Fischer
|
|
// Licensed under the Microsoft Public License (Ms-PL)
|
|
|
|
#if WINRT
|
|
using Windows.Foundation;
|
|
using Windows.UI.Xaml.Controls;
|
|
#else
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
#endif
|
|
|
|
namespace MapControl
|
|
{
|
|
public partial class TileLayer : Panel
|
|
{
|
|
partial void Initialize()
|
|
{
|
|
RenderTransform = transform;
|
|
}
|
|
|
|
private Panel TileContainer
|
|
{
|
|
get { return Parent as Panel; }
|
|
}
|
|
|
|
private void RenderTiles()
|
|
{
|
|
Children.Clear();
|
|
foreach (var tile in tiles)
|
|
{
|
|
Children.Add(tile.Image);
|
|
}
|
|
}
|
|
|
|
protected override Size MeasureOverride(Size availableSize)
|
|
{
|
|
foreach (var tile in tiles)
|
|
{
|
|
tile.Image.Measure(availableSize);
|
|
}
|
|
|
|
return new Size();
|
|
}
|
|
|
|
protected override Size ArrangeOverride(Size finalSize)
|
|
{
|
|
foreach (var tile in tiles)
|
|
{
|
|
var tileSize = (double)(256 << (zoomLevel - tile.ZoomLevel));
|
|
tile.Image.Width = tileSize;
|
|
tile.Image.Height = tileSize;
|
|
tile.Image.Arrange(new Rect(tileSize * tile.X - 256 * grid.X, tileSize * tile.Y - 256 * grid.Y, tileSize, tileSize));
|
|
}
|
|
|
|
return finalSize;
|
|
}
|
|
}
|
|
}
|