mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
158 lines
11 KiB
XML
158 lines
11 KiB
XML
<Window x:Class="MapControlTestApp.MainWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:map="clr-namespace:MapControl;assembly=MapControl"
|
|
xmlns:local="clr-namespace:MapControlTestApp"
|
|
Title="MainWindow" Height="600" Width="800">
|
|
<Window.Resources>
|
|
<map:TileLayer x:Key="SeamarksTileLayer"
|
|
Name="Seamarks" Description="© {y} OpenSeaMap Contributors, CC-BY-SA"
|
|
TileSource="http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png"
|
|
IsCached="False" MinZoomLevel="10" MaxZoomLevel="18"/>
|
|
<local:SampleItemCollection x:Key="Polylines"/>
|
|
<local:SampleItemCollection x:Key="Points"/>
|
|
<local:SampleItemCollection x:Key="Pushpins"/>
|
|
<DataTemplate x:Key="PolylineItemTemplate">
|
|
<map:MapPolyline Locations="{Binding Locations}" Stroke="Red" StrokeThickness="3"/>
|
|
</DataTemplate>
|
|
<Style x:Key="PointItemStyle" TargetType="map:MapItem">
|
|
<Setter Property="map:MapPanel.Location" Value="{Binding Location}"/>
|
|
<Setter Property="HorizontalAlignment" Value="Left"/>
|
|
<Setter Property="VerticalAlignment" Value="Bottom"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="map:MapItem">
|
|
<Canvas>
|
|
<VisualStateManager.VisualStateGroups>
|
|
<VisualStateGroup x:Name="CommonStates">
|
|
<VisualState x:Name="Normal"/>
|
|
<VisualState x:Name="Disabled"/>
|
|
<VisualState x:Name="MouseOver">
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetName="labelBackground" Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.1"/>
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
<VisualStateGroup x:Name="SelectionStates">
|
|
<VisualState x:Name="Unselected"/>
|
|
<VisualState x:Name="Selected"/>
|
|
</VisualStateGroup>
|
|
<VisualStateGroup x:Name="CurrentStates">
|
|
<VisualState x:Name="NotCurrent"/>
|
|
<VisualState x:Name="Current">
|
|
<Storyboard>
|
|
<ColorAnimation Storyboard.TargetName="path" Storyboard.TargetProperty="Stroke.Color" To="Magenta" Duration="0:0:0.1"/>
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
</VisualStateManager.VisualStateGroups>
|
|
<Path Name="path" StrokeThickness="2" Fill="Transparent">
|
|
<Path.Stroke>
|
|
<SolidColorBrush Color="Gray"/>
|
|
</Path.Stroke>
|
|
<Path.Data>
|
|
<EllipseGeometry RadiusX="8" RadiusY="8"/>
|
|
</Path.Data>
|
|
</Path>
|
|
<Grid Canvas.Left="10" Canvas.Bottom="3">
|
|
<Rectangle Name="labelBackground" Fill="White" Opacity="0.7"/>
|
|
<TextBlock Margin="2,0,2,1" Text="{Binding Name}"/>
|
|
</Grid>
|
|
</Canvas>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style x:Key="PushpinItemStyle" TargetType="map:MapItem">
|
|
<Setter Property="map:MapPanel.Location" Value="{Binding Location}"/>
|
|
<Setter Property="HorizontalAlignment" Value="Left"/>
|
|
<Setter Property="VerticalAlignment" Value="Bottom"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate>
|
|
<map:Pushpin Content="{Binding Name}"/>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Foreground" Value="OrangeRed"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Window.Resources>
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
<map:Map Name="map" IsManipulationEnabled="True" Margin="2" FontSize="10"
|
|
LightForeground="Black" LightBackground="White" DarkForeground="White" DarkBackground="#FF3F3F3F"
|
|
Center="53.5,8.2" ZoomLevel="11"
|
|
MainTileLayer="{Binding ElementName=tileLayerComboBox, Path=SelectedItem}"
|
|
ManipulationInertiaStarting="MapManipulationInertiaStarting"
|
|
MouseMove="MapMouseMove" MouseLeave="MapMouseLeave">
|
|
<map:MapGraticule Opacity="0.6"/>
|
|
<map:MapItemsControl ItemsSource="{StaticResource Polylines}"
|
|
ItemTemplate="{StaticResource PolylineItemTemplate}"/>
|
|
<map:MapItemsControl ItemsSource="{StaticResource Points}"
|
|
ItemContainerStyle="{StaticResource PointItemStyle}"
|
|
IsSynchronizedWithCurrentItem="True"/>
|
|
<map:MapItemsControl ItemsSource="{StaticResource Pushpins}"
|
|
ItemContainerStyle="{StaticResource PushpinItemStyle}"
|
|
IsSynchronizedWithCurrentItem="True"/>
|
|
<map:Pushpin Location="53.5,8.2" Background="Yellow" Foreground="Blue">N 53° 30' E 8° 12'</map:Pushpin>
|
|
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="2,0,0,0" FontSize="10"
|
|
Text="{Binding ElementName=map, Path=MainTileLayer.Description}"/>
|
|
</map:Map>
|
|
<Grid Grid.Row="1" Margin="2">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Name="mouseLocation" Margin="4" VerticalAlignment="Center"/>
|
|
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
|
|
<Slider Name="zoomSlider" ToolTip="Zoom Level" Margin="4,0,4,0" Width="100" Minimum="1" Maximum="20" SmallChange="0.01"
|
|
Value="{Binding ElementName=map, Path=TargetZoomLevel}" />
|
|
<Slider Name="headingSlider" ToolTip="Heading" Margin="4,0,4,0" Width="100" Minimum="0" Maximum="360" SmallChange="10" LargeChange="45"
|
|
Value="{Binding ElementName=map, Path=TargetHeading}"/>
|
|
<CheckBox ToolTip="Map Overlay" Margin="4,0,4,0" VerticalAlignment="Center" Content="Seamarks" Click="SeamarksClick"/>
|
|
<ComboBox Name="tileLayerComboBox" ToolTip="Main Tile Layer" Margin="4,0,4,0" DisplayMemberPath="Name" SelectedIndex="0">
|
|
<ComboBox.Items>
|
|
<map:TileLayer Name="OpenStreetMap" Description="© {y} OpenStreetMap Contributors, CC-BY-SA"
|
|
TileSource="http://{c}.tile.openstreetmap.org/{z}/{x}/{y}.png"
|
|
IsCached="False"/>
|
|
<map:TileLayer Name="OpenCycleMap" Description="OpenCycleMap - © {y} Andy Allen & OpenStreetMap Contributors, CC-BY-SA"
|
|
TileSource="http://{c}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png"
|
|
IsCached="False"/>
|
|
<map:TileLayer Name="OCM Transport" Description="OpenCycleMap Transport - © {y} Andy Allen & OpenStreetMap Contributors, CC-BY-SA"
|
|
TileSource="http://{c}.tile2.opencyclemap.org/transport/{z}/{x}/{y}.png"
|
|
IsCached="False"/>
|
|
<map:TileLayer Name="OCM Landscape" Description="OpenCycleMap Landscape - © {y} Andy Allen & OpenStreetMap Contributors, CC-BY-SA"
|
|
TileSource="http://{c}.tile3.opencyclemap.org/landscape/{z}/{x}/{y}.png"
|
|
IsCached="False"/>
|
|
<map:TileLayer Name="MapQuest OSM" Description="MapQuest OSM - © {y} MapQuest & OpenStreetMap Contributors"
|
|
TileSource="http://otile{n}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.png"
|
|
IsCached="False"/>
|
|
<!--<map:TileLayer Name="Google Maps" Description="Google Maps - © {y} Google"
|
|
TileSource="http://mt{i}.google.com/vt/x={x}&y={y}&z={z}"
|
|
IsCached="False" MaxZoomLevel="20"/>
|
|
<map:TileLayer Name="Google Images" Description="Google Maps - © {y} Google"
|
|
TileSource="http://khm{i}.google.com/kh/v=113&x={x}&y={y}&z={z}"
|
|
IsCached="False" MaxZoomLevel="20" HasDarkBackground="True"/>
|
|
<map:TileLayer Name="Bing Maps" Description="Bing Maps - © {y} Microsoft Corporation"
|
|
TileSource="http://ecn.t{i}.tiles.virtualearth.net/tiles/r{q}.png?g=0&stl=h"
|
|
IsCached="False" MaxZoomLevel="20"/>
|
|
<map:TileLayer Name="Bing Images" Description="Bing Maps - © {y} Microsoft Corporation"
|
|
TileSource="http://ecn.t{i}.tiles.virtualearth.net/tiles/a{q}.jpeg?g=0"
|
|
IsCached="False" MaxZoomLevel="20" HasDarkBackground="True"/>
|
|
<map:TileLayer Name="Bing Hybrid" Description="Bing Maps - © {y} Microsoft Corporation"
|
|
TileSource="http://ecn.t{i}.tiles.virtualearth.net/tiles/h{q}.jpeg?g=0&stl=h"
|
|
IsCached="False" MaxZoomLevel="20" HasDarkBackground="True"/>-->
|
|
</ComboBox.Items>
|
|
</ComboBox>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Grid>
|
|
</Window>
|