在特定位置动画相机
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?
此外,两者具有相同的描述:
Constructs a CameraPosition.
public CameraPosition build():
Builds a CameraPosition.
我怀疑 constructs
和 builds
之间是否有任何区别。不幸的是,整个互联网上没有任何关于它们差异的信息(如果存在)。有人可以帮忙吗?
编辑:
从评论中,有人指出它使用了 Builder 设计模式。虽然,我不明白为什么在这里使用它?冗余构造函数的需求是什么?谁能帮助我更好地理解?
我想 Google 的人这样做的原因是清晰和方便。
下面哪个更易读?
CameraPosition cameraPosition = new CameraPosition(latLng, 11.0f, 0, 0);
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(latLng)
.zoom(11.0f)
.build();
您无需查找方法签名即可知道要输入哪些参数。此外,您不必知道默认的倾斜度和方位角值。
Constructor
和Builder
在java中的区别对应于CameraPosition constructor
和CameraPosition build()
在[=31中的区别=]的相机API。以下是基本区别:
- 当你想减少参数的数量时,构建器比构造器有更好的用途。当涉及到 POJO 中的对象调用时,构造函数往往有很多参数。
- 构建器可以通过更简单的方式构建传递给方法的参数对象,从而间接帮助非构造函数方法。
- 如果参数太多,其中一些甚至为空,并且其中许多参数共享相同的数据类型,则应使用构建器。
- IDE 喜欢通过使用重构代码创建一个自动的新生成器 class 来利用生成器。
在 android 中为相机 API 编写代码时可以考虑所有这些要点,以获得更好和优化的性能。
代码实现参考如下link.
根据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?
此外,两者具有相同的描述:
Constructs a CameraPosition.
public CameraPosition build():
Builds a CameraPosition.
我怀疑 constructs
和 builds
之间是否有任何区别。不幸的是,整个互联网上没有任何关于它们差异的信息(如果存在)。有人可以帮忙吗?
编辑: 从评论中,有人指出它使用了 Builder 设计模式。虽然,我不明白为什么在这里使用它?冗余构造函数的需求是什么?谁能帮助我更好地理解?
我想 Google 的人这样做的原因是清晰和方便。
下面哪个更易读?
CameraPosition cameraPosition = new CameraPosition(latLng, 11.0f, 0, 0);
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(latLng)
.zoom(11.0f)
.build();
您无需查找方法签名即可知道要输入哪些参数。此外,您不必知道默认的倾斜度和方位角值。
Constructor
和Builder
在java中的区别对应于CameraPosition constructor
和CameraPosition build()
在[=31中的区别=]的相机API。以下是基本区别:
- 当你想减少参数的数量时,构建器比构造器有更好的用途。当涉及到 POJO 中的对象调用时,构造函数往往有很多参数。
- 构建器可以通过更简单的方式构建传递给方法的参数对象,从而间接帮助非构造函数方法。
- 如果参数太多,其中一些甚至为空,并且其中许多参数共享相同的数据类型,则应使用构建器。
- IDE 喜欢通过使用重构代码创建一个自动的新生成器 class 来利用生成器。
在 android 中为相机 API 编写代码时可以考虑所有这些要点,以获得更好和优化的性能。
代码实现参考如下link.