onPointerUp method

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

Implementation

@override
void onPointerUp(int pointerId, Offset offset, Map<int, Offset> pointers) {
  super.onPointerUp(pointerId, offset, pointers);
  // no zoom: 0, double zoom: 1, half zoom: -1
  double zoomLevelOffset = log(_lastScale) / log(2);
  int zoomLevelDiff = zoomLevelOffset.round();
  if (zoomLevelDiff != 0) {
    // Complete large zooms towards gesture direction
    num mult = pow(2, zoomLevelDiff);
    // if (doLog)
    //   _log.info("onScaleEnd zooming now zoomLevelDiff $zoomLevelDiff");
    PositionInfo positionInfo = RotateHelper.normalize(startPosition!, size, _lastVector!.getFocalPoint().dx, _lastVector!.getFocalPoint().dy);
    mapModel.zoomToAround(
      positionInfo.latitude + (mapModel.lastPosition!.latitude - positionInfo.latitude) / mult,
      positionInfo.longitude + (mapModel.lastPosition!.longitude - positionInfo.longitude) / mult,
      mapModel.lastPosition!.zoomlevel + zoomLevelDiff,
    );
    //      if (doLog) _log.info("onScaleEnd  resulting in ${newPost.toString()}");
  } else if (_lastScale != 1) {
    // no significant zoom. Restore the old zoom
    /*MapViewPosition newPost =*/
    mapModel.zoomTo(mapModel.lastPosition!.zoomlevel);
    // if (doLog)
    //   _log.info(
    //       "onScaleEnd Restored zoom to ${viewModel.mapViewPosition!.zoomLevel}");
  }
  cancelTimer();
}