Class: FdViewPointsManager

FdTools. FdViewPointsManager

视点管理器,用组的形式管理视点,每个视点组可以进行连续播放


new FdViewPointsManager(viewer)

Parameters:
Name Type Description
viewer Freedo.Viewer

视景器

Example
var viewer = Freedo.FdApp.createDefaultViewer('freedoContainer');

var viewPointsManager = new Freedo.FdTools.FdViewPointsManager(viewer);

var currentGroupId = viewPointsManager.createGroup('Group_' + new Date().getTime());
var cameraInfo = Freedo.FdCamera.getCurrentCameraInfo(viewer.scene.camera);

viewPointsManager.appendViewpoint(currentGroupId, {
    name: '视点_' + new Date().getTime(),
    icon: imgData,
    cameraInfo: cameraInfo
});

Members


playingLoop :Boolean

获取视点是否在播放

Type:
  • Boolean
Example
var playingLoop = viewPointsManager.playingLoop;

playingLoop :Boolean

设置视点是否播放

Type:
  • Boolean
Example
viewPointsManager.playingLoop = true;

viewPointsOptions :Object

Type:
  • Object
Example
var viewPointsOptions = viewPointsManager.viewPointsOptions ;
for(var key of viewPointsOptions){
     var groupOption = key;
     var name = groupOption.name;
     var viewPointsList = groupOption.list;
     for(var i = 0 ;i <viewPointsList.length ;i++){
         var viewPointOption = viewPointsList[i] ;
         var viewPointName = viewPointOption.name ;
         var cameraInfo = viewPointOption.cameraInfo ;
     }
}

Methods


appendViewpoint(groupID, options)

在当前视点组列表的末尾增加一个视点

Parameters:
Name Type Description
groupID String

视点组ID

options Object

视点选项

Properties
Name Type Description
name String

视点名称

cameraInfo Array.<Number>

相机信息的数组,该数组的组成与FdCamera.getCurrentCameraInfo相同。

Returns:

添加成功返回true,否则返回false

Type
Boolean
Example
var currentGroupId;
currentGroupId = viewPointsManager.createGroup('Group_' + new Date().getTime());

var cameraInfo = Freedo.FdCamera.getCurrentCameraInfo(scene.camera);

viewPointsManager.appendViewpoint(currentGroupId, {
    name: '视点_' + new Date().getTime(),
    cameraInfo: cameraInfo
});

createGroup(groupName [, groupID])

给定视点组的名称,创建视点组

Parameters:
Name Type Argument Description
groupName String

视点组的名称

groupID String <optional>

视点组的Id,可省略,省略情况下用Guid作为组的Id

Returns:

返回视点组ID

Type
String
Example
var currentGroupId = viewPointsManager.createGroup('Group_' + new Date().getTime());

dispose()

重置视点组的所有资源,同时取消之前的飞行状态

Example
viewPointsManager.dispose();

flyTo(groupID, index)

飞入某个视点

Parameters:
Name Type Description
groupID String

视点组ID

index Number

指定视点组列表中的位置

Returns:

成功返回true,否则返回false

Type
Boolean
Example
viewPointsManager.flyTo(currentGroupId, 0);

getAllGroupIDs()

获取所有视点组的ID

Returns:

返回一个包含视点组ID的数组

Type
Array.<String>
Example
var groupIdsArray = viewPointsManager.getAllGroupIDs();

getCurrentGroupID()

获取当前组ID

Returns:

组ID

Type
String
Example
var currentGroupID = viewPointsManager.getCurrentGroupID();

getGroupName(groupID)

获取视点组的名字

Parameters:
Name Type Description
groupID String

视点组ID

Returns:

视点组名称,无效则返回:''

Type
String
Example
var groupName = viewPointsManager.getGroupName(currentGroupId); 

getGroupOptions(groupID)

获取组的选项

Parameters:
Name Type Description
groupID String

组ID

options.name String

视点组名称

options.list Array.<Object>

视点组里的视点列表,包含该组内所有的视点及其属性

Returns:

视点组参数

Type
Object
Example
var groupOptions = viewPointsManager.getGroupOptions(currentGroupId); 

getGroupPlayingGroupID()

获取正在播放的视点组ID

Returns:

视点组ID

Type
String
Example
var playingGroupId = viewPointsManager.getGroupPlayingGroupID();

getGroupPlayingIndex()

获取正在播放的视点组的视点索引

Returns:

返回视点索引

Type
Number
Example
var playingIndex = viewPointsManager.getGroupPlayingIndex();

getGroupPlayingStatus()

获取视点组的播放状态

Returns:

播放状态可能是 Playing/Stopped/Paused

Type
String
Example
var playingStatus = viewPointsManager.getGroupPlayingStatus();

getViewPoint(groupID, index)

获取视点属性

Parameters:
Name Type Description
groupID String

视点组ID

index Number

指定视点组列表中的位置

options.name String

