UNPKG

mapboxgl-tools

Version:

基于mapboxgl的一些实用工具

512 lines (443 loc) 269 kB
# mapboxgl-tools > 基于mapboxgl的一些工具组件 ## Installation ```sh npm install mapboxgl-tools ``` ## Modules ```js Geoserver Contextmenu ``` ### 1.Geoserver > 自定义栅格瓦片组件(基于vue2.x),记忆缓存 | Property | Type | 默认值 | Description | | ----- | ------------- | ------------- | ------------------------ | | map | Object | null | mapboxgl实例对象 | | itemClass | String | | 单个geoserver展示class | | addClass | String | | 添加按钮class | | addBtnProps | Object | { type: 'primary', ghost: false, size: 'small', text: '新增图层' } | 添加按钮属性 | ```js <template> <div> <section style="width: 90%; height: 700px" id="map"></section> <Geoservers v-if="map" :map="map" itemClass="geo-item" addClass="add-btn" /> </div> </template> <script> import { Geoserver } from 'mapboxgl-tools' export default { components: { Geoserver, }, data() { return { map: null, } }, mounted() { this.map = new mapboxgl.Map({ container: 'map', zoom: 15, center: [114.26697720786854,30.63091896813168], transformRequest: (url) => { if ( url.includes('4326') ) { url = url.toLowerCase().replace(/(bbox=)([^&]+)/, ($0, $1, $2) => { let points = $2.split(',') let leftLngLat = onMercatorToLnglat(points[0], points[1]) let rightLngLat = onMercatorToLnglat(points[2], points[3]) return `${$1}${leftLngLat[0]},${leftLngLat[1]},${rightLngLat[0]},${rightLngLat[1]}` }) } return { url, } }, }) }, } </script> ``` *组件效果* ![img][img-geoserver] ### 2.Contextmenu > 右键菜单项目组件,基于vue2.x | Property | Type | 默认值 | Description | | ----- | ------------- | ------------- | ------------------------ | | menus | Array | [] | 菜单选项{ icons: [], name: '', click: Function, children: null,[] } | | left | Number | 0 | 定位left | | top | Number | 0 | 定位top | ```js <template> <div> <Contextmenu :menus='menus' :top='100' :left='200' /> </div> </template> <script> import { Contextmenu } from 'mapboxgl-tools' export default { components: { Contextmenu, }, data() { return { menus: [ { name: '批量平移挪点', click: () => { alert(1) }, }, { icons: [ 'M934.184927 199.723787 622.457206 511.452531l311.727721 311.703161c14.334473 14.229073 23.069415 33.951253 23.069415 55.743582 0 43.430138-35.178197 78.660524-78.735226 78.660524-21.664416 0-41.361013-8.865925-55.642275-23.069415L511.149121 622.838388 199.420377 934.490384c-14.204513 14.20349-33.901111 23.069415-55.642275 23.069415-43.482327 0-78.737272-35.230386-78.737272-78.660524 0-21.792329 8.864902-41.513486 23.094998-55.743582l311.677579-311.703161L88.135828 199.723787c-14.230096-14.255679-23.094998-33.92567-23.094998-55.642275 0-43.430138 35.254945-78.762855 78.737272-78.762855 21.741163 0 41.437761 8.813736 55.642275 23.069415l311.727721 311.727721L822.876842 88.389096c14.281261-14.255679 33.977859-23.069415 55.642275-23.069415 43.557028 0 78.735226 35.332716 78.735226 78.762855C957.254342 165.798117 948.5194 185.468109 934.184927 199.723787' ], name: '取消操作', click: () => { alert(2) }, }, { icons: '', name: '其他挪点', children: [ { icons: '', name: '附属挪点', click: () => alert(45) } ] } ] } }, } </script> ``` *组件效果* ![img](data:image/png;base64,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) ### 3.GeoserverAside > 继承Geoserver组件,快速弹窗 | Property | Type | 默认值 | Description | | ----- | ------------- | ------------- | ------------------------ | | map | Object | null | mapboxgl实例对象 | | itemClass | String | | 单个geoserver展示class | | addClass | String | | 添加按钮class | | addBtnProps | Object | { type: 'primary', ghost: false, size: 'small', text: '新增图层' } | 添加按钮属性 | | left | Number | 0 | 定位left | | top | Number | 0 | 定位top | ```js <template> <div> <GeoserverAside v-if="map" :map="map" itemClass="geo-item" addClass="add-btn" /> </div> </template> <script> import { GeoserverAside } from 'mapboxgl-tools' export default { components: { GeoserverAside, }, data() { return { } }, } </script> ``` ### 4.PickCoordControl > 拾取坐标mapboxgl控制器 | Property | Type | 默认值 | Description | | ----- | ------------- | ------------- | ------------------------ | | title | String | 拾取坐标 | 入口按钮title | | onCopy | Function | | 复制完成坐标之后的回调 | ```js <template> <section id="map" style="width: 90%; height: 700px"></section> </template> <script> import { PickCoordControl, transformRequest4326 } from 'mapboxgl-tools' export default { mounted() { const map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/light-v11', zoom: 18, center: [114.26697720786854,30.63091896813168], transformRequest: transformRequest4326, }) map.addControl(new PickCoordControl({ cb: ()=>message.success('复制成功') }), 'top-right') } } </script> ``` *控制器效果* ![img](./public/imgs/PickCoordControl.png) ### 5.MouseRectControl > 框选控制器 | Property | Type | 默认值 | Description | | ----- | ------------- | ------------- | ------------------------ | | title | String | 框选 | 入口按钮title | | onClose | Function | | 关闭控制器的回调 | | onOpen | Function | | 打开控制器的回调 | | onEnd | Function | | 完成框选的回调 | | onMousemove | Function | | 框选拖拽的回调 | ```js <template> <section id="map" style="width: 90%; height: 700px"></section> </template> <script> import { MouseRectControl, transformRequest4326 } from 'mapboxgl-tools' export default { mounted() { const map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/light-v11', zoom: 18, center: [114.26697720786854,30.63091896813168], transformRequest: transformRequest4326, }) map.addControl(new MouseRectControl({ onClose: () => alert('close'), onOpen: () => alert('open') }), 'top-right') } } </script> ``` *控制器效果* ![img](./public/imgs/MouseRectControl.png) ### 6.MeasureDistanceControl > 测量距离mapboxgl控制器 | Property | Type | 默认值 | Description | | ----- | ------------- | ------------- | ------------------------ | | title | String | 测量距离 | 入口按钮title | ```js <template> <section id="map" style="width: 90%; height: 700px"></section> </template> <script> import { MeasureDistanceControl, transformRequest4326 } from 'mapboxgl-tools' export default { mounted() { const map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/light-v11', zoom: 18, center: [114.26697720786854,30.63091896813168], transformRequest: transformRequest4326, }) map.addControl(new MeasureDistanceControl(), 'top-right') } } </script> ``` *控制器效果* ![img](./public/imgs/MeasureDistanceControl.png) ### 7.MeasureAreaControl > 测量面积mapboxgl控制器 | Property | Type | 默认值 | Description | | ----- | ------------- | ------------- | ------------------------ | | title | String | 测量面积 | 入口按钮title | ```js <template> <section id="map" style="width: 90%; height: 700px"></section> </template> <script> import { MeasureAreaControl, transformRequest4326 } from 'mapboxgl-tools' export default { mounted() { const map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/light-v11', zoom: 18, center: [114.26697720786854,30.63091896813168], transformRequest: transformRequest4326, }) map.addControl(new MeasureAreaControl(), 'top-right') } } </script> ``` *控制器效果* ![img][img-measurearea] ### 8.PositionControl > mapboxgl定位撒点控制器 **功能特性:** - 支持手动输入坐标进行定位撒点 - 支持区域快速定位(省市选择) - 支持度分秒坐标格式 - 自动去重重复坐标 - 点击地图点位可切换选中状态 - 清空功能一键清除所有坐标 | Property | Type | 默认值 | Description | | ----- | ------------- | ------------- | ------------------------ | | title | String | 定位撒点 | 入口按钮title | | type | String | 'feature' | 定位点类型:'feature' 使用地图图层,'marker' 使用 Marker | | layout | Object | { icon-size: 0.2, icon-anchor: 'bottom', icon-image: ['case', ['get', 'current'], IMAGE_POSCONTROL_ACT, IMAGE_POSCONTROL_NOR ] } | mapboxgl-layout, 当前的定位点current属性为true | | paint | String | {} | mapboxgl-paint | | onMini | Function | | 有重复数据被过滤掉时候的回调 | **使用示例:** ```js <template> <section id="map" style="width: 90%; height: 700px"></section> </template> <script> import { PositionControl, transformRequest4326 } from 'mapboxgl-tools' export default { mounted() { const map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/light-v11', zoom: 18, center: [114.26697720786854,30.63091896813168], transformRequest: transformRequest4326, }) map.addControl(new PositionControl({ title: '坐标定位', type: 'feature' }), 'top-right') } } </script> ``` **坐标格式说明:** - 十进制度数:`114.266977,30.630919` - 度分格式:`114°16'1.15"E,30°37'51.31"N` - 度分秒格式:`114°16'1.15"E,30°37'51.31"N` - 多个坐标使用换行或分号(;)分隔 **使用方法:** 1. 点击定位按钮打开控制面板 2. 在输入框中输入坐标(支持多个) 3. 点击"区域定位"快速选择省市 4. 点击坐标列表中的项可切换选中状态 5. 点击"清空"按钮清除所有坐标 *控制器效果* ![img](./public/imgs/PositionControl.png) ### 9.LayerTreeControl > 图层集合控制器 | Property | Type | 默认值 | Description | | ----- | ------------- | ------------- | ------------------------ | | title | String | 地图图层 | 入口按钮title | | isAutoShow | Boolean | true | 是否默认展开图层框 | | titleWidth | Number | 100 | 图层名称(父级)宽度 | | layers | <font color="#f00">Layer</font>[] | [] | 图层配置 | | onAfterOrder | Function | | 排序之后的回调,参数({allLayers: 所有图层配置(含未打开的), layers: 打开的图层配置, beforeIdMap: 所有已打开图层按照顺序下beforeId集合}) | ###### <font color="#f00">Layer</font>对象参数 | Property | Type | 默认值 | Description | 父级字段 | 子级字段 | | ----- | ------------- | ------------- | ------------------------ | ----- | ----- | | id | String | | 保持唯一,必填! | true | true | | title | String | | 名称 | true | true | | checked | Boolean | false | 初次是否选中打开 | false | true | | radio | Boolean | false | 是否单选,true的时候和同组之间为true的其他图层互斥 | false | true | | zIndex | Number | 1 | 当前图层的权重,越大权重越高,显示优先级越高 | false | true | | icon | String/Array | | 图片path,使用<font color=blue>预制的icon</font>,或使用iconfont中图层path的d属性集合| false | true | | color | String | | 名称颜色 | false | true | | sourceConfig | Object | { type: 'raster', tileSize: 256 } | mapbox中source的配置文件 | false | true | | layerConfig | Object | { type: 'raster' } | mapbox中图层的配置文件 | false | true | | children | Array | [] | 子集 | true | false | | onChange | Function | | 图层打开/关闭的回调 | false | true | ###### 预制<font color="#f00">icon</font> | key | Description | | --- | --- | | circle | 圆形 | | eye | 眼睛 | | eye_close | 眼睛-闭着 | | rect | 方形 | | diamond | 菱形 | | star | 五角星 | | water | 水滴 | | loc | 定位点 | | triable | 三角形 | | hexagon | 六变形 | | pentagon | 5变形 | | tag | 标签 | | balloon | 气球 | | layer | 图层 | | flag | 红旗 | | pen | 笔 | | tack | 大头钉 | ```js <template> <section id="map" style="width: 90%; height: 700px"></section> </template> <script> import { LayerTreeControl, transformRequest4326 } from 'mapboxgl-tools' const layerData = [ { title: '基础地图', id: 'base', children: [ { title: '底图1', id: '1-1', radio: true, checked: true, color: '#f00', icon: 'water', zIndex: 0, sourceConfig: { tiles: ['自己的模板地址']}, onChange(e) { alert('1-1) }, }, { title: '底图2', id: '1-2', radio: true, color: '#f00', icon: 'water', zIndex: 1, sourceConfig: { tiles: ['自己的模板地址']}, onChange(e) { alert('1-2')}, }, { title: '资料1-3', id: '1-3', color: '#f00', icon: 'rect', zIndex: 0, sourceConfig: { tiles: ['自己的模板地址']}, onChange(e) { alert('1-3')}, }, ] }, { title: '基础地图2', id: 'base2', // children为空或不传值,则过滤之 }, { title: '参考资料', id: 'geoserver', children: [ { title: '资料2-1', id: '2-1', checked: true, color: '#ff5299', icon: 'circle', zIndex: 2, sourceConfig: { tiles: ['自己的模板地址']}, }, { title: '资料2-2', id: '2-2', checked: true, color: '#0f5264', icon: 'circle', zIndex: 3, sourceConfig: { tiles: ['自己的模板地址']}, }, ] }, { title: '点图层', id: 'point', children: [ { title: '点-1', id: '3-1', color: '#ff5299', zIndex: 5, icon: [ "M831.996366 320.007996c0 163.498143-122.598608 298.396611-280.996809 317.596392-3.999955 0.499994-6.99992 3.899956-6.99992 7.899911V992.000363c0 8.7999-3.599959 16.799809-9.399894 22.599744-5.799934 5.799934-13.799843 9.399893-22.599743 9.399893-17.699799 0-31.999637-14.299838-31.999637-31.999637V645.604298c0-3.999955-2.999966-7.399916-6.99992-7.899911C315.002237 618.404607 192.503629 484.106132 192.003634 321.007984 191.403641 144.509989 332.702036 1.511613 509.200032 0.01163 687.19801-1.488353 831.996366 142.310014 831.996366 320.007996z" ],// 使用自定义图标 sourceConfig: { tiles: ['自己的模板地址']}, }, { title: '点-2', id: '3-2', checked: true, color: '#009', zIndex: 5, icon: [ "M831.996366 320.007996c0 163.498143-122.598608 298.396611-280.996809 317.596392-3.999955 0.499994-6.99992 3.899956-6.99992 7.899911V992.000363c0 8.7999-3.599959 16.799809-9.399894 22.599744-5.799934 5.799934-13.799843 9.399893-22.599743 9.399893-17.699799 0-31.999637-14.299838-31.999637-31.999637V645.604298c0-3.999955-2.999966-7.399916-6.99992-7.899911C315.002237 618.404607 192.503629 484.106132 192.003634 321.007984 191.403641 144.509989 332.702036 1.511613 509.200032 0.01163 687.19801-1.488353 831.996366 142.310014 831.996366 320.007996z" ], sourceConfig: { tiles: ['自己的模板地址']}, }, { title: '点-3', id: '3-3', checked: true, color: '#a08', zIndex: 6, icon: [ "M831.996366 320.007996c0 163.498143-122.598608 298.396611-280.996809 317.596392-3.999955 0.499994-6.99992 3.899956-6.99992 7.899911V992.000363c0 8.7999-3.599959 16.799809-9.399894 22.599744-5.799934 5.799934-13.799843 9.399893-22.599743 9.399893-17.699799 0-31.999637-14.299838-31.999637-31.999637V645.604298c0-3.999955-2.999966-7.399916-6.99992-7.899911C315.002237 618.404607 192.503629 484.106132 192.003634 321.007984 191.403641 144.509989 332.702036 1.511613 509.200032 0.01163 687.19801-1.488353 831.996366 142.310014 831.996366 320.007996z" ], sourceConfig: { tiles: ['自己的模板地址']}, }, ] } ] export default { mounted() { const map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/light-v11', zoom: 18, center: [114.26697720786854,30.63091896813168], transformRequest: transformRequest4326, }) map.addControl(new LayerTreeControl({ isAutoShow: true, layers: layerData, }), 'top-right') } } </script> ``` *图层控件效果* ![img][img-layertree] [img-geoserver]:data:image/png;base64,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