xych-ol-map

2.1.12 • Public • Published

Vue 3 + TypeScript + Vite


安装依赖命令

npm i xych-ol-map

一、 组件

1.1 树状目录TheToc

1.1.1 引入


在main.ts中引入xych-ol-map

import App from "./App.vue";
import XychMap from 'xych-ol-map';
import '../node_modules/xych-ol-map/style.css';//引入样式

createApp(App)
  .use(router as any)
  .mount("#app");


在html中直接引用该组件

<TheToc ref="theTocRef" :olXinyu="olXinyu" />

1.1.2 传入参数

参数名 说明 类型 默认值
olXinyu 必传, xych-ol-map定义的封装ol方法的类 OlXinyu

1.1.3 方法

方法 说明 返回值类型 备注
setTocConfig(tocConfig: object) 设置树状目录配置 void 目前只需调用该方法修改配置,控制显示隐藏由使用人自己设置
getTreeConfig() 设置配置后,获取树状目录的配置 object 组件由el-tree二次封装,将setTocConfig传入的tocConfig经过内部filterMenu转化后赋值给el-tree
setTheTocWidth(width: number) 设置树状目录的宽度 void 默认为406px
setTheTocVisible(visible: Boolean) 设置树状目录的显隐 void 目前废弃,树状目录直接显示,由使用者自己设置显隐
setTheToc(visible: Boolean, tocConfig: object) 设置树状目录 void 目前废弃,调用setTocConfig和setTheTocVisible

1.2 绘制组件RedLine

1.2.1 引入


在main.ts中引入xych-ol-map

import App from "./App.vue";
import XychMap from 'xych-ol-map';
import '../node_modules/xych-ol-map/style.css';//引入样式

createApp(App)
  .use(router as any)
  .mount("#app");


在html中直接引用该组件

<RedLine ref="redLineRef" :olXinyu="olXinyu" />

1.2.2 传入参数

参数名 说明 类型 默认值
olXinyu 必传, xych-ol-map定义的封装ol方法的类 OlXinyu

1.2.3 方法

方法 说明 返回值类型 备注
clearAll() 全部清除 void
setRedLineVisible(visible: Boolean) 设置绘制组件的显隐 void 目前废弃,绘制组件直接显示,由使用者自己设置显隐

二、 工具类

2.1 OlXinyuSource

2.1.1 引入


在script中引入OlXinyuSource

import { OlXinyuSource } from 'xych-ol-map';

2.1.2 如何加载地图


在html中需要一个地图DOM元素载体,必须设置宽高

<div ref="mapRef" class="map"></div>


在script中加载,比如:

import { OlXinyuSource } from 'xych-ol-map';

const config = {
  layers: [
    {
      id: 'tdt',
      caption: "天地图",
      isBaseMap: true,
      addTree: true,
      layerType: "GroupLayer",
      subLayers: [
        {
          id: 'yxdt',
          caption: '影像底图',
          layerType: 'TileWMTS',
          mapUrl: 'http://t0.tianditu.gov.cn/img_w/wmts?request=GetCapabilities&service=wmts',
          zIndex: 1,
          opacity: 1,
          visible: true,
          layer: 'img',
          matrixSet: 'w'
        },
        {
          id: 'yxzj',
          caption: '影像注记',
          layerType: 'TileWMTS',
          mapUrl: 'http://t0.tianditu.gov.cn/cia_w/wmts?request=GetCapabilities&service=wmts',
          zIndex: 1,
          opacity: 1,
          visible: true,
          layer: 'cia',
          matrixSet: 'w'
        },
      ]
    }
  ]
}

onMounted(async () => {
  //使用OlXinyu类必须在DOM元素加载完之后
  olXinyu.value = new OlXinyuSource.OlXinyu({
    element: mapRef.value,//地图DOM元素
    zoom: 2,
    minZoom: 1,
    maxZoom: 25,
    loadDefaultBasemap: false,
    coordinateSystem: "EPSG:4490",
  });

  await olXinyu.value.setMapConfig(config);
});

2.1.3 OlXinyuSource,地图包

参数 类型 说明
OlXinyu class 封装ol方法的地图类,最主要的部分
CoordinateSystem enum 枚举值:目前已知的不同的地图坐标系,可根据坐标系查询不同的坐标系信息
build(options: OlXinyuOptions) function 根据传入的options构造一个OlXinyu实例并返回
geometryOperation object 内含一些图形要素操作的方法:是否相交、擦除、是否包含、合并
getProjectionByName(coordinateSystemName: CoordinateSystem) function 根据坐标系名称获取实际坐标系参数
wktTranslator object featureToWkt, wktToFeature。根据OlXinyu的坐标系,将Feature与Wkt互相转化的工具
arsgisMapServerQuerier object arcgis mapserver查询工具对象
superMapWfsQuerier object 超图WFS查询工具对象

