• 请不要在回答技术问题时复制粘贴 AI 生成的内容
madpecker009
V2EX  ›  程序员

想在 html 上画出室内的座位分布图,有啥好的解决方案么?

  •  
  •   madpecker009 · Nov 18, 2020 · 7262 views
    This topic created in 2183 days ago, the information mentioned may be changed or developed.

    d65f1e2367f3208789b071ca9703e93c.png

    如图所示,想要在后台实现添加座位的功能。需要让管理员在后台点点就能设置座位啥的。
    设置完的座位还需要在小程序中展示出来,在小程序中点击哪个座位就能选中哪个座位进行预定。
    后台是 fastadmin,纯 html+css+js 。前端展示用小程序。
    关于这个大家有没有什么好的解决方案呢?

    39 replies  •  2020-11-19 09:13:15 +08:00
    respect11
    respect11
    Nov 18, 2020
    1
    前端 table

    后端存 x,y 位置
    yaphets666
    yaphets666
    Nov 18, 2020
    2
    曲线框架啥的可以用 canvas 画.座位啥的就图片,字体图标.选座可以每个座位定个 ID,也可以二维数组.
    现成的方案可以去搜索下 电影院选座前端实现
    cernard
    cernard
    Nov 18, 2020❤️1
    3
    这个教室好高级……就是多人学习间开门容易打到观景台同学的屁股。F9 个 F10 的双人桌适合情侣或者偷吃东西。
    learningman
    learningman
    Nov 18, 2020
    4
    每个位置一对象,存自己的大小 xy 和 uuid
    madpecker009
    madpecker009
    OP
    Nov 18, 2020
    5
    @cernard 啊,这。。。太草了
    madpecker009
    madpecker009
    OP
    Nov 18, 2020
    6
    @yaphets666 已经在看着了。。。
    madpecker009
    madpecker009
    OP
    Nov 18, 2020
    7
    @learningman 那么需要在小程序里面怎么展示呢........
    fox0001
    fox0001
    Nov 18, 2020 via Android
    8
    用不用 canvas 都不是问题。

    1 )定义座位类型。比如单人桌、双人桌

    2 )定义教室。记录教室大小。可以是 div 、canvas 等

    3 )把座位复制到教室。重点是记录作为与教室的相对坐标。html 元素的 offset,可以获取 height 和 width

    4 )保存数据。
    新建的座位与教室有关联
    座位记录与教室的相对坐标
    新建的座位赋予 ID,根据其类型判断可否预订

    5 )展现。
    教室是底层,座位 position:absolute;z-index:10,然后根据坐标摆放。

    用户点击可预订的座位,获取座位 ID 做处理。

    已预订的座位要显示标识


    大概就这样吧
    huifer
    huifer
    Nov 18, 2020
    9
    openlayers
    a719114136
    a719114136
    Nov 18, 2020
    10
    和电影院的选座页面差不多吧,找到个类似的,不知道有没有用 https://github.com/houzisbw/MeiTuanCinemaSmartChoose
    christin
    christin
    Nov 18, 2020 via iPhone
    11
    这不是巧了么 我们公司有个项目和这个差不多 用 svg 做的
    christin
    christin
    Nov 18, 2020 via iPhone
    12
    @christin 需要的话可以详细讨论一下 不过不是我做的 我可以帮你看看代码
    madpecker009
    madpecker009
    OP
    Nov 18, 2020
    13
    @christin 真的吗 太感谢啦 该咋联系你呢
    metamask
    metamask
    Nov 18, 2020
    14
    你可以直接做成是一个二维表,

    不同的东西,无非就是 1 * 1, 2 * 2 这样规格不同,把格子直接锁定就好,
    liukangxu
    liukangxu
    Nov 18, 2020
    15
    既然座位有编号( A1-A5 、B1-B5……),直接存编号和用户的映射就好了,没必要再用坐标对座位编码
    lff0305
    lff0305
    Nov 18, 2020
    16
    raphaeljs, 完全能搞定,就是自己要写代码
    yzlnew
    yzlnew
    Nov 18, 2020
    17
    关键词 floor planner html
    yzlnew
    yzlnew
    Nov 18, 2020
    18
    比如这个可以学习下 https://github.com/pkozul/ha-floorplan
    kidult
    kidult
    Nov 18, 2020
    19
    无人自习室吧,又是一片红海
    kidult
    kidult
    Nov 18, 2020
    20
    @madpecker009 如果是自己想做,可以交流一下
    whypool
    whypool
    Nov 18, 2020 via Android
    21
    svg 就行
    TimPeake
    TimPeake
    Nov 18, 2020
    22
    哈哈 很久之前也是好奇 电影院选座的那个页面该怎么做
    qa2080639
    qa2080639
    Nov 18, 2020
    23
    fabric.js
    madpecker009
    madpecker009
    OP
    Nov 18, 2020
    24
    @kidult 公司里的项目。。。 我要是自己做我就做这样的布局方式的了
    ![QQ 图片 20201118135002.png]( https://i.loli.net/2020/11/18/YhaWF9T4lOxM3jt.png)
    madpecker009
    madpecker009
    OP
    Nov 18, 2020
    25
    @TimPeake 我想的就是 i 在网页上生成直角坐标系 那样排布座位。至于图中的那种房间轮廓就暂时么办法了
    xiangyuecn
    xiangyuecn
    Nov 18, 2020
    26
    按照搞游戏开发的思路来搞,这种需求实现应该算是入门级的吧😂
    madpecker009
    madpecker009
    OP
    Nov 18, 2020
    27
    @xiangyuecn 啊,,,不懂游戏开发,,,
    madpecker009
    madpecker009
    OP
    Nov 18, 2020
    28
    @xiangyuecn 我打算用直角坐标系来搞了
    azcvcza
    azcvcza
    Nov 18, 2020
    29
    能点选加交互的话,初级的数量不多的建议 SVG ;数量一多就要用 canvas,加自己检测鼠标坐标搞重绘
    lhx880619
    lhx880619
    Nov 18, 2020 via Android
    30
    我做过 还可以 2d 转 3d 2d 用 canvas 库 pixi paper 等 2d 库都可以 3d 部分 threejs Babylon 都行
    madpecker009
    madpecker009
    OP
    Nov 18, 2020
    31
    @lhx880619 用这样做的话 怎么存库呢、、、突然发现又有这个问题了
    wordsman
    wordsman
    Nov 18, 2020
    32
    draw.io ,画完以后保存为 HTML 就行
    asdjgfr
    asdjgfr
    Nov 18, 2020
    33
    数量不多就用 svg,开发方便,多的话找个 canvas 的库就行,api 也很简单,比如 pixi
    zepto
    zepto
    Nov 18, 2020
    34
    我昨天刚想着自习室加个小程序,这个就出现了。。
    madpecker009
    madpecker009
    OP
    Nov 18, 2020
    35
    @zepto 哈哈 或许这就是缘分吧
    TheAlpha
    TheAlpha
    Nov 18, 2020
    36
    之前是我是用 SVG 画,可以预先定义几个图形,后台给 xy 坐标和类型就可以自由组合了,简单的 demo https://github.com/xhkz/react-seat-map/blob/master/src/index.js
    bojue
    bojue
    Nov 18, 2020
    37
    IDC 行业拜访设备的绘制工具你可以参考一下: https://github.com/bojue/BaseMap
    bojue
    bojue
    Nov 18, 2020
    38
    @bojue 摆放
    xiaoqiao24
    xiaoqiao24
    Nov 19, 2020
    39
    组合模式策略 将整个教室通过不同区域划分成每个独立模块,每个模块写个类独立管理,对于模块中的每个座位可以预先设定好位置标记,使用链表来维护,也方便后期增加
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4195 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 08:16 · PVG 16:16 · LAX 00:16 · JFK 03:16
    ♥ Do have faith in what you're doing.