FMMap 是加载场景、显示模型、遍历模型等的主类,一个页面中必须且至少包含一个FMMap对象

模块: FMMap

实例化

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
)

自版本 v2.0.0 起,开始使用

根据类型别名获取所有楼层上面的该类型图层。

参数:

名称类型标记描述
layerAlias String | Array

别名,extent, model, label, facility,textMarker,imageMarker

callback Function

依次返回所有楼层的图层回调

名称类型标记描述
layer Object

查询到的某一楼层的图层

示例:

//隐藏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]

返回fengmap.FMMapCoord 地图坐标对象

coordScreenToMap

coordScreenToMap
(
  • x
  • y
  • z
)
fengmap.FMScreenCoord

屏幕坐标转地图坐标

参数:

名称类型标记描述
x Float

屏幕坐标点x值.

y Float

屏幕坐标点y值.

z Float

为当前楼层高度值和模型高度值之和.

Returns:

[fengmap.FMScreenCoord]

返回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:

[fengmap.Line]

线形对象

flash

flash
(
  • params
)
Null

Provided by the Navigation module.

闪烁效果(放大缩小)

参数:

名称类型标记描述
params Json

[{scale: time: callback:}]

Returns:

[Null]

[null]

fullScreenAvaliable

fullScreenAvaliable () Bool

获取浏览器支持全屏显示状态

Returns:

[Bool]

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:

[Array]

得到的地图元素数据

getFMGroup

getFMGroup
(
  • groupID
)
fengmap.FMGroup

根据楼层ID,获取某一层模型数据。

参数:

名称类型标记描述
groupID Number

模型id

Returns:

[fengmap.FMGroup]

返回group对象

getGestureEnableController

getGestureEnableController () fengmap.GestureEnableController 只读

获取手势绘制类

Returns:

[fengmap.GestureEnableController]

返回GestureEnableController对象

getLayerByAlias

getLayerByAlias
(
  • groupID
  • layerAlias
  • callback
)
Array

自版本 v2.0.0 起,开始使用

根据类型别名获取指定楼层上面的某图层

参数:

名称类型标记描述
groupID Int

楼层的groupID

layerAlias String

别名,extent, model, label, facility,textMarker,imageMarker

callback Function

查找到后的回调函数

Returns:

[Array]

包含该类型的图层数组

示例:

//隐藏1楼的公共设施层
map.getLayerByAlias(1,'facility',function(layer){
    layer.visible = false;
});

//隐藏所有楼层的公共设施层
map.callAllLayersByAlias('facility',function(layer){
    layer.visible = false;
});

getScalelevelValueByVectics

getScalelevelValueByVectics
(
  • startPnt
  • endPnt
)
Int

自版本 v2.0.0 起,开始使用

根据矩形左下角坐标和右上角坐标获取地图当前的显示级别

参数:

名称类型标记描述
startPnt fengmap.mapCoord

左下角坐标

endPnt fengmap.mapCoord

右上角坐标

Returns:

[Int]

当前级别

moveTo

moveTo
(
  • opts
)

视野中心移动到指定位置,如果不是当前聚焦层,将先设置目标层为聚焦层在跳转

参数:

名称类型标记描述
opts JSON
名称类型标记描述
x Float

地图坐标x值。

y Float

地图坐标y值。

z Float

地图坐标z值。

groupID Int

楼层id,跳转到指定位置,并聚焦该楼层。

time Int

目标层不是聚焦层时跳转的动画时间间隔。

callback Function

完成moveTo事件后的回调,返回目标层gid。

moveToCenter

moveToCenter
(
  • data
)
Null

将视频移动当前聚焦层的中心点

参数:

名称类型标记描述
data JSON

{x:, y:, groupID:, duration:(opt), callback:(opt)}

Returns:

[Null]

null

openMapById

openMapById
(
  • sid
  • failed
)

根据地图ID打开地图。

参数:

名称类型标记描述
sid String | Number

场景id

failed Function

遇到错误时的回调函数 (可选)

pickFilterFunction

pickFilterFunction
(
  • fm
)
Bool

拾取物体的过滤方法,可以自定义进行覆盖。可以根据返回的fm属性自定义设置某地图元素可否选中。

参数:

名称类型标记描述
fm JSON

拾取的物体的 fm 数据

Returns:

[Bool]

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的值

selectNull

selectNull ()

清空选中模型方法,把所有高亮的模型都取消高亮

setBackgroundColor

setBackgroundColor
(
  • color
  • alpha
)

自版本 v1.2.0 起,开始使用

设置背景颜色及透明度

参数:

名称类型标记描述
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
)

自版本 v1.2.0 起,开始使用

设置模型的拾取颜色

参数:

名称类型标记描述
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值

options

fengmap.MapOptions

地图初始化配置项

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

楼层显示/隐藏事件

Top