跳转到主要内容

室内地图制作方法

项目源代码

https://gitee.com/vpclub-wh/indoor-map

室内地图制作

用threejs实现的室内地图展示,原理非常简单

  • 使用正交相机创建2D效果
  • 根据地图数据多边形形状
  • 使用OrbitControls进行地图控制

所有的代码都在src/components/indoor-map.vue 中

制作地图形状数据

要实现平面地图倒是很简单,绘制多边形形状与标记,以便于数据绑定,则需要借助一些外部工具,因此,我们使用Tiled mapeditor 制作地图形状与标记

Tiled下载:https://www.mapeditor.org/

最终效果图

约定

首先,我们约定一张地图有四个图层,需要在图层中定义

  • 背景图:bg,类型为图像层,图片的长和宽要求是2的整数倍
  • 地板或者公共空间:floor,类型为对象层
  • 房间:rooms,类型为对象层
  • 文本标记:label,类型为对象层

进行区块标记

约定

  • 所有的对象均使用多边形,既使用矩形绘制的区块,也需要转换为多边形,可以在对象上右键,转换为多边形
  • 为便于协作,对象的name属性作为与数据绑定的唯一依赖关系
  • 因为文字内容需要动态变化,而文字的长和宽需要计算,因此label使用点位置进行标记,再动态计算放到与此坐标点的居中位置
  • 导出格式为json

tiledmap快捷键

  • 放大:ctrl++
  • 缩小:ctrl+-
  • 默认大小:ctrl+0
  • 平移:滚轮或者按住空格
  • 填充到窗口正中间:ctrl+/