fengmap.FMMap 类
FMMap 是加载场景、显示模型、遍历模型等的主类,一个页面中必须且至少包含一个FMMap对象
方法
- addLocationMarker
- callAllLayersByAlias
- clearLineMark
- coordMapToScreen
- coordScreenToMap
- drawLineMark
- flash
- fullScreenAvaliable
- getDatasByAlias
- getFMGroup
- getGestureEnableController
- getLayerByAlias
- getScalelevelValueByVectics
- moveTo
- moveToCenter
- openMapById
- pickFilterFunction
- removeLocationMarker
- rotateTo
- scaleLevelIn
- scaleLevelOut
- search
- selectNull
- setBackgroundColor
- setMapScaleLevelRange
- setMapScaleRange
- setModelSelectColor
- setScaleLevelLimit
- storeSelect
- tiltTo
- zoomIn
- zoomOut
属性
实例化
fengmap.FMMap
fengmap.FMMap
(
-
opts
)
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
opts
| fengmap.MapOptions | 地图配置对象 |
示例:
//初始化地图对象
//默认使用在线数据,从蜂鸟视图数据服务器加载模型数据
var map = new fengmap.FMMap({
container : document.body
});
map.openMapById(1);//打开场景id=1的模型
//根据数据实际位置加载地图
var map = new fengmap.FMMap({
container : document.body,
mapServerURL:'data/10347',
mapThemeURL : 'data/theme'
});
map.openMapById(1);//打开场景id=1的模型
addLocationMarker
addLocationMarker
(
-
lm
)
添加定位标注物
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
lm
| fengmap.FMLocationMarker | FMLocationMarker对象 |
callAllLayersByAlias
callAllLayersByAlias
(
-
layerAlias
-
callback
)
根据类型别名获取所有楼层上面的该类型图层。
参数:
名称 | 类型 | 标记 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
layerAlias
| String | Array | 别名,extent, model, label, facility,textMarker,imageMarker | |||||||||
callback
| Function | 依次返回所有楼层的图层回调
|
示例:
//隐藏1楼的公共设施层
map.getLayerByAlias(1,'facility',function(layer){
layer.visible = false;
});
//隐藏所有楼层的公共设施层
map.callAllLayersByAlias('facility',function(layer){
layer.visible = false;
});
clearLineMark
clearLineMark
(
-
lm
)
清除线图层
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
lm
| fengmap.Line | fengmap.Line的一个或多个对象, 如为空, 则会删除地图中所有的线型 |
coordMapToScreen
coordMapToScreen
(
-
x
-
y
-
z
)
fengmap.FMMapCoord
地图坐标转屏幕坐标
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
x
| Float | 地图坐标点x值 | |
y
| Float | 地图坐标点y值 | |
z
| Float | 地图坐标点z值 |
Returns:
返回fengmap.FMMapCoord 地图坐标对象
coordScreenToMap
coordScreenToMap
(
-
x
-
y
-
z
)
fengmap.FMScreenCoord
屏幕坐标转地图坐标
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
x
| Float | 屏幕坐标点x值. | |
y
| Float | 屏幕坐标点y值. | |
z
| Float | 为当前楼层高度值和模型高度值之和. |
Returns:
返回fengmap.FMScreenCoord 地图坐标对象
示例:
//屏幕坐标转地图坐标
//为地图容器添加鼠标滑过事件,获取屏幕坐标后转地图坐标
container.onmousemove = function(event) {
//获取地图视图的边框
var box = (event.target || event.srcElement).getBoundingClientRect();
var currentGid = map.focusGroupID;
//屏幕坐标
var screenPnt = {
x: event.clientX - box.left, //把当前的clientX减去当前容器相对左边的距离得到实际的x坐标
y: event.clientY - box.top,//把当前的clientY减去当前容器相对顶边的距离得到实际的x坐标
z: map.getGroupHeight(currentGid) + map.layerLocalHeight //当前楼层高度 + 图层相对高度(固定值)
};
var pnt = map.coordScreenToMap(screenPnt.x, screenPnt.y, screenPnt.z); //转地图坐标
console.log(pnt);
}
drawLineMark
drawLineMark
(
-
lm
-
style
)
fengmap.Line
绘制线
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
lm
| fengmap.FMLineMarker | FMLineMarker对象, 还可以传入一个坐标(FMMapCoord)的数组,方便快速的创建自定义线型 | |
style
| JSON | 线形的样式(可选参数), 但在创建自定义线型时, 推荐传入此参数 |
Returns:
线形对象
flash
flash
(
-
params
)
Null
闪烁效果(放大缩小)
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
params
| Json | [{scale: time: callback:}] |
Returns:
[null]
fullScreenAvaliable
fullScreenAvaliable
()
Bool
获取浏览器支持全屏显示状态
Returns:
true支持,false不支持。返回true时才能使用fullScreen属性设置全屏
getDatasByAlias
getDatasByAlias
(
-
groupID
-
alias
-
filter
)
Array
根据类型别名获取地图元素数据
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
groupID
| Int | 楼层的groupID | |
alias
| String | Array | 别名, 可以为一个string值或一个string数组, 别名: extent, model, label, facility,textMarker,imageMarker | |
filter
| Function | 过滤方法 |
Returns:
得到的地图元素数据
getFMGroup
getFMGroup
(
-
groupID
)
fengmap.FMGroup
根据楼层ID,获取某一层模型数据。
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
groupID
| Number | 模型id |
Returns:
返回group对象
getGestureEnableController
getGestureEnableController
()
fengmap.GestureEnableController
只读
获取手势绘制类
Returns:
返回GestureEnableController对象
getLayerByAlias
getLayerByAlias
(
-
groupID
-
layerAlias
-
callback
)
Array
根据类型别名获取指定楼层上面的某图层
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
groupID
| Int | 楼层的groupID | |
layerAlias
| String | 别名,extent, model, label, facility,textMarker,imageMarker | |
callback
| Function | 查找到后的回调函数 |
Returns:
包含该类型的图层数组
示例:
//隐藏1楼的公共设施层
map.getLayerByAlias(1,'facility',function(layer){
layer.visible = false;
});
//隐藏所有楼层的公共设施层
map.callAllLayersByAlias('facility',function(layer){
layer.visible = false;
});
getScalelevelValueByVectics
getScalelevelValueByVectics
(
-
startPnt
-
endPnt
)
Int
根据矩形左下角坐标和右上角坐标获取地图当前的显示级别
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
startPnt
| fengmap.mapCoord | 左下角坐标 | |
endPnt
| fengmap.mapCoord | 右上角坐标 |
Returns:
当前级别
moveTo
moveTo
(
-
opts
)
视野中心移动到指定位置,如果不是当前聚焦层,将先设置目标层为聚焦层在跳转
参数:
名称 | 类型 | 标记 | 描述 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
opts
| JSON |
|
moveToCenter
moveToCenter
(
-
data
)
Null
将视频移动当前聚焦层的中心点
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
data
| JSON | {x:, y:, groupID:, duration:(opt), callback:(opt)} |
Returns:
null
openMapById
openMapById
(
-
sid
-
failed
)
根据地图ID打开地图。
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
sid
| String | Number | 场景id | |
failed
| Function | 遇到错误时的回调函数 (可选) |
pickFilterFunction
pickFilterFunction
(
-
fm
)
Bool
拾取物体的过滤方法,可以自定义进行覆盖。可以根据返回的fm属性自定义设置某地图元素可否选中。
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
fm
| JSON | 拾取的物体的 fm 数据 |
Returns:
bool值,是否支持点击高亮。true支持点击高亮,false不支持高亮
示例:
//过滤不允许点击的地图元素,设置为true为允许点击,设置为false为不允许点击
map.pickFilterFunction = function(event) {
//如设置点击墙模型时不高亮
if(event.nodeType == fengmap.FMNodeType.MODEL &&
event.typeID == "300000") {
return false;
}
return true;
};
removeLocationMarker
removeLocationMarker
(
-
lm
)
移除定位标注物
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
lm
| fengmap.FMLocationMarker | FMLocationMarker对象 |
rotateTo
rotateTo
(
-
params
)
将地图水平旋转至
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
params
| Json | {to: 45, duration: 1, callback: function() {}} |
scaleLevelIn
scaleLevelIn
()
模型放大。按级别放大,每次放大1级,改变map.scaleLevel的值
scaleLevelOut
scaleLevelOut
()
模型缩小。按级别缩小,每次缩小1级,改变map.scaleLevel的值
search
search
(
-
map
-
gids
-
callback
-
query
)
Array
数据检索方法
参数:
名称 | 类型 | 标记 | 描述 | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
map
| fengmap.FMMap | 当前地图对象。 | |||||||||||||||||||||||||||||||||
gids
| Int | Array | 待查询的楼层ID数组或某一楼层的楼层ID | |||||||||||||||||||||||||||||||||
callback
| Function | 完成查询后的回调,返回查询结果 | |||||||||||||||||||||||||||||||||
query
| JSON |
|
Returns:
检索到的数据
示例:
//请求参数,查询类型为所有元素
var request = {
types: ['model', 'facility', 'label', 'textMarker', 'imageMarker', 'locationMarker'] //所有可省略,默认为所有地图元素
};
//搜索分析:楼层groupID=1下的所有类型的地图元素
fengmap.MapUtil.search(map, 1, request, function(result) {
var models = result;
});
//查询所有楼层的所有类型的地图元素
fengmap.MapUtil.search(map, 'all', request, function(result) {
});
//查询楼层1和楼层2上的所有地图元素
fengmap.MapUtil.search(map, [1,2], request, function(result) {
});
selectNull
selectNull
()
清空选中模型方法,把所有高亮的模型都取消高亮
setBackgroundColor
setBackgroundColor
(
-
color
-
alpha
)
设置背景颜色及透明度
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
color
| Int | 十六进制颜色值或CSS颜色样式: 0xFF0000 | '#FF0000' | |
alpha
| Float | 透明度。在0 ~ 1之间取值。 |
setMapScaleLevelRange
setMapScaleLevelRange
(
-
min
-
max
)
设置地图比例尺 级别 范围
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
min
| Float | 最小比例尺级别 如: 16, 则地图最小比例尺级别为16,对应的比例尺为 1:9028 (厘米) | |
max
| Float | 最大比例尺级别 如: 23, 则地图最大比例尺级别为24,对应的比例尺为 1:70 (厘米) |
setMapScaleRange
setMapScaleRange
(
-
min
-
max
)
设置地图比例尺范围
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
min
| Float | 最小比例尺 如: 500, 则地图最小比例尺为 1:500 | |
max
| Float | 最大比例尺 如: 20000, 则地图最大比例尺为 1:20000 |
setModelSelectColor
setModelSelectColor
(
-
color
-
alpha
)
设置模型的拾取颜色
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
color
| Color | 十六进制颜色值或CSS颜色样式: 0xFF0000 | '#FF0000' | |
alpha
| Float | 透明度。在0 ~ 1之间取值。 |
setScaleLevelLimit
setScaleLevelLimit
(
-
minLevel
-
maxLevel
)
限制最大最小级别
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
minLevel
| Int | 0~6之间取值 | |
maxLevel
| Int | 0~6之间取值 |
storeSelect
storeSelect
(
-
model
-
isSelected
-
multiSelect
)
选中模型方法
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
model
| fengmap.FMModel | 模型对象 | |
isSelected
| Boolean | 是否选中 | |
multiSelect
| Boolean | 是否保持上一次选中模型的状态。false是不保存,即地图中只有当前设置的模型高亮,其他模型不高亮。ture则不清空上次的选中状态,都高亮。 |
tiltTo
tiltTo
(
-
params
)
将地图的倾斜角度缓动至
参数:
名称 | 类型 | 标记 | 描述 |
---|---|---|---|
params
| Json | {to: 45, duration: 1, callback: function() {}} |
zoomIn
zoomIn
()
模型放大。不是成比例缩放的,无极缩放,和当前的saclelevel无关
zoomOut
zoomOut
()
模型缩小。不是成比例缩放的,无极缩放,和当前的saclelevel无关
backgroundColor
Int
模型视窗的背景色
center
Unknown
获取地图的小心位置(墨卡拖坐标系)
focusGroupID
Number | Object
设置groupId相关楼层为当前楼层,支持只传楼层id,或Json对象
默认值:
第一层
示例:
//方式1:设置聚焦层
map.focusGroupID = 1;
//方式2:设置gid=1的楼层为当前聚焦层,且单次切换楼层的动画时间为0。
map.focusGroupID = {gid: 1, time: 0}
fullScreen
Boolean
设置模型窗口全屏状态
默认值:
false
groupIDs
Array
获取当前模型的所有楼层ID集合
groupSpace
Number
获取/设置 当前地图的楼层间距.
layerLocalHeight
Int
只读
地图针对楼层高度的偏移量,坐标转换的时候z值需要楼层高度+此偏移
lineStyle
JSON style 线样式
设置线样式,包含颜色、线宽、线型的实体和间隔长度。
默认值:
{color: 0xff0000,lineWidth: 8,alpha: 0.8,dash: {size: 1,gap: 1}}
属性值详情:
-
style.lineType
fengmap.FMLineType线型
-
style.smooth
Boolean是否开启平滑线功能
-
style.lineWidth
Number设置线宽
-
style.godColor
String设置线的颜色,十六进制颜色值。如:'#FF0000'
-
style.godEdgeColor
Boolean设置边线的颜色,十六进制颜色值。如:'#FF0000'
-
style.alpha
Boolean先透明度设置。0~1之间取值
-
style.dash
Json分割线效果配置
-
style.dash.size
Number分割线的长度
-
style.dash.gap
Number分割线后的每两条线的间隔
mapScale
Float
得到/设置地图比例尺 1: 500 = 1厘米对应场景中的500厘米 在设置时, 可以传入Json, {scale:1800, duration:1, callback: function() {}}
mapScaleLevel
Int
得到/设置地图的比例尺级别 1~29 级, 一般室内地图所用到的级别范围在 16~23级 在设置时, 可以传入Json, {level:18, duration:1, callback: function() {}}
maxScaleLevel
Int
设置地图的最大显示级别,取值为0-6之间的整数。
maxTitleAngle
Float
得到/设置地图的最大倾斜角度
maxX
Float
获取地图范围的最大X值
maxY
Float
获取地图范围的最大Y值
minScaleLevel
Int
设置地图的最小显示级别,取值为0-6之间的整数。
minX
Float
获取地图范围的最小X值
minY
Float
获取地图范围的最小Y值
rotateAngle
Float
旋转度,取值范围 -360 ~ 360,正为顺时针,负为逆时针
scaleLevel
Int
设置地图的显示级别,取值为0-6之间的整数,值越小表示地图越大。
searchAnalyser
fengmap.FMSearchAnalyser
只读
获取查询类,使用此类可根据ID,GroupID ,KeyWord, name等查询模型、公共设施、自定义标注等地图元素。
showCompass
Boolean
指南针
默认值:
false
themeName
String
设置主题名称,设置在openMapById方法之前,或在LoadComplete事件之后设置
默认值:
2001
示例:
map.themeName = '2001';
tiltAngle
Float
倾斜度,取值范围 0 - 60
viewMode
Enum
设置模型显示模式 二维/三维
默认值:
fengmap.FMViewMode.MODE_3D
示例:
map.viewMode = fengmap.FMViewMode.MODE_3D; //三维模式
map.viewMode = fengmap.FMViewMode.MODE_2D; //二维模式
visibleGroupIDs
Array
设置可见的楼层集合
focusGroupIDChanged
聚焦楼层改进事件
loadComplete
地图加载完成事件
示例:
map.on('loadComplete', function(event) {
console.log('loadComplete', event);
});
mapClickNode
模型点击事件
示例:
map.on('mapClickNode', function(event) {
console.log('mapClickNode', event);
//event.nodeType 拾取到的地图元素类型fengmap.FMNodeType
//event.target 拾取到的地图元素。包括地图元素的各个属性值,如FID,ID,坐标,GroupID,关联的label等
//event.eventInfo
//event.eventInfo.coord 点击位置的地图坐标
//event.eventInfo.domEvent 对应点击位置的页面元素。即是关联mouseup事件的event参数,包括屏幕坐标、关联页面元素dom结点等
});
mapScaleLevelChanged
比例尺级别改变事件
scaleLevelChanged
地图级别变化事件.比如pc端鼠标滚动放大\缩小事件等.
visibleGroupIDsChanged
楼层显示/隐藏事件