visgl/react-map-gl

[Feat] Expose props mapping to `disableRotation()` on the touch-zoom-rotate handler

mz8i opened this issue · 2 comments

mz8i commented

Target Use Case

Currently it's not possible to enable touch zoom but disable touch rotate.

The touch zoom+rotate handlers for both Maplibre and Mapbox expose a disableRotation() method, so that sort of granularity is allowed by the base libraries.

Proposal

There are different ways the API could look, but an example (that I believe was the case with older versions of this library) is: expose an additional touchRotate prop that, if false, will cause calling disableRotation() on the touch-zoom-rotate handler.

mz8i commented

Current workaround is to use a ref function:

const mapRefFn = useCallback((refObj) => {
  refObj?.getMap()?.touchZoomRotate?.disableRotation();
}, []);

return (<Map ref={mapRefFn} touchZoomRotate={true}>
   {/* ... */}
</Map>);

I have also run into a need for this! Happy to take this on, if help is needed.