More kinetic panning optimizations

This commit is contained in:
Râu Cao 2026-01-27 15:04:25 +07:00
parent 0af9d9f16d
commit 3d982a6a7c
Signed by: raucao
GPG Key ID: 37036C356E56CC51
2 changed files with 11 additions and 6 deletions

View File

@ -374,6 +374,16 @@ export default class MapComponent extends Component {
? new Kinetic(-0.005, 0.05, 100)
: false;
// Fix for "sticky" touches on mobile:
// If we're on mobile (width <= 768) AND using kinetic,
// we increase the minimum velocity required to trigger kinetic panning.
// This prevents slow drags from being interpreted as a "throw"
if (this.settings.mapKinetic && window.innerWidth <= 768) {
// Default minVelocity is 0.05. We bump it up significantly.
// This means the user has to really "flick" the map to get inertia.
kinetic.minVelocity_ = 0.25;
}
this.mapInstance.addInteraction(
new DragPan({
kinetic: kinetic,

View File

@ -28,13 +28,8 @@ export default class SettingsService extends Service {
const savedKinetic = localStorage.getItem('marco:map-kinetic');
if (savedKinetic !== null) {
this.mapKinetic = savedKinetic === 'true';
} else {
// Default: disabled on small screens (mobile), enabled on desktop
// We check for typical mobile width (<= 768px)
if (typeof window !== 'undefined') {
this.mapKinetic = window.innerWidth > 768;
}
}
// Default is true (initialized in class field)
}
updateOverpassApi(url) {