Fix StyleCop warnings for RadMap
This commit is contained in:
Родитель
147fa7de28
Коммит
37ee86d4e2
|
@ -13,7 +13,6 @@ namespace Telerik.Geospatial
|
|||
/// <param name="value">The raw value read from the file.</param>
|
||||
/// <param name="fieldName">The name of the field associated with the provided value.</param>
|
||||
/// <param name="fieldType">The type of the field associated with the provided value.</param>
|
||||
/// <returns></returns>
|
||||
object Convert(object value, string fieldName, Type fieldType);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,8 +8,6 @@
|
|||
/// <summary>
|
||||
/// Converts the processed <see cref="Location"/> value.
|
||||
/// </summary>
|
||||
/// <param name="location"></param>
|
||||
/// <returns></returns>
|
||||
Location Convert(Location location);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace Telerik.Geospatial
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the latitude value of the location.
|
||||
/// Gets or sets the latitude value of the location.
|
||||
/// </summary>
|
||||
public double Latitude
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ namespace Telerik.Geospatial
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the longitude value of the location.
|
||||
/// Gets or sets the longitude value of the location.
|
||||
/// </summary>
|
||||
public double Longitude
|
||||
{
|
||||
|
@ -44,9 +44,6 @@ namespace Telerik.Geospatial
|
|||
/// <summary>
|
||||
/// Checks whether two <see cref="Location"/> values are equal.
|
||||
/// </summary>
|
||||
/// <param name="location1"></param>
|
||||
/// <param name="location2"></param>
|
||||
/// <returns></returns>
|
||||
public static bool operator ==(Location location1, Location location2)
|
||||
{
|
||||
return location1.Equals(location2);
|
||||
|
@ -55,9 +52,6 @@ namespace Telerik.Geospatial
|
|||
/// <summary>
|
||||
/// Checks whether two <see cref="Location"/> values are not equal.
|
||||
/// </summary>
|
||||
/// <param name="location1"></param>
|
||||
/// <param name="location2"></param>
|
||||
/// <returns></returns>
|
||||
public static bool operator !=(Location location1, Location location2)
|
||||
{
|
||||
return !location1.Equals(location2);
|
||||
|
@ -66,9 +60,6 @@ namespace Telerik.Geospatial
|
|||
/// <summary>
|
||||
/// Checks whether two <see cref="Location"/> values are equal.
|
||||
/// </summary>
|
||||
/// <param name="location1"></param>
|
||||
/// <param name="location2"></param>
|
||||
/// <returns></returns>
|
||||
public static bool Equals(Location location1, Location location2)
|
||||
{
|
||||
return location1.Latitude == location2.Latitude && location1.Longitude == location2.Longitude;
|
||||
|
|
|
@ -98,9 +98,6 @@
|
|||
/// <summary>
|
||||
/// Checks whether two <see cref="LocationRect"/> values are equal.
|
||||
/// </summary>
|
||||
/// <param name="locationRect1"></param>
|
||||
/// <param name="locationRect2"></param>
|
||||
/// <returns></returns>
|
||||
public static bool operator ==(LocationRect locationRect1, LocationRect locationRect2)
|
||||
{
|
||||
return locationRect1.Equals(locationRect2);
|
||||
|
@ -109,9 +106,6 @@
|
|||
/// <summary>
|
||||
/// Checks whether two <see cref="LocationRect"/> values are not equal.
|
||||
/// </summary>
|
||||
/// <param name="locationRect1"></param>
|
||||
/// <param name="locationRect2"></param>
|
||||
/// <returns></returns>
|
||||
public static bool operator !=(LocationRect locationRect1, LocationRect locationRect2)
|
||||
{
|
||||
return !locationRect1.Equals(locationRect2);
|
||||
|
@ -120,9 +114,6 @@
|
|||
/// <summary>
|
||||
/// Checks whether two <see cref="LocationRect"/> values are equal.
|
||||
/// </summary>
|
||||
/// <param name="locationRect1"></param>
|
||||
/// <param name="locationRect2"></param>
|
||||
/// <returns></returns>
|
||||
public static bool Equals(LocationRect locationRect1, LocationRect locationRect2)
|
||||
{
|
||||
return locationRect1.Northwest == locationRect2.Northwest && locationRect1.Southeast == locationRect2.Southeast;
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace Telerik.Geospatial
|
|||
public interface IMap2DShape : IMapShape
|
||||
{
|
||||
/// <summary>
|
||||
/// Get the collection of collections of <see cref="Location"/> values that represent the shape.
|
||||
/// Gets the collection of collections of <see cref="Location"/> values that represent the shape.
|
||||
/// </summary>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
|
||||
IEnumerable<IEnumerable<Location>> Locations
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
public interface IMapPointShape : IMapShape
|
||||
{
|
||||
/// <summary>
|
||||
/// The geographical location of the shape.
|
||||
/// Gets the geographical location of the shape.
|
||||
/// </summary>
|
||||
Location Location
|
||||
{
|
||||
|
|
|
@ -20,8 +20,6 @@ namespace Telerik.Geospatial
|
|||
/// <summary>
|
||||
/// Gets the attribute value associated with the provided key.
|
||||
/// </summary>
|
||||
/// <param name="key"></param>
|
||||
/// <returns></returns>
|
||||
object GetAttribute(string key);
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -16,8 +16,8 @@ namespace Telerik.Geospatial
|
|||
|
||||
// TODO: What about Null values?
|
||||
// TODO: Consider whether supporting dBASE version 7 makes sense at all (currently unsupported).
|
||||
private static readonly byte[] AllowedTypes = new byte[]
|
||||
{
|
||||
private static readonly byte[] AllowedTypes = new byte[]
|
||||
{
|
||||
0x02, /* FoxBASE */
|
||||
0x03, /* FoxBASE+/Dbase III plus, no memo */
|
||||
0x30, /* Visual FoxPro */
|
||||
|
@ -30,10 +30,10 @@ namespace Telerik.Geospatial
|
|||
0xfb /* FoxBASE */
|
||||
};
|
||||
|
||||
public List<string> AttributesToLoad
|
||||
{
|
||||
get;
|
||||
set;
|
||||
public List<string> AttributesToLoad
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public IAttributeValueConverter AttributeValueConverter
|
||||
|
@ -46,70 +46,71 @@ namespace Telerik.Geospatial
|
|||
{
|
||||
var token = cancellationTokenSource.Token;
|
||||
|
||||
var task = Task.Factory.StartNew(async () =>
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
var task = Task.Factory.StartNew(
|
||||
async () =>
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (stream.Size < 32)
|
||||
{
|
||||
throw new NotSupportedException(InvalidFormat);
|
||||
}
|
||||
|
||||
using (var dataStream = stream.CloneStream())
|
||||
{
|
||||
byte[] header = new byte[32];
|
||||
await dataStream.ReadAsync(header.AsBuffer(), 32u, InputStreamOptions.Partial);
|
||||
|
||||
byte fileType = header[0];
|
||||
if (!AllowedTypes.Contains(fileType))
|
||||
if (stream.Size < 32)
|
||||
{
|
||||
throw new NotSupportedException(InvalidFormat);
|
||||
}
|
||||
|
||||
DbfHeader dbfHeader = new DbfHeader();
|
||||
dbfHeader.RecordsCount = BitConverter.ToInt32(header, 4);
|
||||
dbfHeader.RecordsOffset = BitConverter.ToInt16(header, 8);
|
||||
dbfHeader.RecordLength = BitConverter.ToInt16(header, 10);
|
||||
|
||||
if (encoding == null)
|
||||
using (var dataStream = stream.CloneStream())
|
||||
{
|
||||
byte languageDriver = header[29];
|
||||
encoding = DbfEncoding.GetEncoding(languageDriver);
|
||||
}
|
||||
byte[] header = new byte[32];
|
||||
await dataStream.ReadAsync(header.AsBuffer(), 32u, InputStreamOptions.Partial);
|
||||
|
||||
dbfHeader.Encoding = encoding;
|
||||
|
||||
// header is 32 bytes + n field descriptors * 32 bytes + carriage return byte (0x0D)
|
||||
int fieldDescriptorCount = (dbfHeader.RecordsOffset - 32 - 1) / 32;
|
||||
byte[] fieldDescriptor;
|
||||
DbfFieldInfo dbfField;
|
||||
for (int i = 0; i < fieldDescriptorCount; i++)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
byte fileType = header[0];
|
||||
if (!AllowedTypes.Contains(fileType))
|
||||
{
|
||||
return null;
|
||||
throw new NotSupportedException(InvalidFormat);
|
||||
}
|
||||
|
||||
fieldDescriptor = new byte[32];
|
||||
await dataStream.ReadAsync(fieldDescriptor.AsBuffer(), 32u, InputStreamOptions.Partial);
|
||||
DbfHeader dbfHeader = new DbfHeader();
|
||||
dbfHeader.RecordsCount = BitConverter.ToInt32(header, 4);
|
||||
dbfHeader.RecordsOffset = BitConverter.ToInt16(header, 8);
|
||||
dbfHeader.RecordLength = BitConverter.ToInt16(header, 10);
|
||||
|
||||
dbfField = new DbfFieldInfo();
|
||||
dbfField.Name = encoding.GetString(fieldDescriptor, 0, 11).Replace("\0", string.Empty);
|
||||
dbfField.NativeDbfType = (char)fieldDescriptor[11];
|
||||
if (encoding == null)
|
||||
{
|
||||
byte languageDriver = header[29];
|
||||
encoding = DbfEncoding.GetEncoding(languageDriver);
|
||||
}
|
||||
|
||||
dbfField.Length = fieldDescriptor[16];
|
||||
dbfField.DecimalCount = fieldDescriptor[17];
|
||||
dbfHeader.Encoding = encoding;
|
||||
|
||||
dbfHeader.Fields.Add(dbfField);
|
||||
// header is 32 bytes + n field descriptors * 32 bytes + carriage return byte (0x0D)
|
||||
int fieldDescriptorCount = (dbfHeader.RecordsOffset - 32 - 1) / 32;
|
||||
byte[] fieldDescriptor;
|
||||
DbfFieldInfo dbfField;
|
||||
for (int i = 0; i < fieldDescriptorCount; i++)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
fieldDescriptor = new byte[32];
|
||||
await dataStream.ReadAsync(fieldDescriptor.AsBuffer(), 32u, InputStreamOptions.Partial);
|
||||
|
||||
dbfField = new DbfFieldInfo();
|
||||
dbfField.Name = encoding.GetString(fieldDescriptor, 0, 11).Replace("\0", string.Empty);
|
||||
dbfField.NativeDbfType = (char)fieldDescriptor[11];
|
||||
|
||||
dbfField.Length = fieldDescriptor[16];
|
||||
dbfField.DecimalCount = fieldDescriptor[17];
|
||||
|
||||
dbfHeader.Fields.Add(dbfField);
|
||||
}
|
||||
|
||||
return dbfHeader;
|
||||
}
|
||||
|
||||
return dbfHeader;
|
||||
}
|
||||
},
|
||||
token).Unwrap();
|
||||
},
|
||||
token).Unwrap();
|
||||
|
||||
return task;
|
||||
}
|
||||
|
@ -120,48 +121,49 @@ namespace Telerik.Geospatial
|
|||
var cancellationTokenSource = taskState.CancellationTokenSource;
|
||||
var token = cancellationTokenSource.Token;
|
||||
|
||||
var task = Task.Factory.StartNew(async () =>
|
||||
{
|
||||
using (var dataStream = taskState.Stream.CloneStream())
|
||||
var task = Task.Factory.StartNew(
|
||||
async () =>
|
||||
{
|
||||
int start = taskState.Start;
|
||||
int end = taskState.End;
|
||||
DbfHeader dbfHeader = taskState.DbfHeader;
|
||||
var shapeModels = taskState.ShapeModels;
|
||||
var valueConverter = taskState.ValueConverter;
|
||||
var attributesToLoad = taskState.AttributesToLoad;
|
||||
|
||||
dataStream.Seek((ulong)(dbfHeader.RecordsOffset + start * dbfHeader.RecordLength));
|
||||
|
||||
for (int i = start; i < end; i++)
|
||||
using (var dataStream = taskState.Stream.CloneStream())
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
return;
|
||||
}
|
||||
int start = taskState.Start;
|
||||
int end = taskState.End;
|
||||
DbfHeader dbfHeader = taskState.DbfHeader;
|
||||
var shapeModels = taskState.ShapeModels;
|
||||
var valueConverter = taskState.ValueConverter;
|
||||
var attributesToLoad = taskState.AttributesToLoad;
|
||||
|
||||
var shapeModel = shapeModels[i] as MapShapeModel;
|
||||
byte[] record = new byte[dbfHeader.RecordLength];
|
||||
await dataStream.ReadAsync(record.AsBuffer(), (uint)dbfHeader.RecordLength, InputStreamOptions.Partial);
|
||||
dataStream.Seek((ulong)(dbfHeader.RecordsOffset + start * dbfHeader.RecordLength));
|
||||
|
||||
// Data records are preceded by one byte; that is, a space (20H) if the record is not deleted, an asterisk (2AH) if the record is deleted.
|
||||
int offset = 1;
|
||||
foreach (var field in dbfHeader.Fields)
|
||||
for (int i = start; i < end; i++)
|
||||
{
|
||||
if (attributesToLoad == null || attributesToLoad.Contains(field.Name))
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
string value = dbfHeader.Encoding.GetString(record, offset, field.Length);
|
||||
object propertyValue = TransformDbfValue(field, value, valueConverter);
|
||||
|
||||
shapeModel.Attributes[field.Name] = propertyValue;
|
||||
return;
|
||||
}
|
||||
|
||||
offset += field.Length;
|
||||
var shapeModel = shapeModels[i] as MapShapeModel;
|
||||
byte[] record = new byte[dbfHeader.RecordLength];
|
||||
await dataStream.ReadAsync(record.AsBuffer(), (uint)dbfHeader.RecordLength, InputStreamOptions.Partial);
|
||||
|
||||
// Data records are preceded by one byte; that is, a space (20H) if the record is not deleted, an asterisk (2AH) if the record is deleted.
|
||||
int offset = 1;
|
||||
foreach (var field in dbfHeader.Fields)
|
||||
{
|
||||
if (attributesToLoad == null || attributesToLoad.Contains(field.Name))
|
||||
{
|
||||
string value = dbfHeader.Encoding.GetString(record, offset, field.Length);
|
||||
object propertyValue = TransformDbfValue(field, value, valueConverter);
|
||||
|
||||
shapeModel.Attributes[field.Name] = propertyValue;
|
||||
}
|
||||
|
||||
offset += field.Length;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
token).Unwrap();
|
||||
},
|
||||
token).Unwrap();
|
||||
|
||||
return task;
|
||||
}
|
||||
|
@ -348,13 +350,13 @@ namespace Telerik.Geospatial
|
|||
set;
|
||||
}
|
||||
|
||||
internal IAttributeValueConverter ValueConverter
|
||||
{
|
||||
get;
|
||||
internal IAttributeValueConverter ValueConverter
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
internal List<string> AttributesToLoad
|
||||
internal List<string> AttributesToLoad
|
||||
{
|
||||
get;
|
||||
set;
|
||||
|
|
|
@ -22,7 +22,8 @@ namespace Telerik.Geospatial
|
|||
var cancellationTokenSource = taskState.CancellationTokenSource;
|
||||
var token = cancellationTokenSource.Token;
|
||||
|
||||
var task = Task.Factory.StartNew(async () =>
|
||||
var task = Task.Factory.StartNew(
|
||||
async () =>
|
||||
{
|
||||
using (var shapeStream = taskState.Stream.CloneStream())
|
||||
{
|
||||
|
@ -85,7 +86,7 @@ namespace Telerik.Geospatial
|
|||
|
||||
return shapeModels;
|
||||
}
|
||||
},
|
||||
},
|
||||
token).Unwrap();
|
||||
|
||||
return task;
|
||||
|
@ -226,51 +227,52 @@ namespace Telerik.Geospatial
|
|||
{
|
||||
var token = cancellationTokenSource.Token;
|
||||
|
||||
var task = Task.Factory.StartNew(async () =>
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
var task = Task.Factory.StartNew(
|
||||
async () =>
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
using (var shapeStream = stream.CloneStream())
|
||||
{
|
||||
int offset = 36;
|
||||
shapeStream.Seek((ulong)offset);
|
||||
|
||||
byte[] boundingBox = new byte[32];
|
||||
await shapeStream.ReadAsync(boundingBox.AsBuffer(), 32u, InputStreamOptions.Partial);
|
||||
|
||||
var recordInfos = new ShapefileRecordInfoCollection();
|
||||
recordInfos.BoundingRect = GetBoundingRect(boundingBox, this.CoordinateValueConverter);
|
||||
|
||||
offset = 100;
|
||||
shapeStream.Seek((ulong)offset);
|
||||
|
||||
while (shapeStream.Position < shapeStream.Size)
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
byte[] recordHeader = new byte[8];
|
||||
await shapeStream.ReadAsync(recordHeader.AsBuffer(), 8u, InputStreamOptions.Partial);
|
||||
|
||||
// The content length for a record is the length of the record contents section measured in 16-bit words.
|
||||
int contentLength = ToInt32BigEndian(recordHeader, 4) * 2;
|
||||
|
||||
offset += 8;
|
||||
recordInfos.Add(new ShapefileRecordInfo() { ContentOffset = offset, ContentLength = contentLength });
|
||||
|
||||
offset += contentLength;
|
||||
shapeStream.Seek((ulong)offset);
|
||||
return null;
|
||||
}
|
||||
|
||||
return recordInfos;
|
||||
}
|
||||
},
|
||||
token).Unwrap();
|
||||
using (var shapeStream = stream.CloneStream())
|
||||
{
|
||||
int offset = 36;
|
||||
shapeStream.Seek((ulong)offset);
|
||||
|
||||
byte[] boundingBox = new byte[32];
|
||||
await shapeStream.ReadAsync(boundingBox.AsBuffer(), 32u, InputStreamOptions.Partial);
|
||||
|
||||
var recordInfos = new ShapefileRecordInfoCollection();
|
||||
recordInfos.BoundingRect = GetBoundingRect(boundingBox, this.CoordinateValueConverter);
|
||||
|
||||
offset = 100;
|
||||
shapeStream.Seek((ulong)offset);
|
||||
|
||||
while (shapeStream.Position < shapeStream.Size)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
byte[] recordHeader = new byte[8];
|
||||
await shapeStream.ReadAsync(recordHeader.AsBuffer(), 8u, InputStreamOptions.Partial);
|
||||
|
||||
// The content length for a record is the length of the record contents section measured in 16-bit words.
|
||||
int contentLength = ToInt32BigEndian(recordHeader, 4) * 2;
|
||||
|
||||
offset += 8;
|
||||
recordInfos.Add(new ShapefileRecordInfo() { ContentOffset = offset, ContentLength = contentLength });
|
||||
|
||||
offset += contentLength;
|
||||
shapeStream.Seek((ulong)offset);
|
||||
}
|
||||
|
||||
return recordInfos;
|
||||
}
|
||||
},
|
||||
token).Unwrap();
|
||||
|
||||
return task;
|
||||
}
|
||||
|
@ -387,9 +389,9 @@ namespace Telerik.Geospatial
|
|||
set;
|
||||
}
|
||||
|
||||
internal CancellationTokenSource CancellationTokenSource
|
||||
{
|
||||
get;
|
||||
internal CancellationTokenSource CancellationTokenSource
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,39 @@ namespace Telerik.UI.Automation.Peers
|
|||
/// </summary>
|
||||
public class MapShapeAutomationPeer : AutomationPeer, ISelectionItemProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="MapShapeAutomationPeer"/> class.
|
||||
/// </summary>
|
||||
/// <param name="layerPeer">The parent shape layer.</param>
|
||||
/// <param name="shapeModel">The underlying shape model.</param>
|
||||
public MapShapeAutomationPeer(MapShapeLayerAutomationPeer layerPeer, IMapShape shapeModel) : base()
|
||||
{
|
||||
this.LayerPeer = layerPeer;
|
||||
this.ShapeModel = shapeModel;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this shape is selected.
|
||||
/// </summary>
|
||||
public bool IsSelected
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.LayerPeer.SelectionBehavior.SelectedShapes.ToList().Contains(this.ShapeModel);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the parent ISelectionProvider performing the selection.
|
||||
/// </summary>
|
||||
public IRawElementProviderSimple SelectionContainer
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.ProviderFromPeer(this.LayerPeer);
|
||||
}
|
||||
}
|
||||
|
||||
private MapShapeLayerAutomationPeer LayerPeer
|
||||
{
|
||||
get;
|
||||
|
@ -25,40 +58,7 @@ namespace Telerik.UI.Automation.Peers
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the MapShapeLayerAutomationPeer class.
|
||||
/// </summary>
|
||||
/// <param name="layerPeer">The parent shape layer.</param>
|
||||
/// <param name="shapeModel">The underlying shape model.</param>
|
||||
public MapShapeAutomationPeer(MapShapeLayerAutomationPeer layerPeer, IMapShape shapeModel) : base()
|
||||
{
|
||||
this.LayerPeer = layerPeer;
|
||||
this.ShapeModel = shapeModel;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a value indicating wheather this shape is selected.
|
||||
/// </summary>
|
||||
public bool IsSelected
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.LayerPeer.SelectionBehavior.SelectedShapes.ToList().Contains(this.ShapeModel);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The parent ISelectionProvider performing the selection.
|
||||
/// </summary>
|
||||
public IRawElementProviderSimple SelectionContainer
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.ProviderFromPeer(this.LayerPeer);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Selets the shape.
|
||||
/// Selects the shape.
|
||||
/// </summary>
|
||||
public void AddToSelection()
|
||||
{
|
||||
|
@ -92,8 +92,8 @@ namespace Telerik.UI.Automation.Peers
|
|||
}
|
||||
}
|
||||
}
|
||||
/// <inheritdoc/>
|
||||
|
||||
/// <inheritdoc/>
|
||||
protected override string GetLocalizedControlTypeCore()
|
||||
{
|
||||
return "map shape";
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Telerik.Geospatial;
|
||||
using Telerik.UI.Xaml.Controls.Map;
|
||||
using Windows.UI.Xaml.Automation.Peers;
|
||||
using Windows.UI.Xaml.Automation.Provider;
|
||||
using Telerik.Geospatial;
|
||||
|
||||
namespace Telerik.UI.Automation.Peers
|
||||
{
|
||||
|
@ -13,11 +13,6 @@ namespace Telerik.UI.Automation.Peers
|
|||
public class MapShapeLayerAutomationPeer : RadControlAutomationPeer, ISelectionProvider
|
||||
{
|
||||
private Dictionary<string, MapShapeAutomationPeer> childrenCache;
|
||||
internal MapShapeLayer LayerOwner
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="MapShapeLayerAutomationPeer"/> class.
|
||||
|
@ -28,7 +23,7 @@ namespace Telerik.UI.Automation.Peers
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Indicates whether multiple selection is possible in the layer.
|
||||
/// Gets a value indicating whether multiple selection is possible in the layer.
|
||||
/// </summary>
|
||||
public bool CanSelectMultiple
|
||||
{
|
||||
|
@ -44,7 +39,7 @@ namespace Telerik.UI.Automation.Peers
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Indicates whether selection is required in the layer.
|
||||
/// Gets a value indicating whether selection is required in the layer.
|
||||
/// </summary>
|
||||
public bool IsSelectionRequired
|
||||
{
|
||||
|
@ -54,27 +49,10 @@ namespace Telerik.UI.Automation.Peers
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// List of the selected peers' providers.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public IRawElementProviderSimple[] GetSelection()
|
||||
internal MapShapeLayer LayerOwner
|
||||
{
|
||||
List<IRawElementProviderSimple> samples = new List<IRawElementProviderSimple>();
|
||||
foreach (MapShapeAutomationPeer peer in this.childrenCache.Values)
|
||||
{
|
||||
if (peer.IsSelected == true)
|
||||
{
|
||||
samples.Add(ProviderFromPeer(peer));
|
||||
}
|
||||
}
|
||||
return samples.ToArray();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override string GetLocalizedControlTypeCore()
|
||||
{
|
||||
return "map shape layer";
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
internal MapShapeSelectionBehavior SelectionBehavior
|
||||
|
@ -90,14 +68,35 @@ namespace Telerik.UI.Automation.Peers
|
|||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// List of the selected peers' providers.
|
||||
/// </summary>
|
||||
public IRawElementProviderSimple[] GetSelection()
|
||||
{
|
||||
List<IRawElementProviderSimple> samples = new List<IRawElementProviderSimple>();
|
||||
foreach (MapShapeAutomationPeer peer in this.childrenCache.Values)
|
||||
{
|
||||
if (peer.IsSelected == true)
|
||||
{
|
||||
samples.Add(this.ProviderFromPeer(peer));
|
||||
}
|
||||
}
|
||||
return samples.ToArray();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override string GetLocalizedControlTypeCore()
|
||||
{
|
||||
return "map shape layer";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the list of child peers.
|
||||
/// Currently runtime changes of shapes is not supported.
|
||||
/// For example removing 3 shapes re-adding 3 new shapes will not recreate the child peers.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected override IList<AutomationPeer> GetChildrenCore()
|
||||
{
|
||||
if (this.childrenCache == null || this.childrenCache.Count != this.LayerOwner.ShapeModels.Count)
|
||||
|
|
|
@ -9,6 +9,13 @@ namespace Telerik.UI.Automation.Peers
|
|||
/// </summary>
|
||||
public class RadMapAutomationPeer : RadControlAutomationPeer
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="RadMapAutomationPeer"/> class.
|
||||
/// </summary>
|
||||
public RadMapAutomationPeer(RadMap owner) : base(owner)
|
||||
{
|
||||
}
|
||||
|
||||
internal RadMap MapOwner
|
||||
{
|
||||
get
|
||||
|
@ -17,14 +24,6 @@ namespace Telerik.UI.Automation.Peers
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="RadMapAutomationPeer"/> class.
|
||||
/// </summary>
|
||||
public RadMapAutomationPeer(RadMap owner) : base(owner)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override string GetLocalizedControlTypeCore()
|
||||
{
|
||||
|
@ -52,5 +51,3 @@ namespace Telerik.UI.Automation.Peers
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -124,7 +124,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// manipulate all of them.
|
||||
/// </remarks>
|
||||
/// <param name="location">The location.</param>
|
||||
/// <returns></returns>
|
||||
protected internal virtual IEnumerable<IMapShape> HitTest(Point location)
|
||||
{
|
||||
yield return this.map.HitTest(location);
|
||||
|
@ -133,7 +132,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.PointerEntered"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnPointerEntered(PointerRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -141,7 +139,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.PointerMoved"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnPointerMoved(PointerRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -149,7 +146,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.PointerExited"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnPointerExited(PointerRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -157,7 +153,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.PointerPressed"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnPointerPressed(PointerRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -165,7 +160,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.HoldCompleted"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnHoldCompleted(HoldingRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -173,7 +167,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.HoldStarted"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnHoldStarted(HoldingRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -181,7 +174,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.Tapped"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnTapped(TappedRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -189,7 +181,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.DoubleTapped"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnDoubleTapped(DoubleTappedRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -197,7 +188,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.ManipulationStarted"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnManipulationStarted(ManipulationStartedRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -205,7 +195,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.ManipulationDelta"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnManipulationDelta(ManipulationDeltaRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -213,7 +202,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.ManipulationCompleted"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnManipulationCompleted(ManipulationCompletedRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -221,7 +209,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.PointerWheelChanged"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnPointerWheelChanged(PointerRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
@ -229,7 +216,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.PointerReleased"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal virtual void OnPointerReleased(PointerRoutedEventArgs args)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -44,7 +44,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Initiates a hit test on the specified <see cref="Windows.Foundation.Point(double, double)" /> location.
|
||||
/// </summary>
|
||||
/// <param name="location">The location.</param>
|
||||
/// <returns></returns>
|
||||
/// <remarks>
|
||||
/// The default <see cref="MapBehavior" /> logic returns only the top-most <see cref="D2DShape" /> from the <see cref="MapShapeLayer" /> that matches the specific behavior requirements;
|
||||
/// you can override the default logic and return multiple <see cref="D2DShape" /> instances (e.g. from layers that overlay one another) and the specific <see cref="MapBehavior" /> will
|
||||
|
|
|
@ -199,7 +199,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.ManipulationStarted" /> event of the owning <see cref="RadMap" /> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal override void OnManipulationStarted(ManipulationStartedRoutedEventArgs args)
|
||||
{
|
||||
base.OnManipulationStarted(args);
|
||||
|
@ -210,7 +209,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.ManipulationCompleted" /> event of the owning <see cref="RadMap" /> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal override void OnManipulationCompleted(ManipulationCompletedRoutedEventArgs args)
|
||||
{
|
||||
base.OnManipulationCompleted(args);
|
||||
|
@ -222,7 +220,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Processes the Scale and Translation properties of the Delta manipulation.
|
||||
/// The event is handled if the owning map is not in "Hold" state.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal override void OnManipulationDelta(ManipulationDeltaRoutedEventArgs args)
|
||||
{
|
||||
base.OnManipulationDelta(args);
|
||||
|
@ -258,7 +255,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.PointerWheelChanged"/> event of the owning <see cref="RadMap"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal override void OnPointerWheelChanged(PointerRoutedEventArgs args)
|
||||
{
|
||||
base.OnPointerWheelChanged(args);
|
||||
|
|
|
@ -111,6 +111,43 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
this.ClearSelectedModelsAndUpdateUIState();
|
||||
}
|
||||
|
||||
internal void PerformSelection(D2DShape shape)
|
||||
{
|
||||
MapShapeModel model = shape.Model as MapShapeModel;
|
||||
if (model == null)
|
||||
{
|
||||
Debug.Assert(false, "Must have a model associated with each UI shape");
|
||||
return;
|
||||
}
|
||||
|
||||
var context = new SelectionChangeContext()
|
||||
{
|
||||
Layer = this.map.Layers.FindLayerById(shape.LayerId),
|
||||
Shape = shape,
|
||||
Model = model
|
||||
};
|
||||
|
||||
if (this.selectionModeCache == MapShapeSelectionMode.Single)
|
||||
{
|
||||
this.SingleSelect(context, true);
|
||||
}
|
||||
else if (this.selectionModeCache == MapShapeSelectionMode.MultiSimple)
|
||||
{
|
||||
this.SingleSelect(context, false);
|
||||
}
|
||||
else if (this.selectionModeCache == MapShapeSelectionMode.MultiExtended)
|
||||
{
|
||||
this.MultiExtendedSelect(context);
|
||||
}
|
||||
|
||||
this.NotifySelectionChanged(context);
|
||||
}
|
||||
|
||||
internal void DeselectShape(MapShapeModel shapeModel)
|
||||
{
|
||||
this.selectedModels.Remove(shapeModel);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Method is internal for unit test purposes.
|
||||
/// </summary>
|
||||
|
@ -133,7 +170,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
this.PerformSelection(d2dShape);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Called when the respective <see cref="MapShapeLayer" /> is invalidated and its contents are cleared.
|
||||
/// </summary>
|
||||
|
@ -172,7 +209,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Initiates a hit test on the specified <see cref="Windows.Foundation.Point(double, double)" /> location.
|
||||
/// </summary>
|
||||
/// <param name="location">The location.</param>
|
||||
/// <returns></returns>
|
||||
/// <remarks>
|
||||
/// The default <see cref="MapBehavior" /> logic returns only the top-most <see cref="D2DShape" /> from the <see cref="MapShapeLayer" /> that matches the specific behavior requirements;
|
||||
/// you can override the default logic and return multiple <see cref="D2DShape" /> instances (e.g. from layers that overlay one another) and the specific <see cref="MapBehavior" /> will
|
||||
|
@ -204,7 +240,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.Tapped" /> event of the owning <see cref="RadMap" /> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal override void OnTapped(TappedRoutedEventArgs args)
|
||||
{
|
||||
base.OnTapped(args);
|
||||
|
@ -273,43 +308,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
}
|
||||
|
||||
internal void PerformSelection(D2DShape shape)
|
||||
{
|
||||
MapShapeModel model = shape.Model as MapShapeModel;
|
||||
if (model == null)
|
||||
{
|
||||
Debug.Assert(false, "Must have a model associated with each UI shape");
|
||||
return;
|
||||
}
|
||||
|
||||
var context = new SelectionChangeContext()
|
||||
{
|
||||
Layer = this.map.Layers.FindLayerById(shape.LayerId),
|
||||
Shape = shape,
|
||||
Model = model
|
||||
};
|
||||
|
||||
if (this.selectionModeCache == MapShapeSelectionMode.Single)
|
||||
{
|
||||
this.SingleSelect(context, true);
|
||||
}
|
||||
else if (this.selectionModeCache == MapShapeSelectionMode.MultiSimple)
|
||||
{
|
||||
this.SingleSelect(context, false);
|
||||
}
|
||||
else if (this.selectionModeCache == MapShapeSelectionMode.MultiExtended)
|
||||
{
|
||||
this.MultiExtendedSelect(context);
|
||||
}
|
||||
|
||||
this.NotifySelectionChanged(context);
|
||||
}
|
||||
|
||||
internal void DeselectShape(MapShapeModel shapeModel)
|
||||
{
|
||||
this.selectedModels.Remove(shapeModel);
|
||||
}
|
||||
|
||||
private static void OnSelectionModePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
var behavior = d as MapShapeSelectionBehavior;
|
||||
|
|
|
@ -87,8 +87,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Gets the <see cref="DataTemplate"/> instance associated with the specified <see cref="DependencyObject"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="instance"></param>
|
||||
/// <returns></returns>
|
||||
public static DataTemplate GetContentTemplate(DependencyObject instance)
|
||||
{
|
||||
if (instance == null)
|
||||
|
@ -102,8 +100,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Sets the provided <see cref="DataTemplate"/> instance to the the specified <see cref="DependencyObject"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="instance"></param>
|
||||
/// <param name="template"></param>
|
||||
public static void SetContentTemplate(DependencyObject instance, DataTemplate template)
|
||||
{
|
||||
if (instance == null)
|
||||
|
@ -209,7 +205,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Initiates a hit test on the specified <see cref="Windows.Foundation.Point(double, double)" /> location.
|
||||
/// </summary>
|
||||
/// <param name="location">The location.</param>
|
||||
/// <returns></returns>
|
||||
/// <remarks>
|
||||
/// The default <see cref="MapBehavior" /> logic returns only the top-most <see cref="D2DShape" /> from the <see cref="MapShapeLayer" /> that matches the specific behavior requirements;
|
||||
/// you can override the default logic and return multiple <see cref="D2DShape" /> instances (e.g. from layers that overlay one another) and the specific <see cref="MapBehavior" /> will
|
||||
|
@ -257,7 +252,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Handles the <see cref="E:RadMap.Tapped" /> event of the owning <see cref="RadMap" /> instance.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
protected internal override void OnTapped(TappedRoutedEventArgs args)
|
||||
{
|
||||
base.OnTapped(args);
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
</Recognized>
|
||||
<Recognized>
|
||||
<Word>shapefile</Word>
|
||||
</Recognized>
|
||||
<Recognized>
|
||||
<Word>dbf</Word>
|
||||
</Recognized>
|
||||
</Words>
|
||||
</Dictionary>
|
|
@ -32,105 +32,105 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
public interface ISpatialReference
|
||||
{
|
||||
/// <summary>
|
||||
/// The measurement units used to define the angles of a spheroid or ellipse associated with a specific datum.
|
||||
/// Gets or sets the measurement units used to define the angles of a spheroid or ellipse associated with a specific datum.
|
||||
/// The datum is usually WGS (World Geodetic System) 1984 and the unit of measurement is a degree.
|
||||
/// </summary>
|
||||
double AngularUnitOfMeasurement { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The authority body that defines the standards for the spatial reference parameters.
|
||||
/// Gets or sets the authority body that defines the standards for the spatial reference parameters.
|
||||
/// Spatial Reference is usually WGS 1984 and the authority is EPSG:4326.
|
||||
/// </summary>
|
||||
string Authority { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The line of longitude at the center of a map projection generally used as the basis for constructing the projection.
|
||||
/// Gets or sets the line of longitude at the center of a map projection generally used as the basis for constructing the projection.
|
||||
/// </summary>
|
||||
double CentralMeridian { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// This indicates the horizontal datum,
|
||||
/// Gets or sets the horizontal datum,
|
||||
/// which corresponds to the procedure used to measure positions on the surface of the Earth.
|
||||
/// </summary>
|
||||
string Datum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// This indicates the horizontal datum,
|
||||
/// Gets or sets the horizontal datum,
|
||||
/// which corresponds to the procedure used to measure positions on the surface of the Earth.
|
||||
/// </summary>
|
||||
string DatumAuthority { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The value added to all "x" values in the rectangular coordinate for a map projection.
|
||||
/// Gets or sets the value added to all "x" values in the rectangular coordinate for a map projection.
|
||||
/// This value frequently is assigned to eliminate negative numbers.
|
||||
/// Expressed in the unit of measure identified in Planar Coordinate Units.
|
||||
/// </summary>
|
||||
double FalseEasting { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The value added to all "y" values in the rectangular coordinates for a map projection.
|
||||
/// Gets or sets the value added to all "y" values in the rectangular coordinates for a map projection.
|
||||
/// This value frequently is assigned to eliminate negative numbers.
|
||||
/// Expressed in the unit of measure identified in Planar Coordinate Units.
|
||||
/// </summary>
|
||||
double FalseNorthing { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A coordinate system based on latitude and longitude. Some geographic coordinate systems are Latitude/Longitude,
|
||||
/// Gets or sets a coordinate system based on latitude and longitude. Some geographic coordinate systems are Latitude/Longitude,
|
||||
/// and some are Longitude/Latitude. You can find out which this is by examining the axes.
|
||||
/// You should also check the angular units, since not all geographic coordinate systems use degrees.
|
||||
/// </summary>
|
||||
string GeoGcs { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The latitude chosen as the origin of rectangular coordinate for a map projection.
|
||||
/// Gets or sets the latitude chosen as the origin of rectangular coordinate for a map projection.
|
||||
/// </summary>
|
||||
double LatitudeOfOrigin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// This defines the meridian used to take longitude measurements from.
|
||||
/// Gets or sets the meridian used to take longitude measurements from.
|
||||
/// The units of the longitude must be inferred from the context.
|
||||
/// </summary>
|
||||
double Primem { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// This defines the meridian used to take longitude measurements from.
|
||||
/// Gets or sets the meridian used to take longitude measurements from.
|
||||
/// The units of the longitude must be inferred from the context.
|
||||
/// </summary>
|
||||
string PrimemAuthority { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// This describes a projection from geographic coordinates to projected coordinates.
|
||||
/// Gets or sets a projection from geographic coordinates to projected coordinates.
|
||||
/// </summary>
|
||||
string ProjectionAuthority { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// This describes a spheroid, which is an approximation of the Earth's surface as a squashed sphere.
|
||||
/// Gets or sets a spheroid, which is an approximation of the Earth's surface as a squashed sphere.
|
||||
/// </summary>
|
||||
double SpheroidRadius { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// This describes a spheroid, which is an approximation of the Earth's surface as a squashed sphere.
|
||||
/// Gets or sets a spheroid, which is an approximation of the Earth's surface as a squashed sphere.
|
||||
/// </summary>
|
||||
double SpheroidFlattening { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// This describes a spheroid, which is an approximation of the Earth's surface as a squashed sphere.
|
||||
/// Gets or sets a spheroid, which is an approximation of the Earth's surface as a squashed sphere.
|
||||
/// </summary>
|
||||
string SpheroidAuthority { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The line of constant latitude at which the surface of the Earth and the plane or developable surface intersect.
|
||||
/// Gets or sets the line of constant latitude at which the surface of the Earth and the plane or developable surface intersect.
|
||||
/// </summary>
|
||||
double StandardParallel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The authority body that defines the unit of measurement i.e. European Petroleum Survey Group (EPSG).
|
||||
/// Gets or sets the authority body that defines the unit of measurement i.e. European Petroleum Survey Group (EPSG).
|
||||
/// The unit of measurement is usually degrees and the authority for the datum the map uses, WGS 1984 is EPSG:4326.
|
||||
/// </summary>
|
||||
string UnitAuthority { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The minimum Latitude this tile source supports.
|
||||
/// Gets or sets the minimum Latitude this tile source supports.
|
||||
/// </summary>
|
||||
double MinLatitude
|
||||
{
|
||||
|
@ -139,7 +139,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The maximum Latitude this tile source supports.
|
||||
/// Gets or sets the maximum Latitude this tile source supports.
|
||||
/// </summary>
|
||||
double MaxLatitude
|
||||
{
|
||||
|
@ -148,7 +148,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The minimum Longitude this tile source supports.
|
||||
/// Gets or sets the minimum Longitude this tile source supports.
|
||||
/// </summary>
|
||||
double MinLongitude
|
||||
{
|
||||
|
@ -157,7 +157,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The maximum Longitude this tile source supports.
|
||||
/// Gets or sets the maximum Longitude this tile source supports.
|
||||
/// </summary>
|
||||
double MaxLongitude
|
||||
{
|
||||
|
|
|
@ -13,7 +13,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Loads the <see cref="StorageFile"/> containing the Map Shapes definition.
|
||||
/// </summary>
|
||||
/// <param name="uri">The <see cref="Uri"/> pointing to the file location.</param>
|
||||
/// <returns></returns>
|
||||
Task<StorageFile> GetStorageFile(Uri uri);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -116,8 +116,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Gets the <see cref="ColorRange"/> instance where the specified shape falls.
|
||||
/// </summary>
|
||||
/// <param name="shape"></param>
|
||||
/// <returns></returns>
|
||||
public ColorRange GetRangeForShape(IMapShape shape)
|
||||
{
|
||||
if (shape == null)
|
||||
|
@ -138,7 +136,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Gets the <see cref="D2DShapeStyle" /> instance that defines the appearance of the specified <see cref="IMapShape" /> instance.
|
||||
/// </summary>
|
||||
/// <param name="shape">The <see cref="IMapShape" /> instance for which the style is to be retrieved.</param>
|
||||
/// <returns></returns>
|
||||
protected internal override D2DShapeStyle GetShapeStyle(IMapShape shape)
|
||||
{
|
||||
var range = this.GetRangeForShape(shape);
|
||||
|
@ -154,7 +151,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Gets the <see cref="ColorRange"/> instance at the specified index.
|
||||
/// </summary>
|
||||
/// <param name="rangeIndex">The zero-based index of the range.</param>
|
||||
/// <returns></returns>
|
||||
protected ColorRange GetRangeAt(int rangeIndex)
|
||||
{
|
||||
if (rangeIndex < 0 || rangeIndex >= this.ranges.Count)
|
||||
|
@ -168,15 +164,12 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Gets the count of the ranges that will be generated.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
|
||||
protected abstract int GetRangeCount();
|
||||
|
||||
/// <summary>
|
||||
/// Provides the core logic behind range generation. Allows inheritors to provide custom range generation routine.
|
||||
/// </summary>
|
||||
/// <param name="shapes"></param>
|
||||
/// <returns></returns>
|
||||
protected virtual IEnumerable<ColorRange> BuildRanges(IEnumerable<IMapShape> shapes)
|
||||
{
|
||||
int rangeCount = this.GetRangeCount();
|
||||
|
@ -195,8 +188,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Gets the <see cref="ColorRange"/> instance where the specified value falls.
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
protected virtual ColorRange GetRangeForValue(double value)
|
||||
{
|
||||
if (value == double.NegativeInfinity || this.distribution == null)
|
||||
|
@ -231,7 +222,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Implements the core logic behind the Initialize routine.
|
||||
/// </summary>
|
||||
/// <param name="shapes">The set of shapes to initialize from.</param>
|
||||
/// <returns></returns>
|
||||
protected override bool InitializeOverride(IEnumerable<IMapShape> shapes)
|
||||
{
|
||||
if (string.IsNullOrEmpty(this.attributeNameCache))
|
||||
|
@ -272,7 +262,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Sets the <see cref="D2DBrush"/> instance that defines the fill for each shape falling within the range.
|
||||
/// </summary>
|
||||
/// <param name="range"></param>
|
||||
protected virtual void SetFillForRange(ColorRange range)
|
||||
{
|
||||
}
|
||||
|
@ -280,8 +269,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Provides an extension point for inheritors to perform additional logic when a <see cref="IMapShape"/> is associated with a valid <see cref="ColorRange"/>.
|
||||
/// </summary>
|
||||
/// <param name="shape"></param>
|
||||
/// <param name="range"></param>
|
||||
protected virtual void OnShapeAssociated(IMapShape shape, ColorRange range)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The zero-based index of the range in its owning <see cref="ChoroplethColorizer"/> instance.
|
||||
/// Gets the zero-based index of the range in its owning <see cref="ChoroplethColorizer"/> instance.
|
||||
/// </summary>
|
||||
public int Index
|
||||
{
|
||||
|
|
|
@ -117,7 +117,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Gets the count of the ranges that will be generated.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected override int GetRangeCount()
|
||||
{
|
||||
return this.rangeCountCache;
|
||||
|
@ -126,7 +125,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Sets the <see cref="D2DBrush" /> instance that defines the fill for each shape falling within the range.
|
||||
/// </summary>
|
||||
/// <param name="range"></param>
|
||||
protected override void SetFillForRange(ColorRange range)
|
||||
{
|
||||
if (range == null)
|
||||
|
|
|
@ -55,7 +55,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Gets the <see cref="D2DShapeStyle"/> instance that defines the appearance of the specified <see cref="IMapShape"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="shape">The <see cref="IMapShape"/> instance for which the style is to be retrieved.</param>
|
||||
/// <returns></returns>
|
||||
protected internal abstract D2DShapeStyle GetShapeStyle(IMapShape shape);
|
||||
|
||||
/// <summary>
|
||||
|
@ -66,8 +65,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Provides an extension methods to inheritors to perform the core initialization logic given a set of shapes.
|
||||
/// </summary>
|
||||
/// <param name="shapes"></param>
|
||||
/// <returns></returns>
|
||||
protected abstract bool InitializeOverride(IEnumerable<IMapShape> shapes);
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -73,8 +73,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Provides the core logic behind range generation. Allows inheritors to provide custom range generation routine.
|
||||
/// </summary>
|
||||
/// <param name="shapes"></param>
|
||||
/// <returns></returns>
|
||||
protected override IEnumerable<ColorRange> BuildRanges(IEnumerable<IMapShape> shapes)
|
||||
{
|
||||
if (this.rangeStops.Count == 0)
|
||||
|
@ -107,7 +105,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Gets the count of the ranges that will be generated.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected override int GetRangeCount()
|
||||
{
|
||||
int rangeCount = this.rangeStops.Count;
|
||||
|
@ -122,7 +119,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Sets the <see cref="D2DBrush" /> instance that defines the fill for each shape falling within the range.
|
||||
/// </summary>
|
||||
/// <param name="range"></param>
|
||||
protected override void SetFillForRange(ColorRange range)
|
||||
{
|
||||
if (range == null)
|
||||
|
@ -141,8 +137,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Gets the <see cref="ColorRange" /> instance where the specified value falls.
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
protected override ColorRange GetRangeForValue(double value)
|
||||
{
|
||||
if (this.rangeStops.Count == 0)
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
public interface IMapDataItem
|
||||
{
|
||||
/// <summary>
|
||||
/// The geographic location where the item needs to be displayed.
|
||||
/// Gets the geographic location where the item needs to be displayed.
|
||||
/// </summary>
|
||||
Location Location
|
||||
{
|
||||
|
@ -17,7 +17,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The minimum of the zoom range in which the item is visible.
|
||||
/// Gets the minimum of the zoom range in which the item is visible.
|
||||
/// </summary>
|
||||
double MinZoom
|
||||
{
|
||||
|
@ -25,7 +25,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The maximum of the zoom range in which the item is visible.
|
||||
/// Gets the maximum of the zoom range in which the item is visible.
|
||||
/// </summary>
|
||||
double MaxZoom
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Defines how the visual representation of the data item is aligned with the physical coordinates of the <see cref="Location"/> property.
|
||||
/// Gets how the visual representation of the data item is aligned with the physical coordinates of the <see cref="Location"/> property.
|
||||
/// A value of (0.5, 0.5) will center the visual representation over the geographic location.
|
||||
/// </summary>
|
||||
Point LocationOrigin
|
||||
|
|
|
@ -29,7 +29,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shapefile Layers expose an ID property for logical separation of all the shapes that reside within one D2DCanvas instance.
|
||||
/// Gets an ID property for logical separation of all the shapes that reside within one D2DCanvas instance.
|
||||
/// </summary>
|
||||
internal virtual int Id
|
||||
{
|
||||
|
|
|
@ -17,8 +17,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Retrieves the <see cref="MapLayer"/> instance from the specified Id.
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public MapLayer FindLayerById(int id)
|
||||
{
|
||||
foreach (var layer in this)
|
||||
|
@ -47,7 +45,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Removes the element at the specified index of the collection.
|
||||
/// </summary>
|
||||
/// <param name="index"></param>
|
||||
protected override void RemoveItem(int index)
|
||||
{
|
||||
MapLayer presenter = this[index];
|
||||
|
|
|
@ -12,8 +12,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Applies the custom layout logic given the provided layout context and layer.
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <param name="container"></param>
|
||||
public void Process(MapShapeLabelLayoutContext context, MapShapeLayer container)
|
||||
{
|
||||
this.ProcessCore(context, container);
|
||||
|
@ -22,8 +20,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Performs the core logic behind the <see cref="Process"/> routine.
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <param name="container"></param>
|
||||
protected virtual void ProcessCore(MapShapeLabelLayoutContext context, MapShapeLayer container)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -357,7 +357,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Exposed for testing purposes, do not use outside the test project.
|
||||
/// Gets a list of the <see cref="D2DShape"/> shape visuals - exposed for testing purposes, do not use outside the test project.
|
||||
/// </summary>
|
||||
internal List<D2DShape> ShapeVisuals
|
||||
{
|
||||
|
@ -555,7 +555,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
}
|
||||
|
||||
///<inheritdoc />
|
||||
/// <inheritdoc/>
|
||||
protected override AutomationPeer OnCreateAutomationPeer()
|
||||
{
|
||||
return new MapShapeLayerAutomationPeer(this);
|
||||
|
|
|
@ -23,8 +23,6 @@
|
|||
/// <summary>
|
||||
/// Provides the core implementation of the <see cref="M:SelectStyle"/> method.
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <param name="container"></param>
|
||||
protected virtual void SelectStyleCore(MapShapeStyleContext context, MapShapeLayer container)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -335,7 +335,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Called when the Framework <see cref="M:OnApplyTemplate" /> is called. Inheritors should override this method should they have some custom template-related logic.
|
||||
/// This is done to ensure that the <see cref="P:IsTemplateApplied" /> property is properly initialized.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected override bool ApplyTemplateCore()
|
||||
{
|
||||
bool applied = base.ApplyTemplateCore();
|
||||
|
|
|
@ -17,7 +17,6 @@ Implement the ITransportResolver interface and assign it to the ShapefileDataSou
|
|||
/// Loads the <see cref="StorageFile" /> containing the Map Shapes definition.
|
||||
/// </summary>
|
||||
/// <param name="uri">The <see cref="Uri" /> pointing to the file location.</param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="System.NotSupportedException">The NotSupportedException in case the Uri does not start with 'ms-appx' or 'ms-appdata'.</exception>
|
||||
[SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1650:ElementDocumentationMustBeSpelledCorrectly", Justification = "Reviewed.")]
|
||||
public async Task<StorageFile> GetStorageFile(Uri uri)
|
||||
|
|
|
@ -300,7 +300,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <param name="location">The location.</param>
|
||||
/// <param name="shapeLayer">The <see cref="MapShapeLayer"/> instance whose shapes to hit test.
|
||||
/// Default value is null i.e. hit testing is performed on all layers (starting from the top-most one) and the first positive match is returned.</param>
|
||||
/// <returns></returns>
|
||||
public IMapShape HitTest(Point location, MapShapeLayer shapeLayer = null)
|
||||
{
|
||||
int layerZIndex = -1;
|
||||
|
@ -321,7 +320,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Sets the provided <see cref="LocationRect"/> value as the current view of the map.
|
||||
/// </summary>
|
||||
/// <param name="boundingRect"></param>
|
||||
public void SetView(LocationRect boundingRect)
|
||||
{
|
||||
boundingRect = this.CoerceLocationRect(boundingRect);
|
||||
|
@ -387,7 +385,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Converts the specified physical point to its geographic equivalent. The provided physical point is relative to the map's TopLeft position.
|
||||
/// </summary>
|
||||
/// <param name="point">The physical point (typically associated with a Pointer contact).</param>
|
||||
/// <returns></returns>
|
||||
public Location ConvertPhysicalToGeographicCoordinate(DoublePoint point)
|
||||
{
|
||||
if (!this.IsTemplateApplied)
|
||||
|
@ -404,7 +401,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Converts the specified geographic location to its physical equivalent.
|
||||
/// </summary>
|
||||
/// <param name="location">The geographic location.</param>
|
||||
/// <returns></returns>
|
||||
public DoublePoint ConvertGeographicToPhysicalCoordinate(Location location)
|
||||
{
|
||||
var logicalPoint = this.SpatialReference.ConvertGeographicToLogicalCoordinate(location);
|
||||
|
@ -516,7 +512,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// Called when the Framework <see cref="M:OnApplyTemplate" /> is called. Inheritors should override this method should they have some custom template-related logic.
|
||||
/// This is done to ensure that the <see cref="P:IsTemplateApplied" /> property is properly initialized.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected override bool ApplyTemplateCore()
|
||||
{
|
||||
bool applied = base.ApplyTemplateCore();
|
||||
|
@ -568,7 +563,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Unapplies the current control template. Occurs when a template has already been applied and a new one is applied.
|
||||
/// Do no apply the current control template. Occurs when a template has already been applied and a new one is applied.
|
||||
/// </summary>
|
||||
protected override void UnapplyTemplateCore()
|
||||
{
|
||||
|
@ -845,7 +840,6 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
/// <summary>
|
||||
/// Calculates the geo bounds.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private LocationRect CalculateGeoBounds()
|
||||
{
|
||||
DoublePoint topLeft = this.ConvertPixelToLogicalCoordinate(new DoublePoint() { X = 0, Y = 0 });
|
||||
|
|
|
@ -247,7 +247,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The minimum Latitude this tile source supports.
|
||||
/// Gets or sets the minimum Latitude this tile source supports.
|
||||
/// </summary>
|
||||
public double MinLatitude
|
||||
{
|
||||
|
@ -256,7 +256,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The maximum Latitude this tile source supports.
|
||||
/// Gets or sets the maximum Latitude this tile source supports.
|
||||
/// </summary>
|
||||
public double MaxLatitude
|
||||
{
|
||||
|
@ -265,7 +265,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The minimum Longitude this tile source supports.
|
||||
/// Gets or sets the minimum Longitude this tile source supports.
|
||||
/// </summary>
|
||||
public double MinLongitude
|
||||
{
|
||||
|
@ -274,7 +274,7 @@ namespace Telerik.UI.Xaml.Controls.Map
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The maximum Longitude this tile source supports.
|
||||
/// Gets or sets the maximum Longitude this tile source supports.
|
||||
/// </summary>
|
||||
public double MaxLongitude
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче