maps icon indicating copy to clipboard operation
maps copied to clipboard

Android: When user pitches the map (two finger swipe gesture), isGestureActive becomes false when pitch starts to change

Open bradstiff opened this issue 6 months ago • 0 comments

Mapbox Implementation

Mapbox

Mapbox Version

default

React Native Version

0.73.5

Platform

Android

@rnmapbox/maps version

10.1.15

Standalone component to reproduce

import React from 'react';
import {
  MapView,
  ShapeSource,
  LineLayer,
  Camera,
} from '@rnmapbox/maps';

const aLine = {
  type: 'LineString',
  coordinates: [
    [-74.00597, 40.71427],
    [-74.00697, 40.71527],
  ],
};

class BugReportExample extends React.Component {
  handleCameraChanged = event => {
    console.info(event);
  }

  render() {
    return (
      <MapView style={{flex: 1}} pitchEnabled={true} onCameraChanged={this.handleCameraChanged}>
        <Camera centerCoordinate={[-74.00597, 40.71427]} zoomLevel={14} />
        <ShapeSource id="idStreetLayer" shape={aLine}>
          <LineLayer id="idStreetLayer" />
        </ShapeSource>
      </MapView>
    );
  }
}

Observed behavior and steps to reproduce

Subscribe to the onCameraChanged event.

Use two-finger swipe gesture to pitch the map.

As soon as the pitch begins to change, event.gestures.isGestureActive is no longer true, even though a gesture continues to change the camera.

Below is the console output throughout the gesture.

Initially, isGestureActive is true until the pitch starts to change:

{"gestures": {"isGestureActive": false}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76949914919413, 40.44890011367669], "heading": 332.78784802195764, "pitch": 0, "zoom": 14.729719614537556}, "timestamp": 1709169924817} INFO {"gestures": {"isGestureActive": true}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76948979894159, 40.448886276383405], "heading": 332.78784802195764, "pitch": 0, "zoom": 14.729719614537556}, "timestamp": 1709169942334} INFO {"gestures": {"isGestureActive": true}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76945128224419, 40.44882927602503], "heading": 332.78784802195764, "pitch": 0, "zoom": 14.729719614537556}, "timestamp": 1709169942501} INFO {"gestures": {"isGestureActive": true}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76943790734013, 40.44880948265798], "heading": 332.78784802195764, "pitch": 0, "zoom": 14.729719614537556}, "timestamp": 1709169942521} INFO {"gestures": {"isGestureActive": true}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76939537579447, 40.44874654056354], "heading": 332.78784802195764, "pitch": 0, "zoom": 14.729719614537556}, "timestamp": 1709169942580} INFO {"gestures": {"isGestureActive": true}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76934798672805, 40.4486764096866], "heading": 332.78784802195764, "pitch": 0, "zoom": 14.729719614537556}, "timestamp": 1709169942634} INFO {"gestures": {"isGestureActive": true}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.7693433115996, 40.44866949098328], "heading": 332.78784802195764, "pitch": 0, "zoom": 14.729719614537556}, "timestamp": 1709169942672} INFO {"gestures": {"isGestureActive": true}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.7693433115996, 40.44866949098328], "heading": 332.78784802195764, "pitch": 0, "zoom": 14.729719614537556}, "timestamp": 1709169942691} INFO {"gestures": {"isGestureActive": true}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76930279381648, 40.44860952874739], "heading": 332.78784802195764, "pitch": 0, "zoom": 14.729719614537556}, "timestamp": 1709169942739}

Then as soon as the pitch starts changing, isGestureActive changes to false:

INFO {"gestures": {"isGestureActive": false}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76930278071364, 40.44860950935583], "heading": 332.78784802195764, "pitch": 0.5087463454715362, "zoom": 14.721734912821177}, "timestamp": 1709169942806} INFO {"gestures": {"isGestureActive": false}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76930274761084, 40.44860946036529], "heading": 332.7878480219577, "pitch": 1.6429687744821426, "zoom": 14.721762489106663}, "timestamp": 1709169942852} INFO {"gestures": {"isGestureActive": false}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76930273124742, 40.44860943614827], "heading": 332.7878480219577, "pitch": 2.176153596880341, "zoom": 14.721776100666105}, "timestamp": 1709169942902} INFO {"gestures": {"isGestureActive": false}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76930269670248, 40.44860938502342], "heading": 332.7878480219577, "pitch": 3.1861755845870903, "zoom": 14.721803015571325}, "timestamp": 1709169942973} INFO {"gestures": {"isGestureActive": false}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.7693026511539, 40.44860931761378], "heading": 332.78784802195764, "pitch": 4.374310367916677, "zoom": 14.72183596233926}, "timestamp": 1709169943052} INFO {"gestures": {"isGestureActive": false}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.769302576287, 40.448609206814496], "heading": 332.78784802195764, "pitch": 6.041284269709648, "zoom": 14.721885134883026}, "timestamp": 1709169943125} INFO {"gestures": {"isGestureActive": false}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.769302576287, 40.448609206814496], "heading": 332.78784802195764, "pitch": 6.041284269709648, "zoom": 14.721885134883026}, "timestamp": 1709169943171} INFO {"gestures": {"isGestureActive": false}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.769302331559, 40.44860884462916], "heading": 332.78784802195764, "pitch": 10.131714018161802, "zoom": 14.722022434555218}, "timestamp": 1709169943235} INFO {"gestures": {"isGestureActive": false}, "properties": {"bounds": {"ne": [Array], "sw": [Array]}, "center": [-106.76930212442288, 40.44860853807786], "heading": 332.78784802195764, "pitch": 12.7110780702692, "zoom": 14.722121979119963}, "timestamp": 1709169943308}

Expected behavior

event.gestures.isGestureActive should remain true throughout the gesture.

Notes / preliminary analysis

Observed on Android only.

Works as expected on iOS.

Additional links and references

No response

bradstiff avatar Feb 29 '24 01:02 bradstiff