唯杰地图 logo唯杰地图
VJMAP
EN

point

vjmapext/references/entity/point.md 2.2 KB59 行
原文

本文回答: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/ 方案。

六、常见坑

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