> **本文回答**：`PointEnt` 单点实体 —— 创建 / 样式 / 与 Marker 的取舍。

## 一、创建

```js
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 概念）：

```js
p.color = 0xff0000;        // 颜色（整数 RGB）
p.effectColor = 0x00ff00;  // 发光特效色（默认 -1 关闭）
p.effectWidth = 4;         // 光晕半径 = 5 + effectWidth（像素）
p.effectOpacity = 0.6;
p.styleChanged();          // 通知重渲染
```

需要十字 / 方块 / 自定义图形时，用 [symbol/](../../../vjmap/references/symbol/overview.md) 或 [marker/](../../../vjmap/references/marker/overview.md) 方案，`PointEnt` 只做参照点。

## 三、获取坐标

```js
p.position;        // Point2D
p.position.x;
p.position.y;
```

## 四、与 Marker/Symbol 的选择

| 场景 | 推荐 |
|---|---|
| CAD 参照点 / 控制点 | `PointEnt` |
| 业务点（店铺、设备） | [marker/](../../../vjmap/references/marker/overview.md) 或 [symbol/](../../../vjmap/references/symbol/overview.md) |
| 几十万点 | [symbol/circle-symbol](../../../vjmap/references/symbol/circle-symbol.md) |

## 五、批量

```js
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/](../../../vjmap/references/symbol/overview.md) 方案。

## 六、常见坑

1. **`p.pdMode = ...` 无效**：`PointEnt` 没有 `pdMode`/`pdSize` 属性，赋值只是挂了个无用字段；点外观只能调 `color` / `effect*`（`lineWidth` 不影响点，圆点大小固定 4px），要十字/方块图形或可调大小请改用 symbol/marker。
2. **不出现图形**：检查 `color` 与 `visible`；`PointEnt` 渲染为纯色圆点，无填充样式可调。
3. **改了样式没刷新**：赋值属性后调 `p.styleChanged()`（或直接走 `mapcadLayer` 的实体更新通道）触发重渲染。
