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; }
}
}
控件坐标是以左上角为基准点(原点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; }
}
}
相关文章推荐
- C#.net 地图控件开发(八) 地图要素Feature
- Winform下的地图开发控件(GMap.NET)使用心得之三---批量解析地址经纬度坐标
- C#.net 地图控件开发(三) GDI+图形图像编程基础1.
- C#.net 地图控件开发(十二) 第一阶段总结,附代码示例
- C#.net 地图控件开发(五) GDI+图形图像编程基础3.
- C#.net 地图控件开发(十) 地图对象Map
- C#.net 地图控件开发(四) GDI+图形图像编程基础2.
- C#.net 地图控件开发(十一) 地图控件MapControl
- C#在Winform中使用GMap.Net地图开发控件在离线模式下绘制两点路线
- C#.net 地图控件开发(二) 地图图层Layer
- C#.net 地图控件开发(七) 地图符号,几何图形样式Symbol
- C#.net 地图控件开发(九) 矢量图层与绘制FeatureLayer
- C#发现之旅 --- WinForm.NET中开发具有固定背景图片的可滚动控件
- C#发现之旅 --- WinForm.NET中开发具有固定背景图片的可滚动控件
- C#发现之旅 --- WinForm.NET中开发具有固定背景图片的可滚动控件
- Winform下的地图开发控件(GMap.NET)使用心得
- Winform 下的地图开发控件(GMap.NET)使用心得
- Winform下的地图开发控件(GMap.NET)使用心得之二
- C#发现之旅 --- WinForm.NET中开发具有固定背景图片的可滚动控件
- web服务器控件的开发例子 C# .net