免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 2306|回复: 1
收起左侧

鹰眼的实现MAPX

[复制链接]

2072

主题

100000万

铜板

363

好友

地信专家组

每一次的分离都是为了下一次的相聚

Rank: 14Rank: 14Rank: 14Rank: 14

积分
17622

精华勋章宣传勋章爱心勋章组织勋章地信元老灌水勋章荣誉会员勋章活跃勋章贡献勋章

发表于 2009-11-15 16:34 | 显示全部楼层 |阅读模式
鹰眼的实现MAPX
1        详细设计:        2
1.1        总体思路        2
1.1.1        鹰眼图上创建一个图层        2
1.1.2        根据主图的Bounds在鹰眼图上绘制矩形Feature        3
1.1.3        鹰眼图上鼠标单击导航主图,方法是把鼠标的坐标设置为主图的中心        3
1.1.4        主图上鼠标单击导航鹰眼图,方法把鼠标处的坐标设置为鹰眼图的中心        3
1.2        模块设计        3
1.2.1        设计流程图        3
1.2.2        主窗口及功能实现        4

1        详细设计:
1.1        总体思路
在Form上放两个MapX控件:Map1(主图),Map2(鹰眼图);然后在鹰眼图上创建一个图层,在该图层上添加一个矩形Feature,该矩形的大小随着主图边界而变化。
1.1.1        鹰眼图上创建一个图层
Map2.Layers.CreateLayer('Rectlayer', EmptyParam,1,
  EmptyParam, EmptyParam);
1.1.2        根据主图的Bounds在鹰眼图上绘制矩形Feature
1.1.3        鹰眼图上鼠标单击导航主图,方法是把鼠标的坐标设置为主图的中心
1.1.4        主图上鼠标单击导航鹰眼图,方法把鼠标处的坐标设置为鹰眼图的中心
1.2        模块设计
1.2.1        设计流程图
1.2.2        主窗口及功能实现
主要代码参考如下:
1.2.2.1           变量申明
    m_Layer ayer; //'鹰眼图上临时图层
    m_Fea :Feature; // '鹰眼图上反映主地图窗口位置的Feature
P_Create :boolean;//
1.2.2.2        鹰眼图上临时图层(窗体创建时调用)
procedure TForm1.Form_Load;
begin
  m_Layer :=Map2.Layers.CreateLayer('Rectlayer', EmptyParam,1,
  EmptyParam, EmptyParam);
end;
1.2.2.3        根据主图的Bounds在鹰眼图上绘制矩形Feature
procedure TForm1.Map1MapViewChanged(Sender: TObject);
var
  tempFea : CMapXFeature;// '声明Feature变量
  tempPnts : CMapXPoint;// '声明Points变量
  tempStyle : CMapXStyle;// '声明Style变量
begin
  //'矩形边框还没有创建时
  If m_Layer.AllFeatures.Count = 0 Then
  begin
    //'设置矩形边框样式
    tempStyle :=CoStyle.create;//'创建Style对象
    tempStyle.RegionPattern := miPatternNoFill;// '设置Style的矩形内部填充样式
    tempStyle.RegionBorderColor := 255;// '设置Style的矩形边框颜色
    tempStyle.RegionBorderWidth := 2;// '设置Style的矩形边框宽度
    //'在图层创建大小为Map1的边界的Rectangle对象
    tempFea := Map2.FeatureFactory.CreateRegion(Map1.Bounds, tempStyle);
    m_Fea := m_Layer.AddFeature(tempFea,EmptyParam);// '添加矩形边框
  end
    Else //否则,根据Map1的视野变化改变矩形边框的大小和位置
      begin
        m_Fea.Parts.Item(1).RemoveAll;//'除去已有的矩形边框的顶点
        //'添加大小和位置已变化的矩形边框的四个顶点
        m_Fea.Parts.Item(1).AddXY(Map1.Bounds.XMin,Map1.Bounds.YMin,EmptyParam);
        m_Fea.Parts.Item(1).AddXY(Map1.Bounds.XMax,Map1.Bounds.YMin,EmptyParam);
        m_Fea.Parts.Item(1).AddXY(Map1.Bounds.XMax,Map1.Bounds.YMax,EmptyParam);
        m_Fea.Parts.Item(1).AddXY(Map1.Bounds.XMin,Map1.Bounds.YMax,EmptyParam);
        m_Fea.Update(EmptyParam, EmptyParam)// '更新显示
     end;
end;
1.2.2.4        鹰眼图上鼠标单击用来导航主图,其方法是把鼠标处的坐标设置为主图的中心
procedure TForm1.Map2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  ScreenX,ScreenY :Single;
  MapX ouble;// '定义x坐标变量
  MapY :Double;// '定义y坐标变量
begin
  //'把屏幕坐标转换为地图坐标
  ScreenX := X;
  ScreenY := Y;
  Map2.ConvertCoord(ScreenX,ScreenY, MapX, MapY, miScreenToMap);
  //'设置主图的中心x坐标和y坐标
  Map1.CenterX := MapX;
  Map1.CenterY := MapY;
end;
1.2.2.5        主图上鼠标单击导航鹰眼图,方法把鼠标处的坐标设置为鹰眼图的中心
procedure TForm1.Map1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  ScreenX,ScreenY :Single;
  MapX :Double;// '定义x坐标变量
  MapY :Double;// '定义y坐标变量
begin
  //'把屏幕坐标转换为地图坐标
  ScreenX := X;
  ScreenY := Y;
  Map1.ConvertCoord(ScreenX,ScreenY, MapX, MapY, miScreenToMap);
  //'设置主图的中心x坐标和y坐标
  Map2.CenterX := MapX;
  Map2.CenterY := MapY;
end;

0

主题

2632

铜板

0

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1542
发表于 2025-1-9 16:02 | 显示全部楼层
探矿者软件可以提高矿体的命中率,减少找矿的成本和难度,主要功能:数据管理、二维制图、三维建模、储量估算、三维立体预测等,有需要免费试用可以联系负责人邓帅15377311476(微信同号),软件针对单位或者企业试用,不面向个人试用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表