moveCamera method
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);
}
}