js-markerclusterer icon indicating copy to clipboard operation
js-markerclusterer copied to clipboard

TypeError: undefined is not an object (evaluating 'projection.fromLatLngToDivPixel')

Open LeLunZ opened this issue 1 year ago • 3 comments

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

  1. create a markerclusterer object.
  2. register mapInitialized Callback (in the callback call .clearMarkers or addMarkers)
  3. 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!

LeLunZ avatar Aug 14 '24 14:08 LeLunZ

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.

odingrey avatar Dec 15 '25 17:12 odingrey

What kind of workaround can we use in the meantime?

rtcpw avatar Dec 19 '25 22:12 rtcpw

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.

odingrey avatar Dec 19 '25 22:12 odingrey