1.3.1 • Published 1 year ago

floor-structure v1.3.1

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

组件安装

npm i -D floor-structure

组件注册

1、在main.js中注册组件

import floorStructure from "floor-structure";
import "floor-structure/floor-structure.css";
Vue.use(floorStructure);

2、 在指定容器中引入组件

<template>
  <floor-structure>
    <!-- 你的内容 -->
  </floor-structure>
</template>

3、 组件依赖

你的前端工程中需要引入minemap.js

使用方法

配置项:options

  • 类型Object

  • 默认值:

settings: {
    // 地图初始状态显示
    mapState: {
        mapInit: true, //是否需要地图容器(true:组件内初始化地图 false:使用已有地图容器)
        hiddenExtrusion: true, //是否自动关闭底图立体建筑物图层
        //mapInit为true时,以下map配置为必须
        serviceUrl: "//{ip}:{port}", // 地图服务地址
        solution: '地图方案号',
        center: [106.69715, 26.52642],
        zoom: 16.5,
        minZoom: 3,
        maxZoom: 19,
        pitch: 30,
        bearing: 0,
        projection: "LATLON" //投影方式:经纬度投影 LATLON,墨卡托投影 MERCATOR
    },
    // 白模建筑物设置
    extrusionStyle: {
        buildingUrl: "白模pbf接口完整地址", //白模pbf地址
        sourceLayer: "buildingLayer", //pbf接口对应source-layer
        beforeLayerId: "", //白模图层顺序控制:置于beforeLayerId图层之下
        minZoom: 14, //白模图层最小显示zoom级别
        maxZoom: 19, //白模图层最大显示zoom级别
        buildingIdField: "identity", //建筑物id字段名
        buildingHeightField: "levels", // 建筑物高度字段名
        buildingFlagField: "flag", // 是否有单体化字段名
        normalColor: "#616060", // 正常白模建筑颜色值和透明度
        normalOpacity: 0.5,
        hoverColor: "#ff0000", // 白模建筑鼠标hover颜色值和透明度
        hoverOpacity: 0.5,
        activeColor: "#616060", // 有单体化建筑色值和透明度
        activeOpacity: 0.65,
    },
    // 单体化信息设置
    buildingInfo: {
        requestUrl:
            '{根据建筑物id获取建筑物信息接口地址}?id=', //根据建筑物id获取建筑物信息(单元数、楼层数、房间数等其他信息)
        minZoom: 14, //单体化图层最小显示zoom级别
        maxZoom: 19, //单体化图层最小显示zoom级别
        flyToZoom: 18, //单体化状态默认地图级别和倾角
        flyToPitch: 45,
        flyToDuration: 2000,
        resultFields: ["result"],
        buildingNameField: "buildingName", //以上接口获取建筑物名称字段
        floorNumField: "floorNum", //楼层数字段名
        unitNumField: "unitNum", // 单元数字段名
        roomNumField: "roomNum", // 房间数字段名
        geometryField: "geometry", // 建筑物集合信息字段名
        normalColor: "#1e2dac", //单体化初始颜色
        normalOpacity: 0.7, //单体化初始透明度
        hoverColor: "#3243ec", //鼠标移入单体化颜色
        activeColor: "#800505", //选中单体化初始颜色
        spaceColor: "#aac2f5", //单元/楼层间隔颜色
        floorSpace: 0.4, //楼层间隔(米)
        unitSpace: 0.000001, //单元间隔(经纬度差值)
        unitTimer: 2000, //单体化时间间隔
        showInfoModal: true, //是否显示楼层信息弹窗
        canActiveBuilding: false, //是否可以通过建筑物名称选中楼栋单体化
        closeModalType: 2, //1-关闭弹窗同时取消单体化状态,2-只关闭弹窗取消高亮
        modalShowFollowBuilding: 'zoom', //zoom-zoom事件跟随,zoomend-zoomend事件跟随,null-不跟随单体化显隐
    },
    //弹框等样式设置
    theme: {
        //页面主题样式
        textNormalColor: "#32353C", //常规字体色
        textLightColor: "#999fae", //副标题字体色-比常规字体略浅
        textHoverColor: "#4859FF", //鼠标移入字体色
        textActiveColor: "#4859FF", //激活状态字体色
        normalIconColor: "#4859FF", //图标可用状态颜色
        disabledIconColor: "rgba(72,89,255,0.4)", //图标禁用状态颜色
        normalBgColor: "#ffffff", //面板背景色
        normalBorderColor: "#ffffff", //面板边框色
        activeBgColor: "rgba(72,89,255,0.6)", //选中状态背景色
        activeTextColor: "#ffffff", //选中状态背景色
        floorBorderColor: "#BAC0FA", //楼层边框色
        floorBgColor: "rgba(72,89,255,0.1)", //楼层面板背景色
        unitSplitColor: "#E6E9F0", //单元分割线色
        textArrowTipColor: "#7380FF", //楼层面板边框色
        textArrowTipStyle: 'simple'  // complex-三箭头样式,simple-单箭头
    },
},

