Index

FengMap JavaScript SDK v2.7.2 兼容性指南

在 v2.3.0 及以上版本中,我们优化了底层引擎的部分逻辑和代码结构,某些接口的使用方式将会发生改变,针对新的更新,您的部分旧代码可能需要更新。

1. mapClickNode 鼠标拾取事件变更

在 v2.3.0及以上 版本中,mapClickNode 事件的结构发生了改变,如果不更新代码,那么 v2.3.0及以上 版本中使用旧的接口调用方式可能会引发异常 。在 v2.3.0及以上 版本中,通过事件拾取的对象都包含在了 event.target 对象中,如果要获取鼠标点击事件拾取对象的属性,请从 event.target 获取。event.targt 对象说明

2. 统一地图比例尺级别

在 v2.3.0及以上 版本中地图比例尺级别范围取值从1到29级,默认显示的比例尺级别为20,通过修改defaultMapScaleLevel的值调整地图初始化的显示级别。

3. 地图查询器

在 v2.3.0及以上 版本中,将使用新的地图查询器 FMSearchAnalyser 进行地图要素的查询。使用查询请求构造器 FMSearchRequest 构造查询条件。

     var searchAnalyser = new fengmap.FMSearchAnalyser(map);
     var searchRequest = new fengmap.FMSearchRequest();
     searchRequest.keyword = '出入口';   //属性调用
     var sortRes = [];
     searchAnalyser.query(searchRequest, function (result) {
        sortRes = result;
        var oneNode = result[0].target; //从target 结点下获取fengmap.FMNode 对象。
     });

4. 地图控件布局

在 v2.3.0及以上 版本中,地图控件布局位置不再内置默认的偏移量,用户需要手动添加位置偏移来调整控件的位置。

    var scrollFloorCtlOpt = new fengmap.ControlOptions({
        //默认在右上角 
        position: fengmap.controlPositon.RIGHT_TOP, //右上角
        //默认显示楼层的个数
        showBtnCount: 3,
        //初始是否是多层显示,默认单层显示false
        allLayer: false,
        //是否显示多层/单层切换按钮
        needAllLayerBtn: true,
        //位置x,y的偏移量
        offset: {
            x: -20, //向左偏移
            y: 20   //向下偏移
        }
    });

5. 控件相关对象类更名

在 v2.3.0及以上 版本中,我们对部分类对象进行了更名,使用旧版本的类型依然能够兼容,不过我们还是强烈建议您在开发时使用新的对象名称。

对象 旧版本 v2.3.0及以上
控件配置类 fengmap.controlOptions fengmap.FMControlOptions
控件布局位置枚举类 fengmap.controlPositon fengmap.FMControlPosition
楼层切换控件(滚动列表列表) fengmap.scrollGroupsControl fengmap.FMScrollGroupsControl
地图缩放控件 fengmap.zoomControl fengmap.FMZoomControl
整合工具控件 fengmap.toolControl fengmap.FMToolControl
楼层切换控件(常规按钮列表) fengmap.buttonGroupsControl fengmap.FMButtonGroupsControl

6. 分楼层加载地图切片数据

在 v2.3.0及以上 版本中,我们对数据的组织结构进行了优化,可通过在 FMMap 的构造参数中,通过设置 tile 属性,开启切片方式加载地图。

注意:切片方式加载地图只适用于从您的本地服务器加载地图文件,不适用于从蜂鸟云在线加载地图的方式。


    var mapOptions = {
        container: document.getElementById('fengMap'),
        appName: '',
        key: '',
        tile = true //开启切片加载
    }

    map = new fengmap.FMMap(mapOptions);

7. 废弃 FMMap.scaleLevel 属性

在 v2.3.0及以上 版本中,通过 FMMap.mapScaleLevel 修改地图级别。

8. 通过使用 selected 属性设置地图 3D 对象的高亮

9. 废弃 FMap.storeFlash() 方法

在 v2.3.0及以上 版本中,要使模型高亮并闪烁,需要先通过鼠标点击事件或者搜索器获取到地图 3D 对象,通过 FMModel.flash() 方法,设置该对象闪烁。

10. 地图对象的eName 属性更名

旧版本 v2.3.0及以上 版本
eName ename

11. 新增覆盖物图层避让方法和单个元素是否避让的控制,如针对 FMImageMarkerLayer 的避让方法 avoidFMImageMarker 的避让方法 avoid

12. 废弃模型对象 fengmap.FMStoreModel 对象,使用 fengmap.FMModel 代替。

13. 重新定义 FMMap.moveTo 方法。

在v2.3.0及以上 版本如果groupID变化时会自动切换焦点层,在moveTo动画的过程中避免使用焦点层设置(FMMap.focusGroupID)显示楼层设置等方法 会引起地图显示视角错误的问题。

14. 重新定义覆盖物 alwaysShow 方法

在v2.3.0及以上 版本设置alwaysShow会始终保持元素最后渲染,不受所在楼层及所在图层隐藏显示的影响。如果需要调用alwaysShow需要用户在楼层或图层不显示时使用show属性控制元素的显示隐藏。需要元素强制显示的情况下,建议使用该方法。

15. FMGroup 对象上获取 layer 的方式

在 v2.3.0 以前,FMGroup.layers 是一个数组,我们可以通过以下方式获取指定楼层中的任意图层:

map.getFMGroup(1).layers[i] //i 为数组索引

在 v2.3.0 中,用户可以直接通过图层的别名 alias 进行检索:

map.getFMGroup(1).layers['label'][0] //由于具有相同 alias 的图层是可能出现多个的,因此通过 alias 获取的对象为一个数组,我们还需要一个数组索引来获取多个相同类型的图层中的某一个图层对象。 

更多内容,请访问 蜂鸟云平台