在特定位置动画相机

Animating camera on specific position

根据google developer's guide here,在特定位置设置相机动画

CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(MOUNTAIN_VIEW)      // Sets the center of the map to Mountain View
    .zoom(17)                   // Sets the zoom
    .bearing(90)                // Sets the orientation of the camera to east
    .tilt(30)                   // Sets the tilt of the camera to 30 degrees
    .build();                   // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

但是,在api reference中,CameraPosition已经有一个构造函数定义为:

public CameraPosition (LatLng target, float zoom, float tilt, float bearing)

所以,如果我写成:

  CameraPosition cameraPosition = new CameraPosition(latLng,9,0,0);

 CameraPosition cameraPosition = new CameraPosition.Builder().target(latLng).zoom(9).build();

它们相同还是不同?是否需要根据参考使用静态嵌套 class CameraPosition.Builder

此外,两者具有相同的描述:

CameraPosition constructor:

Constructs a CameraPosition.

public CameraPosition build():

Builds a CameraPosition.

我怀疑 constructsbuilds 之间是否有任何区别。不幸的是,整个互联网上没有任何关于它们差异的信息(如果存在)。有人可以帮忙吗?

编辑: 从评论中,有人指出它使用了 Builder 设计模式。虽然,我不明白为什么在这里使用它?冗余构造函数的需求是什么?谁能帮助我更好地理解?

我想 Google 的人这样做的原因是清晰和方便。

下面哪个更易读?

CameraPosition cameraPosition = new CameraPosition(latLng, 11.0f, 0, 0);

CameraPosition cameraPosition = new CameraPosition.Builder()
        .target(latLng)
        .zoom(11.0f)
        .build();

您无需查找方法签名即可知道要输入哪些参数。此外,您不必知道默认的倾斜度和方位角值。

ConstructorBuilder在java中的区别对应于CameraPosition constructorCameraPosition build()在[=31中的区别=]的相机API。以下是基本区别:

  • 当你想减少参数的数量时,构建器比构造器有更好的用途。当涉及到 POJO 中的对象调用时,构造函数往往有很多参数。
  • 构建器可以通过更简单的方式构建传递给方法的参数对象,从而间接帮助非构造函数方法。
  • 如果参数太多,其中一些甚至为空,并且其中许多参数共享相同的数据类型,则应使用构建器。
  • IDE 喜欢通过使用重构代码创建一个自动的新生成器 class 来利用生成器。

在 android 中为相机 API 编写代码时可以考虑所有这些要点,以获得更好和优化的性能。

代码实现参考如下link.