Location now immutable

This commit is contained in:
ClemensFischer 2024-04-11 13:21:38 +02:00
parent 52d990a89c
commit dc9932a0cf
5 changed files with 18 additions and 32 deletions

View file

@ -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)
{

View file

@ -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)

View file

@ -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)
{