三、工具类讲解

3.1 OlXinyu:地图类

3.1.1 OlXinyu 实例化

import { OlXinyuSource } from 'xych-ol-map';

onMounted(async () => {
  //使用OlXinyu类必须在DOM元素加载完之后
  olXinyu.value = new OlXinyuSource.OlXinyu({
    element: mapRef.value,//地图DOM元素
    zoom: 2,
    minZoom: 1,
    maxZoom: 25,
    loadDefaultBasemap: false,
    coordinateSystem: "EPSG:4490",
  });

});

3.1.2 OlXinyu 对象属性

参数名 说明 类型 备注
map 地图 ol.Map
mapConfig 地图图层配置 object 该地图绑定的图层配置
baseMapIds 底图 的id 数组 Array<string>
coordinateSystem 坐标系 enum
projection 坐标系 Projection ol类,由coordinateSystem和内置方法获得
setNodeChecked 树状目录设置节点勾选状态的方法 function 由树状目录传入
drawUtil 绘制、上传对象 自定义方法类DrawUtil 与地图绑定的绘制、上传对象,里面有图形上传的、绘制图形以及操作图层的方法
mapToolsUtil 地图工具对象 自定义方法类MapToolsUtil 与地图绑定的工具对象,里面有缩放、分屏、卷帘等一系列操作地图的方法

3.1.3 OlXinyu 对象方法

方法 说明 返回值类型 备注
setMapConfig(mapConfig: object, isLoad: Boolean = false) 设置图层配置 void 异步方法。若isLoad为true,则会加载所有的图层到地图中;若图层自身设置里visible为true,也会加载。必须调用的方法,其中会初始化drawUtil和mapToolsUtil两个工具对象。
addMapConfig(layerGroups: object, isLoad: Boolean = false) 增加mapConfig内容 void mapConfig已设置,往其中加入LayerGroup数组的方法。
getMapConfig() 设置图层组可见性 MapConfig: Object 获取mapConfig
flyTo(center: [number, number], zoom?: number) 根据中心点和缩放级别定位 void 地图定位至中心点,缩放级别为zoom
getLayerOptionByGroupOption(layersArr: Array, id: String) 获取对应id的图层信息 object layersArr一般传入getMapConfig()获取的图层组配置,从中获取对应id的图层信息
removeLayers(optionsArray: Array, isBaseMap?: Boolean) 移除多个图层 void optionsArray:传入图层组配置信息;isBaseMap:是否底图,无需在意
switchBaseMap(id?: string string[]) 切换底图 void
getLayerById(id: string) 根据id从地图中获取某个图层 Layer 获取的ol.map中的图层Layer,与getLayerOptionByGroupOption获取的图层的信息不同
setLayerVisible(id: string, visible: boolean) 设置对应id图层的显隐 void 有的图层加载了,但是配置visible为false,若需要显示,在setMapConfig加载完图层后,需再调用setLayerVisible显示图层。若图层尚未加载,则会先加载图层。
setLayersVisible(ids: Array, visible: boolean) 设置id数组对应图层的显隐 void 基本同setLayerVisible
setLayerOpacity(id: string, opacity: number) 设置id对应图层的透明度 void opacity: [0, 1]
adjustOpacity(id: string, delta: number) 添加(或减少)id对应图层的透明度 number 返回修改后的值,不会超过[0, 1]区间
query(id: string, feature: Feature, way: string or null, filter: Filter or undefined, token?: any) 某个id对应图层进行空间或属性等查询 any feature:图形要素; way:查询方式,spatial、filter、spatialAndFilter、all;filter:属性条件查询必传参数;token 接口所需token,可能不需要
locate(featureList: Array, padding: Array = [0, 0, 0, 0], time: number = 1) 根据图形数组定位 void featureList:图形要素数组; padding:定位范围距离地图边沿的距离([上,右,下,左]);time:定位的时间
bindMapClick(layerFilter: any, callback: Function) 绑定事件:点击地图上的图形要素触发 listener layerFilter:图层筛选方法,入参唯一,参数类型为Layer; callback:回调函数,参数为地图点击到的图形要素feature,若没有点击到图形要素,不会调用callback
unbindMapEvt(listener: any) 解除监听 void 解除监听事件
getDrawUtil() 获取该olXinyu对应的drawUtil(一些layer常用的方法,绘制、上传方法) DrawUtil 必须先设置mapConfig,才能使用getDrawUtil
getMapToolsUtil() 获取该olXinyu对应的mapToolsUtil(常用的地图工具箱方法,比如绘图(drawUtil的比较详细)、测量、分屏、卷帘、全屏、缩放) MapToolsUtil 必须先设置mapConfig,才能使用getMapToolsUtil

