创建2d室内地图

创建2d室内地图

需求

  1. 平面图
  2. poi点击事件
  3. 列车行驶动画

技术选择

d3.js

绘图

svg矢量图部分代码

//创建轨道
  for (var i = 0; i < 30; i++) {
    if (i == 0) {
      //上行
      createLine(cell, '150', '530', '1800', '530', 'black', '5', 'gray');
      createLine(cell, '150', '570', '1800', '570', 'black', '5', 'gray');
      //下行
      createLine(cell, '150', '1430', '1800', '1430', 'black', '5', 'gray');
      createLine(cell, '150', '1470', '1800', '1470', 'black', '5', 'gray');
    }
    var x = 250 + i * 50;
    createLine(cell, x, '520', x, '580', 'black', '10', 'gray');
    createLine(cell, x, '1420', x, '1480', 'black', '10', 'gray');
  }

  cell.append("polygon")
    .attr('points', '0,700 400,700 400,800 300,800 300,1200 400,1200 400,1300 0,1300')
    .style('fill', '#B0C4DE')
    .style('stroke', 'gray')
    .style('stroke-width', '0');

  cell.append("polygon")
    .attr('points', '2000,700 1600,700 1600,800 1500,800 1500,1100 1800,1100 1800,1300 2000,1300')
    .style('fill', '#B0C4DE')
    .style('stroke', 'gray')
    .style('stroke-width', '0');

// 楼梯
  for (var fx = 0; fx < 3; fx++) {
    var fx1 = 600 + fx * 300;
    var fx2 = fx1 + 40;
    var fx3 = fx1 + 80;

    createLine(cell, fx1, '950', fx1, '1050', '#B0C4DE', '30', 'gray');
    createLine(cell, fx2, '950', fx2, '1050', '#B0C4DE', '30', 'gray');
    createLine(cell, fx3, '950', fx3, '1050', '#B0C4DE', '30', 'gray');
  }

// line
var createLine = function (cell, x1, y1, x2, y2, stroke, strokeW, fill) {
  cell.append("line")
    .attr('x1', x1)
    .attr('y1', y1)
    .attr('x2', x2)
    .attr('y2', y2)
    .style('stroke', stroke)
    .style('stroke-width', strokeW)
    .style('fill', fill);
}

预览

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值