1234567891011121314151617181920212223242526272829303132333435363738 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Drawing;
- namespace FastReport.Map
- {
- internal static class CoordinateConverter
- {
- private const double MaxLat = 85.0511287798066;
- public static float GetX(double x, double minX, float scale)
- {
- return (float)((x - minX) * scale);
- }
- public static float GetY(double y, double maxY, float scale, bool mercator)
- {
- if (mercator)
- {
- y = ConvertMercator(y);
- maxY = ConvertMercator(maxY);
- }
- return (float)(-(y - maxY) * scale);
- }
- public static double ConvertMercator(double value)
- {
- if (value > MaxLat)
- value = MaxLat;
- else if (value < -MaxLat)
- value = -MaxLat;
- double sinLat = Math.Sin((Math.PI / 180) * value);
- return (90 / Math.PI) * Math.Log((1 + sinLat) / (1 - sinLat));
- }
- }
- }
|