打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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; }

    }

}

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
GlobeControl 获得Geographic 坐标
在做动态获取控件时,时常需要根据Id得到控件,并对该控件进行操作,此时用 /// <summary> /// 根据控件id得到控件 /// &l
基于DeepZoom技术的Bing Maps客户端实现研究
C#获取鼠标在listview右键点击单元格的内容
TreeView与ContextMenuStrip
C# chart控件多个ChartArea
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服