Определение точки на маршруте 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(...);
}
Просто убедитесь, что вы обновили маршрут после изменения координат. Вы также должны убедиться, что ваши маркеры включены для выбора.