识别在C#中鼠标单击的GMAP .net路由上的点

时间:2017-02-27 07:52:13

标签: c# routes click mouse gmap.net

我正在开发一个应用程序来显示滑雪假期的跑步和升降机。输入文件是Garmin Fenix 3保存的TCX数据文件。

我已经成功地将文件中的不同轨道段绘制为路线,但现在希望能够更正起点和终点。为此,我希望能够从地图中选择一条路线,然后点击我想用作起点或终点的点。

我可以选择路线并访问路线上的信息,但到目前为止,我还无法识别沿着路线点击鼠标的位置。

我尝试将点击鼠标e.location.Xe.location.Y的位置与路线中的LocalPoint数据进行比较

if( e.location.X==route.LocalPoints.x && e.location.Y==route.LocalPoints.y)
{......}

但是没有找到相应的一点。

我还尝试使用e.XE.Y代替.Location

有没有办法直接识别被点击的路线上的点或点击的最近点?

1 个答案:

答案 0 :(得分:0)

你确定可以。

当您添加路线点时,您最有可能使用以下内容:

overlay.Markers.Add(point);
gMapControl1.UpdateRouteLocalPosition(overlay);

您添加的点可直接作为标记访问。确保添加事件

gMapControl1.OnMarkerClick += new MarkerClick(gMapControl1_OnMarkerClick);

然后在此方法中,您可以获取单击的标记并根据需要更改位置:

void gMapControl1_OnMarkerClick(GMapMarker item, MouseEventArgs e)
{
    item.Position = new PointLatLng(...);
}

确保在更改坐标后更新路线。您还需要确保您的标记已启用以供选择。