moveCamera method

  1. @override
Future<void> moveCamera(
  1. CameraUpdate camera, {
  2. CameraAnimation? animation,
})
override

Implementation

@override
Future<void> moveCamera(CameraUpdate camera,
    {CameraAnimation? animation}) async {
  JSAny animationOption = {
    "animate": animation == null ? false : {"duration": animation.duration}
  }.jsify()!;
  final level = controller.getLevel();
  switch (camera.type) {
    case CameraUpdateType.newCenterPoint:
      final zoomLevel = camera.zoomLevel == -1
          ? level
          : _calculateZoomLevel(camera.zoomLevel);
      controller.jump(
          WebLatLng.fromLatLng(camera.position!), zoomLevel, animationOption);
      break;
    case CameraUpdateType.newCameraPos:
      final zoomLevel = camera.cameraPosition!.zoomLevel == -1
          ? level
          : _calculateZoomLevel(camera.cameraPosition!.zoomLevel);
      controller.jump(WebLatLng.fromLatLng(camera.cameraPosition!.position),
          zoomLevel, animationOption);
      break;
    case CameraUpdateType.zoomTo:
      final zoomLevel = camera.zoomLevel == -1
          ? level
          : _calculateZoomLevel(camera.zoomLevel);
      controller.setLevel(zoomLevel, {"options": animationOption}.jsify());
      break;
    case CameraUpdateType.zoomIn:
      controller.setLevel(level - 1, {"options": animationOption}.jsify());
      break;
    case CameraUpdateType.zoomOut:
      controller.setLevel(level + 1, {"options": animationOption}.jsify());
      break;
    case CameraUpdateType.newCameraAngle:
    case CameraUpdateType.rotate:
    case CameraUpdateType.tilt:
      break;
    case CameraUpdateType.fitMapPoints:
      final bounds = WebLatLngBound();
      camera.fitPoints!
          .map((e) => WebLatLng.fromLatLng(e))
          .forEach((e) => bounds.extend(e));
      controller.setBounds(bounds, camera.padding ?? 0, camera.padding ?? 0,
          camera.padding ?? 0, camera.padding ?? 0);
  }
}