mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Location now immutable
This commit is contained in:
parent
52d990a89c
commit
dc9932a0cf
|
|
@ -10,7 +10,9 @@ namespace MapControl
|
|||
/// <summary>
|
||||
/// A geographic location with latitude and longitude values in degrees.
|
||||
/// </summary>
|
||||
#if !UWP
|
||||
#if WINUI || UWP
|
||||
[Windows.Foundation.Metadata.CreateFromString(MethodName = "MapControl.Location.Parse")]
|
||||
#else
|
||||
[System.ComponentModel.TypeConverter(typeof(LocationConverter))]
|
||||
#endif
|
||||
public class Location : IEquatable<Location>
|
||||
|
|
@ -21,19 +23,12 @@ namespace MapControl
|
|||
|
||||
public Location(double latitude, double longitude)
|
||||
{
|
||||
Latitude = latitude;
|
||||
Latitude = Math.Min(Math.Max(latitude, -90d), 90d);
|
||||
Longitude = longitude;
|
||||
}
|
||||
|
||||
private double latitude;
|
||||
|
||||
public double Latitude
|
||||
{
|
||||
get => latitude;
|
||||
set => latitude = Math.Min(Math.Max(value, -90d), 90d);
|
||||
}
|
||||
|
||||
public double Longitude { get; set; }
|
||||
public double Latitude { get; }
|
||||
public double Longitude { get; }
|
||||
|
||||
public bool Equals(Location location)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -774,14 +774,17 @@ namespace MapControl
|
|||
|
||||
if (center != null)
|
||||
{
|
||||
center.Longitude = Location.NormalizeLongitude(center.Longitude);
|
||||
var centerLatitude = center.Latitude;
|
||||
var centerLongitude = Location.NormalizeLongitude(center.Longitude);
|
||||
|
||||
if (center.Latitude < -maxLatitude || center.Latitude > maxLatitude)
|
||||
if (centerLatitude < -maxLatitude || centerLatitude > maxLatitude)
|
||||
{
|
||||
center.Latitude = Math.Min(Math.Max(center.Latitude, -maxLatitude), maxLatitude);
|
||||
centerLatitude = Math.Min(Math.Max(centerLatitude, -maxLatitude), maxLatitude);
|
||||
resetTransformCenter = true;
|
||||
}
|
||||
|
||||
center = new Location(centerLatitude, centerLongitude);
|
||||
|
||||
SetValueInternal(CenterProperty, center);
|
||||
|
||||
if (centerAnimation == null)
|
||||
|
|
|
|||
|
|
@ -232,8 +232,8 @@ namespace MapControl
|
|||
|
||||
if (location != null)
|
||||
{
|
||||
location.Longitude = parentMap.ConstrainedLongitude(location.Longitude);
|
||||
var pos = parentMap.LocationToView(location);
|
||||
var pos = parentMap.LocationToView(
|
||||
new Location(location.Latitude, parentMap.ConstrainedLongitude(location.Longitude)));
|
||||
|
||||
if (pos.HasValue)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -97,14 +97,12 @@
|
|||
</Grid.DataContext>
|
||||
|
||||
<map:Map x:Name="map" ManipulationMode="All"
|
||||
Center="53.5,8.2"
|
||||
MinZoomLevel="2" MaxZoomLevel="21" ZoomLevel="11"
|
||||
PointerPressed="MapPointerPressed"
|
||||
PointerReleased="MapPointerReleased"
|
||||
PointerMoved="MapPointerMoved"
|
||||
PointerExited="MapPointerExited">
|
||||
<map:Map.Center>
|
||||
<map:Location Latitude="53.5" Longitude="8.2"/>
|
||||
</map:Map.Center>
|
||||
|
||||
<map:MapPolyline x:Name="measurementLine" Visibility="Collapsed"
|
||||
Stroke="{Binding Foreground, ElementName=map}"
|
||||
|
|
@ -122,11 +120,7 @@
|
|||
ItemContainerStyle="{StaticResource PushpinItemStyle}"
|
||||
LocationMemberPath="Location"/>
|
||||
|
||||
<map:Pushpin AutoCollapse="True" Content="N 53°30' E 8°12'">
|
||||
<map:Pushpin.Location>
|
||||
<map:Location Latitude="53.5" Longitude="8.2"/>
|
||||
</map:Pushpin.Location>
|
||||
</map:Pushpin>
|
||||
<map:Pushpin Location="53.5,8.2" AutoCollapse="True" Content="N 53°30' E 8°12'"/>
|
||||
</map:Map>
|
||||
|
||||
<Border HorizontalAlignment="Center" VerticalAlignment="Top" Margin="4" IsHitTestVisible="False">
|
||||
|
|
|
|||
|
|
@ -112,14 +112,12 @@
|
|||
</Grid.DataContext>
|
||||
|
||||
<map:Map x:Name="map" ManipulationMode="All"
|
||||
Center="53.5,8.2"
|
||||
MinZoomLevel="2" MaxZoomLevel="21" ZoomLevel="11"
|
||||
PointerPressed="MapPointerPressed"
|
||||
PointerReleased="MapPointerReleased"
|
||||
PointerMoved="MapPointerMoved"
|
||||
PointerExited="MapPointerExited">
|
||||
<map:Map.Center>
|
||||
<map:Location Latitude="53.5" Longitude="8.2"/>
|
||||
</map:Map.Center>
|
||||
|
||||
<map:MapPolyline x:Name="measurementLine" Visibility="Collapsed"
|
||||
Stroke="{Binding Foreground, ElementName=map}"
|
||||
|
|
@ -137,11 +135,7 @@
|
|||
ItemContainerStyle="{StaticResource PushpinItemStyle}"
|
||||
LocationMemberPath="Location"/>
|
||||
|
||||
<map:Pushpin AutoCollapse="True" Content="N 53°30' E 8°12'">
|
||||
<map:Pushpin.Location>
|
||||
<map:Location Latitude="53.5" Longitude="8.2"/>
|
||||
</map:Pushpin.Location>
|
||||
</map:Pushpin>
|
||||
<map:Pushpin Location="53.5,8.2" AutoCollapse="True" Content="N 53°30' E 8°12'"/>
|
||||
</map:Map>
|
||||
|
||||
<Border HorizontalAlignment="Center" VerticalAlignment="Top" Margin="4" IsHitTestVisible="False">
|
||||
|
|
|
|||
Loading…
Reference in a new issue