Определение точки на маршруте GMAP .net, которая была нажата мышью в C#

Я разрабатываю приложение, чтобы показать трассы и подъемы от лыжного отдыха. Входной файл - это файл данных TCX, сохраненный Garmin Fenix ​​3.

Я успешно нанес на карту различные сегменты дорожек из файла в виде маршрутов, но теперь хочу иметь возможность корректировать начальную и конечную точки. Для этого я хочу иметь возможность выбрать маршрут на карте и щелкнуть на точке, которую я хочу использовать в качестве начальной или конечной точки.

Я могу выбрать маршрут и получить доступ к информации о маршруте, но до сих пор я не смог определить положение вдоль маршрута, на котором была нажата мышь.

Я пытался сравнить местоположение, что была нажата мышь e.location.X а также e.location.Y с LocalPoint данные внутри маршрута

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

но это не находит соответствующей точки.

Я также пытался с e.X а также E.Y вместо .Location точки

Есть ли способ напрямую определить точку на маршруте, по которой был выполнен щелчок, или ближайшую точку к нажатию?

1 ответ

Решение

Вы уверены, что можете.

Когда вы добавляете свои точки маршрута, вы, скорее всего, используете что-то вроде:

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

Точки, которые вы добавляете, напрямую доступны как маркеры. Убедитесь, что вы добавили событие

gMapControl1.OnMarkerClick += new MarkerClick(gMapControl1_OnMarkerClick);

Затем внутри этого метода вы можете получить маркер, по которому щелкнули, и изменить позицию так, как вам нужно:

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

Просто убедитесь, что вы обновили маршрут после изменения координат. Вы также должны убедиться, что ваши маркеры включены для выбора.

Другие вопросы по тегам