pieterv / react-googlemaps

A declarative React interface to Google Maps
MIT License
226 stars 68 forks source link

Overlay should not draw before it is added to the map #27

Open shipstar opened 9 years ago

shipstar commented 9 years ago

I ran into a bug (I think) with ReactOverlayView. Here's what I think is happening:

  1. MyReactComponent renders a Map component with overlays.
  2. Before the Google Maps JS can add the overlays to the Google Map, MyReactComponent#setState triggers a re-render (because of Flux in my case).
  3. React calls ReactOverlayView#componentDidUpdate, which calls MapOverlayView#draw. (Note that MapOverlayView#add has still not been called.)
  4. MapOverlayView#getProjection returns undefined, so the following error appears: Uncaught TypeError: Cannot read property 'fromLatLngToDivPixel' of undefined

I think the fix is pretty simple -- have ReactOverlayView#componentDidUpdate check whether __node has a _containerElement before drawing (which means that onAdd has been called and drawing is :+1: ).

Pull request incoming, but feel free to push back if there's a better solution.