// WPF MapControl - http://wpfmapcontrol.codeplex.com/ // Copyright © 2012 Clemens Fischer // Licensed under the Microsoft Public License (Ms-PL) using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Media; namespace MapControl { /// /// Defines a normal cylindrical projection. Latitude and longitude values in degrees /// are transformed to cartesian coordinates with origin at latitude = 0 and longitude = 0. /// Longitude values are transformed identically to x values in the interval [-180 .. 180]. /// public abstract class MapTransform { /// /// Gets the absolute value of the minimum and maximum latitude that can be transformed. /// public abstract double MaxLatitude { get; } /// /// Gets the scale factor of the map projection at the specified geographic location /// relative to the scale at latitude zero. /// public abstract double RelativeScale(Location location); /// /// Transforms a geographic location to a cartesian coordinate point. /// public abstract Point Transform(Location location); /// /// Transforms a cartesian coordinate point to a geographic location. /// public abstract Location TransformBack(Point point); /// /// Transforms a collection of geographic locations to a collection of cartesian coordinate points. /// public PointCollection Transform(IEnumerable locations) { return new PointCollection(locations.Select(l => Transform(l))); } /// /// Transforms a collection of cartesian coordinate points to a collections of geographic location. /// public LocationCollection TransformBack(IEnumerable points) { return new LocationCollection(points.Select(p => TransformBack(p))); } } }