麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

VC++开发GIS系统(185)线上加点之核心函数实现

继续我们的VC++开发GIS的过程,本文要介绍的功能是:线上加点。

功能描述

  1. 选中一条线
  2. 在线上单击
  3. 如果单击的点在线上,则线加了一个节点。

效果如图:

函数定义

在_malaBase.h中定义线上加点的函数:

bool addPointInLine(malaPoint point, vector<malaPoint>& Line);//线上加点

参数:

  1. point 鼠标点击的点
  2. Line 被选中的线

函数实现

在_malaBase.cpp中实现线上加点的函数:

/*
* 线上加点实现
*/
bool malaLogic::addPointInLine(malaPoint point, vector<malaPoint>& Line)
{
    bool Tug = FALSE;
    int length = Line.size();
    vector<malaPoint>MyLine;
    int pos = 0;
    for (int i = 1; i < length; i++)
    {
        if (isPointInLine(point, Line[i - 1], Line[i]))
        {
            Tug = TRUE;
            pos = i;
        }
        MyLine.push_back(Line[i - 1]);
        if (Tug)
            break;
    }

    if (Tug)
    {
        MyLine.push_back(point);
        for (int j = pos; j < length; j++)
        {
            MyLine.push_back(Line[j]);
        }
        Line = MyLine;
        MyLine.clear();
        return TRUE;
    }
    return FALSE;
}

其中 isPointInLine 函数可以参考:VC++开发GIS系统(181)线上加点之判断点是否在线上函数实现

详细代码可以参考:GitHub

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)