From 35138df78e1200109940fac68ad588ff2a58d9e0 Mon Sep 17 00:00:00 2001 From: Jason Mandel Date: Fri, 19 Jan 2018 10:40:04 -0500 Subject: [PATCH] added mouseover event handler (#6000) * added mouseover event * testing mouseover event handler * added anchor option for marker * Revert "added anchor option for marker" --- src/ui/bind_handlers.js | 10 ++++++++++ src/ui/events.js | 16 +++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/ui/bind_handlers.js b/src/ui/bind_handlers.js index 8a7240baee0..d91e941c11c 100644 --- a/src/ui/bind_handlers.js +++ b/src/ui/bind_handlers.js @@ -33,6 +33,7 @@ module.exports = function bindHandlers(map: Map, options: {}) { el.addEventListener('mousedown', onMouseDown, false); el.addEventListener('mouseup', onMouseUp, false); el.addEventListener('mousemove', onMouseMove, false); + el.addEventListener('mouseover', onMouseOver, false); el.addEventListener('touchstart', onTouchStart, false); el.addEventListener('touchend', onTouchEnd, false); el.addEventListener('touchmove', onTouchMove, false); @@ -80,6 +81,15 @@ module.exports = function bindHandlers(map: Map, options: {}) { fireMouseEvent('mousemove', e); } + function onMouseOver(e: MouseEvent) { + + let target: any = e.toElement || e.target; + while (target && target !== el) target = target.parentNode; + if (target !== el) return; + + fireMouseEvent('mouseover', e); + } + function onTouchStart(e: TouchEvent) { map.stop(); fireTouchEvent('touchstart', e); diff --git a/src/ui/events.js b/src/ui/events.js index 9c65d6e71df..ae6bbdd26dd 100644 --- a/src/ui/events.js +++ b/src/ui/events.js @@ -20,6 +20,7 @@ export type MapMouseEvent = { | 'click' | 'dblclick' | 'mousemove' + | 'mouseover' | 'mouseenter' | 'mouseleave' | 'mouseover' @@ -130,7 +131,7 @@ export type MapEvent = /** * Fired when a pointing device (usually a mouse) is moved within the map. * - * @event mousemove + * @event mouseover * @memberof Map * @instance * @property {MapMouseEvent} data @@ -138,6 +139,19 @@ export type MapEvent = * @see [Highlight features under the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/hover-styles/) * @see [Display a popup on hover](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/) */ + | 'mouseover' + + /** + * Fired when a pointing device (usually a mouse) is moved within the map. + * + * @event mousemove + * @memberof Map + * @instance + * @property {MapMouseEvent} data + * @see [Get coordinates of the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/mouse-position/) + * @see [Highlight features under the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/hover-styles/) + * @see [Display a popup on over](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/) + */ | 'mousemove' /**