3.2 wktTranslator:wkt和feature转换工具对象

方法 说明 返回值类型 备注
wktToFeature(wkt: wkt) 将wkt转化成feature void 基于map的坐标系进行转化
featureToWkt(feature: Feature) 将feature转化成wkt void 基于map的坐标系进行转化

3.3 geometryOperation:图形操作工具

方法 说明 返回值类型 备注
booleanOverlap(geometry: Geometry, geometry2: Geometry) 判断两个图形是否相交 Boolean
difference(geometry: Geometry, geometry2: Geometry) 通过从第一个多边形中剪切第二个多边形来查找两个多边形之间的差值 Geometry
union(geometryList: Array) 合并多个多边形Polygon Geometry
over(geometry: Geometry, geometry2: Geometry) geometry是否覆盖geometry2 Boolean

3.4 superMapWfsQuerier:超图WFS查询工具对象

方法 说明 返回值类型 备注
getAll(url: string) 不设置条件进行查询 any
filterQuery(url: string, filter: Filter) 根据属性条件进行查询 any
spatialQuery(url: string, feature: Feature) 根据空间条件进行查询 any
spatialAndFilterQuery(url: string, feature: Feature, filter: Filter) 同时根据空间、属性条件进行查询 any
statistical(fields: string[], groupField: string, res: any) 根据条件统计 any fields 统计字段, groupField 分组字段, res 空间查询返回结果

3.5 arsgisMapServerQuerier:arcgis mapserver查询工具对象

方法 说明 返回值类型 备注
arcgisMapserverSpatialAndFilterQuery(url: string) 不设置条件进行查询 any
arcgisMapserverSpatialAndFilterQueryByUrl(url: string, filter: Filter) 根据属性条件进行查询 any
spatialQuery(url: string, feature: Feature) 根据空间条件进行查询 any
arcgisMapserverSpatialAndFilterQueryPost(url: string, feature: Feature, filter: Filter) 同时根据空间、属性条件进行查询 any

3.6 DrawUtil 绘制、上传红线对象,内含图层的一些通用方法


PS:实例化DrawUtil,在构造方法中会往map中加入一些用于操作的图层,用于上传、绘制红线。
export图层为各种操作所在的图层,合并、擦除、导出等等。
合并、擦除、导出是在点选的基础上进行的,当然自己操作export和cckgtc图层,不用点选也是可以的。

