onPointerMove method

  1. @override
void onPointerMove(
  1. int pointerId,
  2. Offset offset,
  3. Map<int, Offset> pointers
)
override

Implementation

@override
void onPointerMove(int pointerId, Offset offset, Map<int, Offset> pointers) {
  if (!activeTimer() && !_moveActive) {
    return;
  }
  super.onPointerMove(pointerId, offset, pointers);
  cancelTimer();
  _moveActive = true;

  velocityCalculator.addEvent(offset);
  double diffX = (offset.dx - startOffset!.dx) * MapsforgeSettingsMgr().getDeviceScaleFactor();
  double diffY = (offset.dy - startOffset!.dy) * MapsforgeSettingsMgr().getDeviceScaleFactor();
  if (mapModel.lastPosition?.rotation != 0) {
    double hyp = sqrt(diffX * diffX + diffY * diffY);
    double rad = atan2(diffY, diffX);
    double rot = mapModel.lastPosition!.rotationRadian;
    diffX = cos(-rot + rad) * hyp;
    diffY = sin(-rot + rad) * hyp;
  }
  if (_nextManualMoveEvent == 0 || _nextManualMoveEvent < DateTime.now().millisecondsSinceEpoch) {
    _nextManualMoveEvent = DateTime.now().millisecondsSinceEpoch + 1000;
    mapModel.manualMove(Object());
  }
  mapModel.setCenter(startPosition!.getCenter().x - diffX, startPosition!.getCenter().y - diffY);
}