C#.net 地图控件开发(十) 地图对象Map
来源:互联网 发布:淘宝子账号验证不了 编辑:程序博客网 时间:2024/05/29 10:20
地图对象
地图对象(Map)是地图图层的集合,包含地图的常用属性,如比例尺,中心坐标,基准点坐标等,即对整个地图进行统一管理的一个类。
地图对象类
作用:对地图进行管理。
类:包含地图图层集合,常用地图属性,并提供地图刷新的方法,控件坐标与地图坐标的相互转换方法。
namespace GIS.HJ.Core
{
///<summary>
///地图对象
///</summary>
public class Map
{
///<summary>
///默认构造函数
///</summary>
public Map(MapControl mapControl)
{
_MapControl = mapControl;
_MapControl.SizeChanged += newEventHandler(_MapControl_SizeChanged);
_MapControl.Paint += new System.Windows.Forms.PaintEventHandler(_MapControl_Paint);
Layers = new List<LayerClass>();
}
///<summary>
///地图控件
///</summary>
private MapControl _MapControl = null;
///<summary>
///图层
///</summary>
public List<LayerClass> Layers { get; set; }
private double _CorX = 0;
///<summary>
///实际坐标原点X
///</summary>
public double CorX
{
get { return _CorX; }
set
{
_CorX = value;
LayerClass.CorX =value;
}
}
private double _CorY = 0;
///<summary>
///实际坐标原点Y
///</summary>
public double CorY
{
get { return _CorY; }
set
{
_CorY = value;
LayerClass.CorY =value;
}
}
private int _CtlWidth = 1;
///<summary>
///控件宽度
///</summary>
public int CtlWidth
{
get { return _CtlWidth; }
set
{
_CtlWidth = value;
}
}
private int _CtlHeight = 1;
///<summary>
///控件高度
///</summary>
public int CtlHeight
{
get { return _CtlHeight; }
set
{
_CtlHeight = value;
LayerClass.CtlHeight =value;
}
}
private double _MapScale = 1;
///<summary>
///地图比例尺
///</summary>
public double MapScale
{
get { return _MapScale; }
set
{
if (value != _MapScale)
{
double oldScale = _MapScale;
CorX = _CorX + (oldScale - value) * _CtlWidth / 2F;
CorY = _CorY + (oldScale - value) * _CtlHeight / 2F;
_MapScale = value;
LayerClass.MapScale =value;
_MapControl.Invalidate();
if (this.ScaleChanged !=null)
this.ScaleChanged(this,newEventArgs());
}
}
}
///<summary>
///地图定位中心
///</summary>
///<param name="hPoint"></param>
public void CenterAt(PointClass hPoint)
{
CorX = hPoint.X - _CtlWidth / 2.0f * _MapScale;
CorY = hPoint.Y - _CtlHeight / 2.0f * _MapScale;
_MapControl.Invalidate();
}
///<summary>
///刷新地图
///</summary>
public void Refresh()
{
_MapControl.Invalidate();
}
///<summary>
///比例尺改变事件
///</summary>
public event EventHandler ScaleChanged;
///<summary>
///绘图函数
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
private void _MapControl_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
if (CtlHeight == 0 || CtlWidth == 0)return;
foreach (LayerClass layerin Layers)
{
if (layer.Visible)
{
layer.DrawShape(e.Graphics);
}
}
}
///<summary>
///地图控件大小改变
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
private void _MapControl_SizeChanged(object sender,EventArgs e)
{
CtlHeight = _MapControl.Height;
CtlWidth = _MapControl.Width;
_MapControl.Invalidate();
}
///<summary>
///坐标转换,从控件坐标到地图坐标
///</summary>
///<param name="point"></param>
///<returns></returns>
public PointClass ToMapPoint(Point point)
{
return LayerClass.ToMapPoint(point);
}
///<summary>
///坐标转换,从地图坐标到控件坐标
///</summary>
///<param name="hPoint"></param>
///<returns></returns>
public Point FromMapPoint(PointClass point)
{
return LayerClass.FromMapPoint(point);
}
}
}
- C#.net 地图控件开发(十) 地图对象Map
- C#.net 地图控件开发(十一) 地图控件MapControl
- C#.net 地图控件开发(八) 地图要素Feature
- C#.net 地图控件开发 (一) 控件坐标与地图坐标
- C#.net 地图控件开发(二) 地图图层Layer
- C#.net 地图控件开发(七) 地图符号,几何图形样式Symbol
- Google Map开发系列(十)——给你的地图加上API提供的默认控件
- Google Map开发系列(十)——给你的地图加上API提供的默认控件
- Google Map开发系列(十)——给你的地图加上API提供的默认控件
- Google Map开发系列(十)——给你的地图加上API提供的默认控件
- C#.net 地图控件开发(三) GDI+图形图像编程基础1.
- C#.net 地图控件开发(四) GDI+图形图像编程基础2.
- C#.net 地图控件开发(五) GDI+图形图像编程基础3.
- C#.net 地图控件开发(九) 矢量图层与绘制FeatureLayer
- C#.net 地图控件开发(十二) 第一阶段总结,附代码示例
- GMap.NET地图开发控件使用心得
- 基于地图开发控件GMap.Net 使用
- 地图map控件基本参数设置
- php前一天,本月最后一天
- 《Java 编程思想》--第八章:多态
- MinSdkVersion, targetSdkVersion, target API level的区别
- Structs+Spring+Hibernate快速入门
- 《Java 编程思想》--第九章:接口
- C#.net 地图控件开发(十) 地图对象Map
- 网站搬迁需要注意的事情
- 如何快速阅读别人的源代码
- 问题Re-installation failed due to different application signatures.解决
- LeetCode - Triangle
- 《Java 编程思想》--第十章:内部类
- 从hbase(hive)将数据导出到mysql
- the trunk, branch, tag in SVN
- resource is out of sync with the file system 解决方法