方法 说明 返回值类型 备注
getToken() 获取查询接口所需token string 若调用OlXinyu的query方法,需要token,可以调用该方法
getFeaturesByGeometries(geometries: Array) 通过空间属性Geometry数组获取对应的feature数组 Array
addFeaturesAndClear(id: string, features: Array) 清空图层并将图形数组添加到对应id图层中 void
addFeatures(id: string, features: Array) 将图形数组添加到对应id图层中 void
removeFeatures(id: string, features: Array) 将图形数组从对应id图层中移除 void
getFeatures(id: string) 获取图层的所有图形 Array
addGeometriesAndClear(id: string, geometries: Array) 清空图层并将Geometry数组添加到对应id图层中 void
addGeometries(id: string, geometries: Array) 将Geometry数组添加到对应id图层中 void
onShapeFileUpload(file: File, show: Boolean = true) 读取shp文件获取图形 Feature 异步方法。file:上传后的File文件, show:是否将返回的feature显示在import图层中,并定位
onCadFileUpload(file: File, show: Boolean = true) 读取cad文件获取图形 Feature 异步方法。file:上传后的File文件, show:是否将返回的feature显示在import图层中,并定位
onTxtFileUpload(file: File, show: Boolean = true) 读取txt文件获取图形 Feature 异步方法。file:上传后的File文件, show:是否将返回的feature显示在import图层中,并定位。该方法用到了coordinateSystemConversion进行图斑坐标转换("EPSG:4549", "EPSG:4490"),如果坐标不对,修改源代码即可
startDrawTool(drawEndCallBack: Function, type: String = null) 开始绘制 void drawEndCallBack为绘制图形结束的回调方法,参数为绘制得到的feature;type: 绘制类型,有Point、LineString、Polygon、Circle。单击开始绘制,双击结束绘制。
getDrawType() 获取绘制类型 string
getDrawProxy() 获取绘制工具 DrawProxy DrawProxy为自定义绘制类,DrawUtil基于DrawProxy封装
editDrawType(type: string) 修改绘制类型并会停止绘制,如果当前还在绘制,那么会清除,必须调用了startDrawTool调用才能使用该方法 void type: 绘制类型,有Point、LineString、Polygon、Circle
editDrawTypeAndDraw(type: string) 修改绘制类型,不会停止绘制,如果当前还在绘制,那么会清除,必须调用了startDrawTool调用才能使用该方法 void type: 绘制类型,有Point、LineString、Polygon、Circle
stopDrawTool() 停止绘制,如果当前还在绘制,那么会清除 void
clearDrawProxy() 停止绘制并重置DrawProxy void
undoDraw() 撤回正在绘制图形的上一步 void
clearDrawedFeatures() 清空绘制图形和export图层 void
getDrawedFeatures(isWkt: Boolean = false) 获取绘制的所有图形 array isWkt:是否返回wkt
clearSelectedFeatures() 清除点选图形和对应在draw-proxy中绘制的图形 void
selectByClick() 开启点选,通过地点击选中地图上绘制的图形,将点选的图形加入到export图层中,点选后的图形可以进行擦除、合并操作 void
closeSelectByClick() 关闭点选 void
stateOfListener() 判断是否开启点选功能 Boolean
getSelectedNumber() 获取点选图形的数量 Number
eraseTheSelected() export中的图形擦除cckgtc中的图形,cckgtc中的图形需自己调用方法添加 void
getUnionByFeatures() 获取图形要素数组合并后的图形要素 Feature
mergeTheSelected() 合并点选的图形 void
onExport(wkts) 将wkt数组导出成红线文件 void wkts:Array
onExportLayer() 将export图层的红线(即点选经过合并、擦除后的图形要素)导出成文件 void
getArea(geometry: Geometry) 获取几何对象的面积(平方米) Number 返回面积单位平方米
getIntrSurfsToHighlight(feature: Feature, feature2: Feature, show: Boolean = true) 判断图形是否相交,返回相交部分,并在Dkhighlight图层中高亮显示 Feature or null show: 是否在Dkhighlight图层中高亮显示
layerClear(id: string) 通过id清空对应图层的图形 void
allClear() 全部清空 void

3.7 MapToolsUtil: 地图常用的一些方法

方法 说明 返回值类型 备注
startZoomOutTool() 开始缩小 void 鼠标变成十字形,划出矩形区域后地图缩小(不过我划线的时候看不到划的区域,目前未知)
startZoomInTool() 开始放大 void 鼠标变成十字形,划出矩形区域后地图放大(不过我划线的时候看不到划的区域,目前未知)
stopZoomOutTool() 停止缩小 void
stopZoomInTool() 停止放大 void
stopZoomTool() 停止缩放 void
fullScreenTool() 全屏 void
stopFullScreenTool() 停止全屏 void
startCurtainTool(layerIds: Array) 开始卷帘 void layerIds: 右侧需要对比的图层id数组
stopCurtainTool() 停止卷帘 void
startCompareScreen(sizeList: Array = null, evt: Function = null) 开始分屏 void sizeList: 分屏尺寸,不传则默认为左右平分, evt:分屏创建完后,分出来的地图需要调用的方法,参数唯一,类型为OlXinyu
stopCompareScreen() 停止分屏 void
stopCompareScreen() 停止分屏 void
startMeasure(measureValue: String = null) 开始测量 void measureValue 线:LineString(默认),多边形: Polygon
stopMeasure() 停止测量 void
startDraw(type: string) 开始绘制 void type: Point, Polygon, LineString, Circle
stopDraw() 停止绘制 void
clearAll() 清除所有 void


sizeList举例:

let sizeList = [
  { width: "50%", height: "100%" },
  { width: "50%", height: "100%" },
];

四、项目注意事项

4.1 本项目使用supermapMVT图层注意事项


在所需依赖@supermap/iclient-ol/overlay/vectortile中放入对应@supermap/iclient-ol版本的olms.js
目前所用版本@supermap是11.1.0-a,xych-ol-map附带有对应olms.js

Readme

Keywords

Package Sidebar

Install

npm i xych-ol-map

Weekly Downloads

2

Version

2.1.12

License

ISC

Unpacked Size

27.7 MB

Total Files

472

Last publish

Collaborators

  • ssxl82988762