信息接收

<floor-structure
  :options="settings"
  @info="getExtrusionInfo"
  @buildingInfo="getBuildingInfo"
  @buildingFlag="getBuildingFlag"
  @error="getErrorInfo"
  @close="closeModalHandle"
  @zoomFlag="setMarkerShowHandle"
  @mapLoaded="mapLoadedHandle"
  ref="floor-structure"
>
    <!-- 你的内容 -->
</floor-structure>
  • buildingFlag: 当前建筑物是否有单体化信息,1-有,0-无
  • buildingInfo: 点击白膜建筑获取具体楼栋信息(单元数、层数、房间数、楼栋中心点)
  • info: 选中具体单元、层、房间,抛出当前选中信息(type:unit-单元、floor-层、room-房间, data: 具体信息 buildingId、buildingName、unit、floor、room)
  • zoomFlag: 根据地图 zoom 缩放,达到单体化显隐的地图级别,抛出信息:true-显示、false-隐藏
  • mapLoaded: 地图初始化完成,抛出地图对象map
  • close: 弹窗关闭抛出信号
  • error: 抛出的错误信息

已有地图容器接入

  • 执行 setMapLoaded 传入已有地图对象
  • 将地图容器放入 floor-structure 标签内(使 marker 样式生效)
    <floor-structure
     :options="settings"
     ref="floor-structure"
     >
    <MapContainer @loaded="setMapLoaded" />
    </floor-structure>

自定义交互

1、 使用已有地图对象

//如果使用已有地图对象,需要在地图加载完成后将map对象赋值给组件
this.$refs["floor-structure"].setMapLoaded(map);

2、 清除弹窗保留单体化

this.$refs["floor-structure"].clearModalOnly();

3、 动态清除单体化和弹窗信息

this.$refs["floor-structure"].clearBuildingExtrusion();

4、 动态单体化高亮

/**
 * 动态单体化高亮
 * @param {String} buildingId 建筑物ID
 * @param {Number} unitNum 单元号
 * @param {Number} floorNum 楼层号
 * @returns void
 */
this.$refs["floor-structure"].clearBuildingExtrusion(
    buildingId,
    unitNum,
    floorNum
);

5、 动态清除单体化高亮

this.$refs["floor-structure"].resetBuildingExtrusion();

6、 动态清除房间高亮

this.$refs["floor-structure"].resetZoomActive();

7、 控制白模建筑物显隐

/**
 * 控制白模建筑物显隐
 * @param {Boolean} extrusionShow 是否显示
 * @returns void
 */
this.$refs["floor-structure"].setExtrusionPbfState(isExtrusionShow);

8、 更改主题颜色配置

/**
 * 更改主题颜色配置
 * @param {Object} options 新配置项
 * @returns void
 */
this.$refs["floor-structure"].resetOptions(newOptions);
1.3.1

1 year ago

1.2.8

1 year ago

1.2.7

1 year ago

1.2.6

1 year ago

1.2.5

1 year ago

1.2.4

1 year ago

1.3.0

1 year ago

1.2.9

1 year ago

1.2.0

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.1.9

1 year ago

1.1.8

1 year ago

1.0.9

1 year ago

1.1.7

1 year ago

1.0.8

1 year ago

1.1.6

1 year ago

1.0.7

1 year ago

1.1.5

1 year ago

1.0.6

1 year ago

1.2.3

1 year ago

1.1.4

1 year ago

1.0.5

1 year ago

1.2.2

1 year ago

1.1.3

1 year ago

1.0.4

1 year ago

1.2.1

1 year ago

1.1.2

1 year ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.1.0

2 years ago