Source: Layers/ThirdPersonView.js

import Layer from './Layer.js';

/**
 * 第三人称视角图层
 * @extends Layer
 */
class ThirdPersonLayer extends Layer {
	defaultParams = {
		target: null,//跟踪物体
		viewRotation: 0,//观看视角
		targetRotation: 0,//观看物体默认旋转角度
		autoUpdate: false,
		lockRotation: true,//锁定视角
	}

    /**
     * 构造函数
     * @param {Object} target - 需要摄像机跟随的物体
     * @param {Number} viewRotation - 观看视角(deg)
     * @param {Number} targetRotation - 物体初始旋转角度,用来配合摄像机位置  (deg)
     */
	constructor(config) {
		super(config);
		for (var x in this.defaultParams) {
			if (typeof (this[x]) == "undefined") {
				this[x] = this.defaultParams[x];
			}
		}
	};

	//图层添加之后的处理函数
	onAdd(map) {
		this.pigeonMap = map;
		this.initCamera();
	}

	initCamera() {

	}

	update() {
		if (this.autoUpdate)
			this.updateCamera();
	}

    /**
     * 更新相机,物体移动后需要更新相机,重新计算相机位置
     */
	updateCamera(rotation) {
		if (!this.target) return false;
		let lnglat = this.target.coordinates;
		if (this.lockRotation) {
			if (!rotation) rotation = this.target.rotation.z * 180 / Math.PI + this.targetRotation + this.viewRotation
			this.pigeonMap.cameraControl.setRotation(rotation);
		}
		this.pigeonMap.cameraControl.setCenter(lnglat);
		this.pigeonMap.cameraControl.updateCamera();
	}
};
export default ThirdPersonLayer;