#1
得分:
0
回复于:
2012-05-10 18:57:24
如果知道经纬度可以通过了解他的投影方式来计算,
你如果通过象素来计算那真
是剑走偏峰了。
这是
web
墨卡托坐标系下的经纬度转平面坐标,
直接做加减就是近似距离
(纬度
越高越不准)
//
经纬度转
web
墨卡托
MapPoint lonLat2Mercator(MapPoint lonLat)
{
MapPoint mercator = new MapPoint();
double x = lonLat.X * 20037508.34 / 180;
double y = Math.Log(Math.Tan((90 + lonLat.Y) * Math.PI / 360)) / (
Math.PI / 180);
y = y * 20037508.34 / 180;
mercator.X = x;
mercator.Y = y;
return mercator;
}
//web
墨卡托转经纬度
MapPoint Mercator2lonLat(MapPoint mercator)
{
MapPoint lonLat = new MapPoint();
double x = mercator.X / 20037508.34 * 180;
double y = mercator.Y / 20037508.34 * 180;
y = 180 / Math.PI * (2 * Math.Atan(Math.Exp(y * Math.PI / 180)) -
Math.PI / 2);
lonLat.X = x;
lonLat.Y = y;
return lonLat;
}