diff --git a/app/components/map.gjs b/app/components/map.gjs index a143ca5..8545e77 100644 --- a/app/components/map.gjs +++ b/app/components/map.gjs @@ -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, diff --git a/app/services/settings.js b/app/services/settings.js index dc90795..de6982e 100644 --- a/app/services/settings.js +++ b/app/services/settings.js @@ -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) {