MeteoInfo 发表于 2013-2-28 17:08
最近太忙了,你把相关代码贴出来,我看看怎么改进一下
代码如下,mapview控件取名为mvYB,点图层用了软件自带的CITIES.SHP来测试
 - public partial class frmYB : Form
- {
- public static string prj_path = AppDomain.CurrentDomain.BaseDirectory + @"..\..\";
- public VectorLayer cityMapLayer = (VectorLayer)MapDataManage.OpenLayer(prj_path + @"\DLl\Map\CITIES.SHP");
- public PointF ybStartPoint, ybEndPoint;
- private void frmYB_Load(object sender, EventArgs e)
- {
- MapLayer gxMapLayer = MapDataManage.OpenLayer(prj_path + @"\DLl\Map\cnworld");
- mvYB.AddLayer(gxMapLayer);
- mvYB.AddLayer(cityMapLayer);
- mvYB.ZoomToExtentLonLat(104, 112, 20, 27);
- mvYB.MouseTool = MouseTools.Pan;
- }
- private void mvYB_MouseDown(object sender, MouseEventArgs e)
- {
- ybStartPoint = new PointF(e.X, e.Y);
- }
- private void mvYB_MouseMove(object sender, MouseEventArgs e)
- {
- ybEndPoint.X = e.X;
- ybEndPoint.Y = e.Y;
- }
- private void mvYB_MouseUp(object sender, MouseEventArgs e)
- {
- List<int> selectedShapes = new List<int>();
- RectangleF rect = new RectangleF(ybStartPoint.X, ybStartPoint.Y, ybEndPoint.X - ybStartPoint.X, ybEndPoint.Y - ybStartPoint.Y);
- selectedShapes = mvYB.SelectShapes(cityMapLayer, rect);
- foreach (var item in selectedShapes)
- {
- string name = cityMapLayer.GetCellValue("NAME", item).ToString();
- MessageBox.Show(name);
- }
- }
|