# 常见问题

# 怎么查看文档和示例

# 唯杰地图系统架构

唯杰地图系统架构为BS架构。

服务端主要核心功能如解析打开DWG文件、保存成空间数据、生成栅格矢量瓦片渲染数据等功能都在于服务端;

服务端可跨平台私有化部署(推荐linux系统docker部署),支持内网无网络环境部署;

官网的免费试用版本功能与正式版本一样,但有水印;如需去水印,用于商用私有化部署请联系客服;

和地图有关的服务端功能一般无需用户二次开发;用户自定义的数据获取和保存功能,用户可用任意语言开发自己的服务端功能。

前端sdk库,可直接在html中引入样式<link rel="stylesheet" type="text/css" href="https://vjmap.com/demo/js/vjmap/vjmap.min.css">和脚本文件 <script type="text/javascript" src="https://vjmap.com/demo/js/vjmap/vjmap.min.js"></script> ;或安装npm包 npm install vjmap来进行开发。前端需要用户利用sdk库开发自己的功能融合进自己的系统中。可原生js开发,或React、vue开发(示例:点击下载 (opens new window) )。支持移动端,如果是原生开发,请用webview基于h5开发。

# 怎么打开CAD图形

打开CAD图形有以下四种方式

# 支持移动端吗?

唯杰地图完全兼容移动端查看。在每个示例中和云平台管理中都增加了手机扫一扫的功能,可直接扫描二维码在手机端查看效果。

# CAD图中自定义字体会不会显示乱码或问号?

唯杰地图后台服务会安装一些常用的字体, 如果用户CAD图中自定义字体不在这些常用的字体中,我们会用默认字体替代这些字体,这样就不会显示问号或乱码了。但有时候显示可能会与原字体显示有差别,如宽高大小不一样。要想显示完全一样,需要把自定义的字体拷贝到唯杰地图后台服务字体目录data/fonts即可。

# 图形打开显示一个小点的解决办法

# 在唯杰云端管理平台处理办法

    1. 进入唯杰云端管理平台 https://vjmap.com/app/cloud
    1. 打开显示小点的地图后,进入上面工具栏中的“更多功能”-> "选择裁剪范围生成新的图形"
    1. 拉框选择要显示的区域,然后在新打开的页面中,给新的图形重命名即可。
    1. 可以删除以前的图形.(可选)

# 在CAD里面处理办法

  • 1.在CAD双击鼠标中键,使CAD图全图显示
  • 2.如果这时候发现全图显示后,只看见几个小点,说明图其他区域很远处有一些其他东西,需要删除掉。
  • 3.这时候再按 Ctrl+A全选所有图形。按住Shift拉框,把真正要显示的图选中,排除到选择集中,按delete键,删除多余的图形。(如果无法删除,可能是图层冻结或锁定了,需把无法删除的图层取消冻结或锁定)
  • 4.再 双击鼠标中键,使CAD图全图显示,这时候就正常了。再保存图形

# 如何把另外一个坐标系的数据叠加到当前CAD图上

  • 如果另外一个坐标系和当前CAD图是同一个坐标系,那数据无需转换直接用就可以的
  • 如果不是同一个坐标系,如果不知道这两个坐标系对应关系的话,可以通过四参数来对应解决(误差由给定的公共点决定。公共点越准确,误差越小)。示例代码如:
// cad上面的点坐标
let cadPoints = [
    vjmap.geoPoint([39760.07407, 237424.52134]),
    vjmap.geoPoint([39006.60468, 237808.49494749]),
    vjmap.geoPoint([38823.92918, 235003.98994]),
    vjmap.geoPoint([37885.55424, 235452.80893])
];

// 另外坐标系上拾取的与上面的点一一对应的坐标
let otherPoints = [
    vjmap.geoPoint([113.292983, 23.206979]),
    vjmap.geoPoint([113.285631, 23.210304]),
    vjmap.geoPoint([113.283897, 23.185047]),
    vjmap.geoPoint([113.274716, 23.188962])
]

// 通过坐标参数求出四参数
let fourparam = vjmap.coordTransfromGetFourParamter(otherPoints, cadPoints, false);

// 把另外的坐标系上面的公共点转成cad坐标,与原始cad坐标比较,看得到的四参数误差有多大,如果误差比较小,说明公共点是可以用的
for(let i = 0; i< otherPoints.length; i++) {
    const cadpt = vjmap.coordTransfromByFourParamter(otherPoints[i], fourparam);
    console.log("原始点:" + cadPoints[i], "计算结果:" + cadpt, "误差:" +cadPoints[i].distanceTo(cadpt))
}

// 例如把另外坐标系的点[113.292983, 23.206979] 转成cad坐标
const cadpt = vjmap.coordTransfromByFourParamter(vjmap.geoPoint([113.292983, 23.206979]), fourparam);
console.log(cadpt)
// {x: 39792.49478817663, y: 237432.04509891104}

// 通过cad的点反算出另外坐标系的点
const otherpt = vjmap.coordTransfromByInvFourParamter(cadpt, fourparam); // 通过四参数反算
console.log(otherpt)
// {x: 113.29298300000002, y: 23.206979


// 注:四参数只用应用于有平移旋转缩放的情况, 如有水平或垂直翻转请先转换完再用四参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37