TypeError: undefined is not an object (evaluating 'projection.fromLatLngToDivPixel')
When calling clearMarkers/addMarkers relatively early after the map is initialised, a error is thrown. It seems even though the map is initialised, markerclusterer doesn't have a valid projection.
Environment details
Markerclusterer: 2.5.3
Steps to reproduce
- create a markerclusterer object.
- register mapInitialized Callback (in the callback call .clearMarkers or addMarkers)
- error is thrown when callback is called
Stack trace
latLngBoundsToPixelBounds — index.esm.js:233
extendBoundsToPaddedViewport — index.esm.js:194
getPaddedViewport — index.esm.js:202
calculate — index.esm.js:567
render — index.esm.js:872
clearMarkers — index.esm.js:862
Following these steps will guarantee the quickest resolution possible.
Thanks!
This seems like an issue on render. It is guarding with map.getProjection() but then sending this.getProjection() to the algorithm. Meaning the parent overlay hasn't yet been given the projection.
What kind of workaround can we use in the meantime?
I blocked my render() on clusterer.getProjection().
You just have to remember to set noDraw to true when you add markers. Oh and if it fails you might not render, so make sure you try again.