google-maps-react icon indicating copy to clipboard operation
google-maps-react copied to clipboard

onMouseover, onMouseout work on every mouse move on marker

Open mzaremski opened this issue 8 years ago • 4 comments

Hello! I want to show to screen something only when mouse is over marker. So I am use onMouseover prop to show element and onMouseout to hide element. I want too do something when I click marker.

Unfortunately when I use onMouseover and onMouseout props, onClick event don't work. It is first problem. Second is it, that onMouseover and onMouseout work every mouse move on marker then cause flashing my element to show.

I don't have any idea to fix it. Could you help me?

Code:

<Marker
     title={item.markerName}
     id={item.markerId}
     key={index}
     onClick={this.onMarkerClick.bind(this)}
     onMouseover={this.showPopUpOfMarker.bind(this)}
     onMouseout={this.hidePopUpOfMarker.bind(this)}
 />
showPopUpOfMarker(marker){
        console.log("Mouse over")
        this.setState({markerPopUp:marker})
}
hidePopUpOfMarker(){
        console.log("Mouse out")
        this.setState({markerPopUp:false})
}

Console log when I move mouse over marker:

Mouse over
Mouse out
Mouse over
Mouse out
Mouse over
Mouse out

mzaremski avatar Nov 25 '17 10:11 mzaremski

Don't know if you still have the problem, the solution I found to solve my problem was adding a timer to the mouseover and mouseout event. It would looks in your case something like this:

var eventTimeout;


// There is a google maps bug of moving cursor several times over and out

showPopUpOfMarker(marker){
        
clearTimeout(eventTimeout);
eventTimeout = setTimeout(function(){
        console.log("Mouse over");
        this.setState({markerPopUp:marker});
},
100);
}

hidePopUpOfMarker(){
        console.log("Mouse out")
        this.setState({markerPopUp:false})
       // If we already left marker, clear the timeout
       clearTimeout(eventTimeout);
}

q3chap avatar Jan 30 '18 08:01 q3chap

Did you try marker.setIcon() on the MouseOver and MouseOut events? it worked for me.

sonalikatara avatar Mar 26 '18 02:03 sonalikatara

Try onMouseLeave instead of onMouseOut

prakhar-tiwari avatar Jul 02 '19 04:07 prakhar-tiwari

The solution is in my grasp

https://certain-vidal.github.io/yHvw9bt3ZghXuKyh/

daylightsettings70 avatar Oct 20 '25 18:10 daylightsettings70