2013-07-09 5 views
0

Я пишу программу WPF, которая использует GMapControl. Я хотел бы позволить пользователю щелкнуть по карте и добавить маркер, на который пользователь нажал. Я не хочу использовать события «MouseUp» и «MouseDown», чтобы событие было поймано только тогда, когда пользователь на самом деле нажимает на карту и игнорирует перетаскивание. Кроме того, я хотел бы иметь возможность поймать стилусы и сенсорные события таким же образом. Я заметил, что нет события «щелчка». Есть ли другая лучшая практика в отношении того, как это должно быть сделано?Как ответить на событие click с помощью GMap.net для WPF

Thnx,

ответ

-1

Ну, если нет Click события, вы будете иметь, чтобы справиться с MouseDown + MouseUp для обнаружения щелчков. Просто хранить e.Position в MouseDown, и в MouseUp, сравнить, чтобы убедиться, мышь не переместилась много:

private Point downPoint; 

private void OnMouseDown(object sender, MouseButtonEventArgs e) 
{ 
    downPoint = e.Position; 
} 

private void OnMouseUp(Object sender, MouseButtonEventArgs e) 
{ 
    if (Math.Abs(downPoint.X - e.Position.X) < SystemParameters.MinimumHorizontalDragDistance && 
     Math.Abs(downPoint.Y - e.Position.Y) < SystemParameters.MinimumVerticalDragDistance) 
    { 
     HandleClick(sender, e); 
    } 
} 

Вы должны были бы сделать что-то подобное для стилуса и сенсорной поддержки.

+0

Thnx, Abe. Конечно, я могу реализовать свой собственный клик, проблема в том, что он пытался избежать необходимости писать столько логики в такую ​​простую задачу. Кнопка, имеет простой щелчок (и недавно также постучал) событие, я думал, что, возможно, элемент управления карты имеет то же самое, так как он настолько полезен для управления картой. Каждая ситуация, когда пользователь должен выбрать точку на карте, требует такого события, кажется немного странным, что каждый разработчик, как ожидается, разработает такое событие самостоятельно ... –

+0

Ну, это проект с открытым исходным кодом ... Возможно, вы можете отправить код в проект, чтобы вам не нужно было его поддерживать в своем коде? –

0

Вы можете получить ответ на свой вопрос по следующей ссылке

Нажмите [здесь] (https://github.com/radioman/greatmaps)

часы для CustomMarkerDemo.xaml.cs и добавить к вашей программе. Этот пользовательский маркер имеет событие click, которое требуется вам.

 Смежные вопросы

  • Нет связанных вопросов^_^