ArcEngine+C#二次开发GIS 如何获得鼠标当前指的点的经纬度信息 ? 5

利用Mapcontrol控件加载了一幅地图想在状态栏中显示鼠标移动时所指的点的经纬度位置。看书上状态栏获取位置代码如下CoordinateLabel.Text="当前坐标... 利用Mapcontrol控件加载了一幅地图 想在状态栏中显示鼠标移动时 所指的点的经纬度位置。
看书上状态栏获取位置代码如下
CoordinateLabel.Text = "当前坐标 X =" + e.mapX.ToString() + " Y = " + e.mapY.ToString() ;
但是获取的不是经纬度。求大神指导。
展开
 我来答
百度网友0d89fd6
2018-05-30 · TA获得超过140个赞
知道答主
回答量:61
采纳率:43%
帮助的人:5.4万
展开全部

你这里的代码显示的坐标是直接从地图获取的六七位的平面坐标,要转换为经纬度坐标,肯定需要坐标系的转换啊,在地图控件的点击事件中写如下代码:

private void axMapControl1_OnMouseMove(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e)
        {
            //当前比例尺
            barStaticItem1.Caption = "   1:" + ((long)axMapControl1.MapScale).ToString() + "  ";
            IProjectedCoordinateSystem pcs = this.axMapControl1.SpatialReference as IProjectedCoordinateSystem;
            //定义点
            WKSPoint pt = new WKSPoint(); //不能用IPoint pt = new PointClass();因为后面的方法只支持WKSPoint
            pt.X = e.mapX;
            pt.Y = e.mapY;
            double d1, n1, m1, L1, d2, n2, m2, L2;
            pcs.Inverse(1, ref pt); //将平面坐标转换为地理坐标                 
            d1 = pt.X / 1;//度的整数部分                 
            n1 = pt.X % 1;//度的小数部分                 
            m1 = (n1 * 60) / 1;//分                 
            L1 = ((n1 * 60) % 1) * 60;//秒                 
            d2 = pt.Y / 1;//纬度的整数部分                 
            n2 = pt.Y % 1;//度的小数部分                 
            m2 = (n2 * 60) / 1;//分  
            string m22;
            if (m2 < 10)
                m22 = "0" + m2.ToString();
            else
                m22 = m2.ToString();
            L2 = ((n2 * 60) % 1) * 60;//秒 
            try
            {
                barEditItem_X.EditValue = d1.ToString().Remove(3) + "°" + m1.ToString().Remove(2) + " '" + L1.ToString().Remove(6) + "\"" + "E ";
                barEditItem_Y.EditValue = d2.ToString().Remove(2) + "°" + m22.Remove(2) + " '" + L2.ToString().Remove(6) + "\"" + "N ";
            }
            catch (Exception)
            {

                barEditItem_X.EditValue = "0";
                barEditItem_Y.EditValue = "0";
            }
           
        }

注意:这里的barEditItem_X之类的是状态栏显示坐标的文本控件,换成自己的即可。

满意请采纳!!!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友50cece8
2014-10-28 · TA获得超过123个赞
知道小有建树答主
回答量:154
采纳率:33%
帮助的人:97.7万
展开全部
估计你的地图坐标系不是经纬度的。要么,你地图坐标系换一下,要么,把当前点做投影。
追问
请问如何转换呢  需要代码转换还是简单设置 刚接触  不太懂啊
追答
设投影比较简单,软件操作一下即可;做点投影的话,有相应的接口。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式