分享

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

 鸿枫nh 2018-09-13

1.       控件坐标与地图坐标的转换

控件坐标是以左上角为基准点(原点00),往右为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; }

    }

}

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约