1.0.3 • Published 2 years ago

real-radar v1.0.3

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

real-radar

一个真实雷达调节图形化组件。🎃注意🎃:是真实雷达数据!

安装

npm i real-radar

props

参数说明类型默认值可选值
angle扫描区域夹角Number800~360
radiussvg内雷达图形半径Number1801~Infinity
rotate雷达扫描区域法线,相对正北方向旋转的角度Number1300~360
gapsvg的paddingNumber400~radius
height刻度高度Number5-
radiusReal真实辐射距离(km),用来标记刻度Number3000-
count几个刻度、弧Number30~
color图谱颜色Stringrgb(38, 222, 117)-
speed扫描快慢(ms)Number10-
showScanBg是否展示扇形Booleanfalsetrue
scanBgColor展示扇形底色String#eee-
radarBgsvg bg colorStringtransparent-

注意

  1. 标注字体12px

标注需要让文字向前移动一般距离,处在刻度中心,就需要知道字体的长度

/**
* 获取文本px宽度
* @param font{String}: normal(正常字体) 字体大小 字体名称
**/
const fontSize = '12px'
String.prototype.pxWidth = function (font = `normal ${fontSize} SiYuan`) {
  // re-use canvas object for better performance
  const canvas = String.prototype.pxWidth.canvas ||
    (String.prototype.pxWidth.canvas = document.createElement("canvas"))
  const context = canvas.getContext('2d')

  font && (context.font = font)
  const metrics = context.measureText(this)

  return metrics.width;
}
  1. 图形内设置了padding,对应着props参数重gap

  2. 扇形均分

配置均分最大为30度,想要均分的舒服些,这里取26~30中计算哪个分起来更舒服

scanPathCount () {
  const { angle } = this
  // angle / i(26~30), 取最小余数的i
  const items = [26, 27, 28, 29, 30]
  let b = 30 // 默认最大余数
  items.forEach(i => {
    if (angle % i < b) {
      b = i
    }
  })

  return Math.floor(angle / b)
},