视点名称

options.cameraInfo Array.<Number>

相机信息的数组,该数组的组成与FdCamera.getCurrentCameraInfo相同。

Returns:

options 视点选项,目前只有name,cameraInfo

Type
Object
Example
var viewPointOpt = viewPointsManager.getViewPoint(currentGroupId, 0);

getViewpointsLength(groupID)

获取视点组中视点的数量

Parameters:
Name Type Description
groupID String

视点组ID

Returns:

视点组中视点的数量

Type
Number
Example
var viewPointsLengthInGroup = viewPointsManager.getViewpointsLength(currentGroupId); 

goTo(groupID, index)

跳入某个视点

Parameters:
Name Type Description
groupID String

视点组ID

index Number

指定视点组列表中的位置

Returns:

成功返回true,否则返回false

Type
Boolean
Example
viewPointsManager.goTo(currentGroupId, 0);

insertViewpoint(groupID, options, index)

在视点组列表的某个位置插入一个视点

Parameters:
Name Type Description
groupID String

视点组ID

options Object

视点组选项

Properties
Name Type Description
name String

视点名称

cameraInfo Array.<Number>

相机信息的数组,该数组的组成与FdCamera.getCurrentCameraInfo相同。

index Number

指定视点组列表中的位置

Returns:

添加成功返回true,否则返回false

Type
Boolean
Example
var currentGroupId;
currentGroupId = viewPointsManager.createGroup('Group_' + new Date().getTime());

var cameraInfo = Freedo.FdCamera.getCurrentCameraInfo(scene.camera);
viewPointsManager.insertViewpoint(currentGroupId, {
    name: '视点_' + new Date().getTime(),
    cameraInfo: cameraInfo
} ,0 );

on(listener [, scope])

注册捕捉FdViewpointsManager类的回调函数。 事件类型有:PlayingGroupCurrentIndexChanged/PlayingGroupStatusChanged/PlayingGroupPropertyChanged,GroupsChanged,ViewPointChanged

Parameters:
Name Type Argument Description
listener FdTools.FdViewpointsManager~FdViewpointsManagerCallback

当有事件触发时被执行的函数。

scope Object <optional>

listener函数执行时的绑定的对象。

Returns:

返回一个函数,调用该函数可以取消监听。

Type
Freedo.Event~RemoveCallback
Example
viewPointsManager.on( function(eventType, param){
 if (eventType === 'CurrentIndexChanged') {
     //do something
 } else if (eventType === 'StatusChanged') {
    //do something
 } else if (eventType === 'PropertyChanged') {
    //do something
 }
})

pauseGroup()

暂停正在播放的视点组,当前视点位置不变

Example
viewPointsManager.pauseGroup();

removeAllGroups()

删除所有视点组

Example
viewPointsManager.removeAllGroups(); 

removeGroup(groupID)

删除视点组

Parameters:
Name Type Description
groupID String

视点组ID

Returns:

成功返回true,否则返回false

Type
Boolean
Example
viewPointsManager.removeGroup(currentGroupId);

removeViewpoint(groupID, index)

删除视点

Parameters:
Name Type Description
groupID String

视点组ID

index Number

指定视点组列表中的位置

Example
viewPointsManager.removeViewpoint(currentGroupId, 0); 

setCurrentGroupID(组ID)

设置当前组ID

Parameters:
Name Type Description
组ID String
Example
viewPointsManager.setGroupPlayingGroupID(currentGroupID);

setGroupName(groupID, groupName)

设置组的名字

Parameters:
Name Type Description
groupID String

组ID

groupName String

组名称

Example
viewPointsManager.setGroupName(currentGroupId, 'NewGroupName'); 

setGroupPlayingIndex(index)

设置当前播放的视点索引,并同时跳入该视点位置

Parameters:
Name Type Description
index Number

视点索引

Example
viewPointsManager.setGroupPlayingIndex(0);

setViewpoint(groupID, index, options)

设置视点

Parameters:
Name Type Description
groupID String

视点组ID

index Number

指定视点组列表中的位置

options Object

视点选项,目前只有cameraInfo

Properties
Name Type Description
name String

视点名称

cameraInfo Array.<Number>

相机信息的数组,该数组的组成与FdCamera.getCurrentCameraInfo相同。

Returns:

设置成功返回true,否则返回false

Type
Boolean
Example
var cameraInfo = Freedo.FdCamera.getCurrentCameraInfo(scene.camera);
viewPointsManager.setViewpoint(currentGroupId, 0, {
    name: '视点_' + new Date().getTime(),
    cameraInfo: cameraInfo
} );

startOrResumeGroup(groupID)

播放或者恢复播放视点组

Parameters:
Name Type Description
groupID String

视点组ID

Example
viewPointsManager.startOrResumeGroup(currentGroupId);

stopGroup()

停止正在播放的视点组,当前视点回到第一个视点。

Example
viewPointsManager.stopGroup();