point
本文回答:
PointEnt单点实体 —— 创建 / 样式 / 与 Marker 的取舍。
一、创建
const p = new vjmapext.PointEnt([100, 100]);
p.color = 0xff0000;
mapcadLayer.addEntity(p);
二、显示样式
PointEnt 序列化为 GeoJSON Point 要素,渲染为固定 4px 圆点(选中时 5px + 描边),只认 color 与 effect*;lineWidth 对点无效(点图层不读 line_width),没有 pdMode / pdSize 属性(包内不存在 PDMODE 概念):
p.color = 0xff0000; // 颜色(整数 RGB)
p.effectColor = 0x00ff00; // 发光特效色(默认 -1 关闭)
p.effectWidth = 4; // 光晕半径 = 5 + effectWidth(像素)
p.effectOpacity = 0.6;
p.styleChanged(); // 通知重渲染
需要十字 / 方块 / 自定义图形时,用 symbol/ 或 marker/ 方案,PointEnt 只做参照点。
三、获取坐标
p.position; // Point2D
p.position.x;
p.position.y;
四、与 Marker/Symbol 的选择
| 场景 | 推荐 |
|---|---|
| CAD 参照点 / 控制点 | PointEnt |
| 业务点(店铺、设备) | marker/ 或 symbol/ |
| 几十万点 | symbol/circle-symbol |
五、批量
const coords = [[0,0], [10,0], [20,0], [30,0]];
coords.forEach(c => {
const p = new vjmapext.PointEnt(c);
p.color = 0xff0000;
mapcadLayer.addEntity(p);
});
超过 1 万点请用 symbol/ 方案。
六、常见坑
p.pdMode = ...无效:PointEnt没有pdMode/pdSize属性,赋值只是挂了个无用字段;点外观只能调color/effect*(lineWidth不影响点,圆点大小固定 4px),要十字/方块图形或可调大小请改用 symbol/marker。- 不出现图形:检查
color与visible;PointEnt渲染为纯色圆点,无填充样式可调。 - 改了样式没刷新:赋值属性后调
p.styleChanged()(或直接走mapcadLayer的实体更新通道)触发重渲染。