您的位置:首页 > 编程语言 > C#

C#.net 地图控件开发 (一) 控件坐标与地图坐标

2013-04-10 15:21 417 查看
1. 控件坐标与地图坐标的转换

控件坐标是以左上角为基准点(原点0,0),往右为X轴正方向,往下为Y轴正方向的。而地图坐标则是以左下角为基准点,往右为X轴正方向,往上为Y轴正方向,并且可以通过平移缩放等功能,将基准点移到任意点上。这里需要使用坐标的转换来完成控件坐标到地图坐标的转换关系。

已知控件的高度(CtlHeight)和地图的基准点坐标(CorX,CorY),地图当前比例尺(MapScale),就可以完成坐标的转换关系,如下

///<summary>
///坐标转换,从控件坐标到地图坐标
///</summary>
///<param name="point"></param>
///<returns></returns>
public
PointClass ToMapPoint(Point point)
{
PointClass result =newPointClass ();
result.X = point.X * MapScale + CorX;
result.Y = (CtlHeight - point.Y) * MapScale + CorY;
return result;
}
///<summary>
///坐标转换,从地图坐标到控件坐标
///</summary>
///<param name="point"></param>
///<returns></returns>
public
Point FromMapPoint(PointClass point)
{
Point result =
new Point();
result.X = (int)((point.X - CorX) / MapScale);
result.Y = CtlHeight - (int)((point.Y - CorY) / MapScale);
return result;
}

地图坐标点类:

namespace GIS.HJ.Geometry
{
///<summary>
///地图坐标
///</summary>
public
class PointClass:GeometryClass
{
///<summary>
///默认构造函数
///</summary>
public Point()
{
base.GeometryType = GeometryType.Point;

}
///<summary>
///带初始化参数的构造函数
///</summary>
///<param name="x"></param>
///<param name="y"></param>
public Point(double x,double y)
{
X = x;
Y = y;
}
///<summary>
/// X坐标
///</summary>
public
double X { get; set; }
///<summary>
/// Y坐标
///</summary>
public
double Y { get; set; }
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: