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

Identifying the point on a GMAP .net Route that was mouse clicked in C#

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

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

我可以 select 路线并访问路线上的信息,但到目前为止我还无法确定鼠标点击的路线位置。

我已经尝试将单击鼠标的位置 e.location.Xe.location.Y 与路线

中的 LocalPoint 数据进行比较
if( e.location.X==route.LocalPoints.x && e.location.Y==route.LocalPoints.y)
{......}

但是这个没有找到对应点

我也尝试过 e.XE.Y 而不是 .Location

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

你当然可以。

当您添加路线点时,您很可能会使用类似的东西:

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

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

gMapControl1.OnMarkerClick += new MarkerClick(gMapControl1_OnMarkerClick);

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

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

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