5 files added
11 files modified
| | |
| | | "scripts": { |
| | | "start": "react-app-rewired start", |
| | | "build": "react-app-rewired build", |
| | | "update2": "pnpm update iclient3d-plot-diy --no-save --registry https://registry.npmjs.org", |
| | | "update2": "npm update iclient3d-plot-diy --no-save --registry https://registry.npmjs.org", |
| | | "code-to-md": "node extract-code-to-md.js" |
| | | }, |
| | | "keywords": [], |
| | |
| | | "@ant-design/icons": "^4.0.0", |
| | | "antd": "^4.24.16", |
| | | "echarts": "^5.6.0", |
| | | "iclient3d-plot-diy": "^1.0.26", |
| | | "iclient3d-plot-diy": "^1.0.29", |
| | | "iclient3d-plot-diy-attachment": "^1.0.2", |
| | | "jquery": "^3.7.1", |
| | | "@turf/turf": "^7.2.0", |
| | | "react-draggable": "^3.3.2", |
| | | "react-router-dom": "^5.3.4", |
| | | "rxjs": "^7.8.2" |
| | |
| | | super(props); |
| | | this.state = { |
| | | htmlString: '<h3>正在加载中...</h3>', |
| | | scale: 0 |
| | | }; |
| | | } |
| | | |
| | |
| | | this.setState({htmlString: window.marked.parse(mdText)}); |
| | | }); |
| | | //监听拨盘事件 |
| | | this.mapFunction.addScaleListener((scale) => { |
| | | this.setState({scale: scale}); |
| | | }) |
| | | } |
| | | |
| | | showData() { |
| | |
| | | <Button type="primary" onClick={() => this.setCameraHeightByScale(2500)}>1:2500</Button> |
| | | <Button type="primary" onClick={() => this.setCameraHeightByScale(10000)}>1:10000</Button> |
| | | <Button type="primary" onClick={() => this.setCameraHeightByScale(50000)}>1:50000</Button> |
| | | <span>当前比例尺: {this.state.scale}</span> |
| | | <div className={"code_wrapper"}> |
| | | <div dangerouslySetInnerHTML={{__html: this.state.htmlString}}></div> |
| | | </div> |
| | |
| | | }; |
| | | |
| | | showOptions2 = () => { |
| | | |
| | | this.mapFunction.mapApiService.showDrawDatas([{ |
| | | type: 'lddkgrps', |
| | | bj: 1, |
| | | qsjd: 30, |
| | | zzjd: 75, |
| | | lon: 102.72004539488224, lat: 30.991068100060593, height: 0, |
| | | useModify: false |
| | | }]); |
| | | |
| | | this.mapFunction.mapApiService.showDrawDatas([this.optionObjs['目标简标']]); |
| | | } |
| | | |
| | | |
| | |
| | | "useModify": false, |
| | | "lon": arr[0].lon, |
| | | "lat": arr[0].lat, |
| | | "height": arr[0].height || 0, |
| | | xz: true, |
| | | "height": arr[0].height, |
| | | points: [] |
| | | } |
| | | this.mapFunction.mapApiService.showDrawDatas([option]); |
| | |
| | | this.mapFunction.mapApiService.updateDraw("ccccc", { |
| | | lon: arr[number].lon, |
| | | lat: arr[number].lat, |
| | | height: arr[number].height, |
| | | points: arr.slice(0, number) |
| | | }); |
| | | }); |
| | |
| | | this.mapFunction.mapApiService.removeDraw(p.code); |
| | | }) |
| | | } |
| | | async getBox() { |
| | | |
| | | let p = await this.mapFunction.mapApiService.draw({ |
| | | type: "box", |
| | | }); |
| | | p.drawEnd.subscribe(value => { |
| | | let c = p.export(); |
| | | alert(JSON.stringify(c.points)); |
| | | this.mapFunction.mapApiService.removeDraw(p.code); |
| | | this.mapFunction.mapApiService.showDrawDatas([c]) |
| | | }) |
| | | } |
| | | async getLine() { |
| | | |
| | | let p = await this.mapFunction.mapApiService.draw({ |
| | | type: "line", |
| | | }); |
| | | p.drawEnd.subscribe(value => { |
| | | let c = p.export(); |
| | | alert(JSON.stringify(c.points)); |
| | | this.mapFunction.mapApiService.removeDraw(p.code); |
| | | this.mapFunction.mapApiService.showDrawDatas([c]) |
| | | }) |
| | | } |
| | | async getPolygon() { |
| | | |
| | | let p = await this.mapFunction.mapApiService.draw({ |
| | | type: "polygon", |
| | | }); |
| | | p.drawEnd.subscribe(value => { |
| | | let c = p.export(); |
| | | alert(JSON.stringify(c.points)); |
| | | this.mapFunction.mapApiService.removeDraw(p.code); |
| | | this.mapFunction.mapApiService.showDrawDatas([c]) |
| | | }) |
| | | } |
| | | async getCircle() { |
| | | |
| | | let p = await this.mapFunction.mapApiService.draw({ |
| | | type: "circle", |
| | | }); |
| | | p.drawEnd.subscribe(value => { |
| | | let c = p.export(); |
| | | alert(JSON.stringify(c.points)); |
| | | this.mapFunction.mapApiService.removeDraw(p.code); |
| | | this.mapFunction.mapApiService.showDrawDatas([c]) |
| | | }) |
| | | } |
| | | |
| | | render() { |
| | | return ( |
| | |
| | | /> |
| | | </div> |
| | | <Button type="primary" onClick={this.getPoints.bind(this)}>获取坐标点</Button> |
| | | <Button type="primary" onClick={this.getBox.bind(this)}>获取box</Button> |
| | | <Button type="primary" onClick={this.getLine.bind(this)}>获取线</Button> |
| | | <Button type="primary" onClick={this.getPolygon.bind(this)}>获取面</Button> |
| | | <Button type="primary" onClick={this.getCircle.bind(this)}>获取圆</Button> |
| | | <div className={"code_wrapper"}> |
| | | <div dangerouslySetInnerHTML={{__html: this.state.htmlString}}></div> |
| | | </div> |
| New file |
| | |
| | | |
| | | ### ExampleHightLightLocatePage 代码 |
| | | |
| | | ```jsx |
| | | import React, {Component} from 'react' |
| | | import './ExampleDrawPage.css' |
| | | import {GIS} from "iclient3d-plot-diy"; |
| | | import {Button} from "antd"; |
| | | |
| | | |
| | | export default class ExampleHightLightLocatePage extends Component { |
| | | |
| | | constructor(props) { |
| | | super(props); |
| | | this.state = { |
| | | htmlString: '<h3>正在加载中...</h3>', |
| | | }; |
| | | } |
| | | |
| | | componentDidMount() { |
| | | fetch('./example/ExampleHightLightLocatePage.md') |
| | | .then(response => response.text()) |
| | | .then(mdText => { |
| | | this.setState({htmlString: window.marked.parse(mdText)}); |
| | | }); |
| | | } |
| | | |
| | | render() { |
| | | return ( |
| | | <div className={"example_draw_container"}> |
| | | <h3>军标绘制拨盘功能</h3> |
| | | <div className={"map_wrapper"}> |
| | | <GIS refs={ |
| | | e => { |
| | | this.mapFunction = e |
| | | } |
| | | } |
| | | plotUrl={this.state.plotUrl} |
| | | mapRef={this} |
| | | showDefaultLayer={false} |
| | | /> |
| | | </div> |
| | | <Button type="primary" onClick={() => this.draw()}>高亮点</Button> |
| | | <Button type="primary" onClick={() => this.draw()}>高亮线</Button> |
| | | <Button type="primary" onClick={() => this.draw()}>高亮面</Button> |
| | | <Button type="primary" onClick={() => this.export()}>定位点</Button> |
| | | <Button type="primary" onClick={() => this.export()}>定位线</Button> |
| | | <Button type="primary" onClick={() => this.export()}>定位面</Button> |
| | | <div className={"code_wrapper"}> |
| | | <div dangerouslySetInnerHTML={{__html: this.state.htmlString}}></div> |
| | | </div> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | ``` |
| New file |
| | |
| | | |
| | | ### ExampleSelectPage 代码 |
| | | |
| | | ```jsx |
| | | import React, {Component} from 'react' |
| | | import './ExampleDrawPage.css' |
| | | import './ExampleSelectPage.css' |
| | | import {GIS} from "iclient3d-plot-diy"; |
| | | import {Button} from "antd"; |
| | | |
| | | |
| | | export class ExampleSelectPage extends Component { |
| | | |
| | | |
| | | optionObjs = { |
| | | "目标简标": { |
| | | bz: true, |
| | | bzlx: 'simple', |
| | | jbwb: 'R:00017', |
| | | type: "2002", |
| | | returnHeight: true, |
| | | useModify: false, |
| | | lon: 102.73054539488224, lat: 31.005468100060593, height: 0, |
| | | points: [], |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "目标详标": { |
| | | bz: true, |
| | | bzlx: 'detail', |
| | | jbwb: 'R:00017', |
| | | xbwb: "17/10/2019\n16:45:8\n9260.00-10400.00MHZ", |
| | | type: "2002", |
| | | useModify: false, |
| | | lon: 102.70054539488224, lat: 31.000468100060593, height: 0, |
| | | points: [], |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "飞行简标": { |
| | | bz: true, |
| | | bzlx: 'simple', |
| | | jbwb: "P:00019", |
| | | type: "2010", |
| | | useModify: false, |
| | | lon: 102.76054539488224, lat: 31.000468100060593, height: 0, |
| | | points: [{lon: 102.76554539488224, lat: 31.000468100060593, height: 0}, { |
| | | lon: 102.76904539488224, |
| | | lat: 30.992468100060593, |
| | | height: 0 |
| | | }], |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "飞行详标": { |
| | | bz: true, |
| | | bzlx: 'detail', |
| | | jbwb: 'P:00019', |
| | | xbwb: "F16-1\n美国\n16:45:56\nR:00019\nC:00019", |
| | | type: "2010", |
| | | useModify: false, |
| | | lon: 102.73054539488224, lat: 31.001068100060593, height: 0, |
| | | points: [{lon: 102.73554539488224, lat: 31.001068100060593, height: 0}, { |
| | | lon: 102.73904539488224, |
| | | lat: 30.992468100060593, |
| | | height: 0 |
| | | }], |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "雷达对抗侦察区域": { |
| | | type: "lddkzcqy", |
| | | bj: 1, |
| | | qsjd: 30, |
| | | zzjd: 75, |
| | | lon: 102.72004539488224, lat: 31.001068100060593, height: 0, |
| | | useModify: false, |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "雷达对抗干扰波束": { |
| | | type: 'lddkgrps', |
| | | bj: 1, |
| | | qsjd: 30, |
| | | zzjd: 75, |
| | | lon: 102.72004539488224, lat: 30.991068100060593, height: 0, |
| | | useModify: false, |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "雷达对抗测向线": { |
| | | type: "lddkcxx", |
| | | kcwb: "10110", |
| | | kcgls: 1, |
| | | kcjd: 30, |
| | | useModify: false, |
| | | lon: 102.76054539488224, lat: 31.011068100060593, height: 0, |
| | | points: [] |
| | | }, |
| | | "雷达对抗关系": { |
| | | type: "lddkgx", |
| | | kcwb: "10110", |
| | | kcgls: 1, |
| | | kcjd: 30, |
| | | useModify: false, |
| | | lon: 102.78054539488224, |
| | | lat: 31.015068100060593, |
| | | height: 0, |
| | | points: [] |
| | | }, |
| | | "雷达对目标探测": { |
| | | type: "lddmbtc", |
| | | bj: 0.5, |
| | | qsjd: 0, |
| | | zzjd: 360, |
| | | lon: 102.71004539488224, lat: 30.990068100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "通信对抗侦察区域": { |
| | | type: "txdkzcqy", |
| | | bj: 0.5, |
| | | qsjd: 0, |
| | | zzjd: 360, |
| | | lon: 102.69804539488224, lat: 30.990068100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "通信对抗干扰波束": { |
| | | type: "txdkgrps", |
| | | bj: 1, |
| | | qsjd: 30, |
| | | zzjd: 75, |
| | | lon: 102.76004539488224, lat: 30.991068100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "通信对抗测向线": { |
| | | type: "txdkcxx", |
| | | kcgls: 1, |
| | | kcjd: 30, |
| | | kcwb: "10110", |
| | | useModify: false, |
| | | lon: 102.76854539488224, lat: 31.009068100060593, height: 0, |
| | | points: [] |
| | | }, |
| | | "通信畅通区域": { |
| | | type: 'txctqy', |
| | | bj: 0.5, |
| | | qsjd: 0, |
| | | zzjd: 360, |
| | | lon: 102.71504539488224, lat: 30.980068100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "通信网标绘": { |
| | | type: "txw", |
| | | useModify: false, |
| | | lon: 102.70854539488224, lat: 31.0098468100060593, height: 0, |
| | | points: [] |
| | | }, |
| | | "光电对抗侦察区域": { |
| | | type: 'gddkzcqy', |
| | | bj: 0.5, |
| | | qsjd: 0, |
| | | zzjd: 360, |
| | | lon: 102.69054539488224, lat: 31.0098468100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "光电有源对抗干扰波束": { |
| | | type: 'gdyydkgrbs', |
| | | kcgls: 1, |
| | | kcjd: 30, |
| | | lon: 102.67054539488224, lat: 31.0098468100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "漫反射干扰区域": { |
| | | type: 'mfsgrqy', |
| | | bj: 1, |
| | | qsjd: 30, |
| | | zzjd: 75, |
| | | lon: 102.67054539488224, lat: 31.0028468100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | '烟幕形成区域': { |
| | | type: 'ymxcqy', |
| | | points: [{lon: 102.64984, lat: 30.99237, height: 0}, |
| | | {lon: 102.66012682459443, lat: 30.995109020954718, height: 0}, |
| | | {lon: 102.67126799815856, lat: 30.98766239848537, height: 0}, |
| | | {lon: 102.64984, lat: 30.983747593478107, height: 0}, |
| | | {lon: 102.64984, lat: 30.99237, height: 0}], |
| | | useModify: false, |
| | | }, |
| | | "掩护区域": { |
| | | type: 'yhqy', |
| | | points: [{lon: 102.642853926199, lat: 31.012509646376447, height: 0}, |
| | | {lon: 102.65927322610115, lat: 31.01540811637356, height: 0}, |
| | | {lon: 102.66192135373299, lat: 31.005988487769518, height: 0}, |
| | | {lon: 102.64755620178961, lat: 31.00246196283815, height: 0}, |
| | | {lon: 102.642853926199, lat: 31.012509646376447, height: 0}], |
| | | useModify: false, |
| | | }, |
| | | "协同关系": { |
| | | type: 'xtgx', |
| | | points: [{lon: 102.642853926199, lat: 31.012509646376447, height: 0}, |
| | | {lon: 102.66192135373299, lat: 31.005988487769518, height: 0}], |
| | | useModify: false, |
| | | }, |
| | | "干扰线": { |
| | | type: 'grx', |
| | | points: [{lon: 102.732420985008, lat: 30.97556325857848, height: 0}, |
| | | {lon: 102.73983041603873, lat: 30.97504986175468, height: 0}], |
| | | useModify: false |
| | | }, |
| | | "预警线": { |
| | | type: 'yjx', |
| | | useModify: false, |
| | | points: [{lon: 102.732420985008, lat: 30.97956325857848, height: 0}, |
| | | {lon: 102.73983041603873, lat: 30.98004986175468, height: 0}] |
| | | }, |
| | | "目标分配线": { |
| | | type: 'mbfpx', |
| | | useModify: false, |
| | | points: [{lon: 102.732420985008, lat: 30.97756325857848, height: 0}, |
| | | {lon: 102.73983041603873, lat: 30.97804986175468, height: 0}] |
| | | }, |
| | | "目标醒目": { |
| | | bz: true, |
| | | xz: true, |
| | | bzlx: 'simple', |
| | | jbwb: 'R:00017', |
| | | type: "2002", |
| | | returnHeight: true, |
| | | useModify: false, |
| | | lon: 102.73554539488224, lat: 31.005068100060593, height: 0, |
| | | points: [] |
| | | }, |
| | | } |
| | | |
| | | constructor(props) { |
| | | super(props); |
| | | this.state = { |
| | | htmlString: '<h3>正在加载中...</h3>', |
| | | }; |
| | | } |
| | | |
| | | componentDidMount() { |
| | | |
| | | let options = []; |
| | | for (let key in this.optionObjs) { |
| | | options.push(this.optionObjs[key]); |
| | | } |
| | | this.mapFunction.mapApiService.showDrawDatas(options); |
| | | |
| | | this.mapFunction.mapApiService.updateModel('select') |
| | | this.mapFunction.mapApiService.mapSelectedEvent.addEventListener((selectedData) => { |
| | | // console.log(selectedData); |
| | | document.getElementById('textarea').value = JSON.stringify(selectedData); |
| | | }) |
| | | |
| | | setTimeout(() => { |
| | | this.mapFunction.mapApiService.useDrawSelect('box', true) |
| | | }, 1000); |
| | | this.mapFunction.mapApiService.mapSelectedEvent.addEventListener((selectedData) => { |
| | | console.log(selectedData); |
| | | }) |
| | | |
| | | |
| | | fetch('./example/ExampleSelectPage.md') |
| | | .then(response => response.text()) |
| | | .then(mdText => { |
| | | this.setState({htmlString: window.marked.parse(mdText)}); |
| | | }); |
| | | } |
| | | |
| | | useSelect() { |
| | | this.mapFunction.mapApiService.updateModel('select') |
| | | } |
| | | |
| | | useBoxSelect() { |
| | | this.mapFunction.mapApiService.updateModel('select') |
| | | this.mapFunction.mapApiService.useDrawSelect('box', true) |
| | | } |
| | | |
| | | unBoxSelect() { |
| | | this.mapFunction.mapApiService.clearDrawSelect() |
| | | } |
| | | |
| | | clearSelected() { |
| | | this.mapFunction.mapApiService.clearSelected(); |
| | | } |
| | | |
| | | useModify() { |
| | | this.mapFunction.mapApiService.updateModel('modify') |
| | | } |
| | | |
| | | outSelected() { |
| | | this.mapFunction.mapApiService.triggerSelected(['draw_primitive_1020_']) |
| | | } |
| | | |
| | | render() { |
| | | return ( |
| | | <div className={"example_draw_container"}> |
| | | <h3>军标绘制拨盘功能</h3> |
| | | <div className={"map_wrapper"}> |
| | | <GIS refs={e => { |
| | | this.mapFunction = e |
| | | }} |
| | | plotUrl={this.state.plotUrl} |
| | | mapRef={this} |
| | | showDefaultLayer={true} |
| | | /> |
| | | </div> |
| | | <Button type="primary" onClick={() => this.useSelect()}>选择</Button> |
| | | <Button type="primary" onClick={() => this.useBoxSelect()}>框选</Button> |
| | | <Button type="primary" onClick={() => this.unBoxSelect()}>取消框选</Button> |
| | | <Button type="primary" onClick={() => this.clearSelected()}>清除选择</Button> |
| | | <Button type="primary" onClick={() => this.outSelected()}>外部指定选择对象</Button> |
| | | <Button type="primary" onClick={() => this.useModify()}>修改模式</Button> |
| | | <textarea id="textarea" className={"textarea"}></textarea> |
| | | <div className={"code_wrapper"}> |
| | | <div dangerouslySetInnerHTML={{__html: this.state.htmlString}}></div> |
| | | </div> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | ``` |
| | |
| | | super(props); |
| | | this.state = { |
| | | htmlString: '<h3>正在加载中...</h3>', |
| | | scale: 0 |
| | | }; |
| | | } |
| | | |
| | |
| | | this.setState({htmlString: window.marked.parse(mdText)}); |
| | | }); |
| | | //监听拨盘事件 |
| | | this.mapFunction.addScaleListener((scale) => { |
| | | this.setState({scale: scale}); |
| | | }) |
| | | } |
| | | |
| | | showData() { |
| | |
| | | <Button type="primary" onClick={() => this.setCameraHeightByScale(2500)}>1:2500</Button> |
| | | <Button type="primary" onClick={() => this.setCameraHeightByScale(10000)}>1:10000</Button> |
| | | <Button type="primary" onClick={() => this.setCameraHeightByScale(50000)}>1:50000</Button> |
| | | <span>当前比例尺: {this.state.scale}</span> |
| | | <div className={"code_wrapper"}> |
| | | <div dangerouslySetInnerHTML={{__html: this.state.htmlString}}></div> |
| | | </div> |
| | |
| | | }; |
| | | |
| | | showOptions2 = () => { |
| | | |
| | | this.mapFunction.mapApiService.showDrawDatas([{ |
| | | type: 'lddkgrps', |
| | | bj: 1, |
| | | qsjd: 30, |
| | | zzjd: 75, |
| | | lon: 102.72004539488224, lat: 30.991068100060593, height: 0, |
| | | useModify: false |
| | | }]); |
| | | |
| | | this.mapFunction.mapApiService.showDrawDatas([this.optionObjs['目标简标']]); |
| | | } |
| | | |
| | | |
| | |
| | | "useModify": false, |
| | | "lon": arr[0].lon, |
| | | "lat": arr[0].lat, |
| | | "height": arr[0].height || 0, |
| | | xz: true, |
| | | "height": arr[0].height, |
| | | points: [] |
| | | } |
| | | this.mapFunction.mapApiService.showDrawDatas([option]); |
| | |
| | | this.mapFunction.mapApiService.updateDraw("ccccc", { |
| | | lon: arr[number].lon, |
| | | lat: arr[number].lat, |
| | | height: arr[number].height, |
| | | points: arr.slice(0, number) |
| | | }); |
| | | }); |
| | |
| | | this.mapFunction.mapApiService.removeDraw(p.code); |
| | | }) |
| | | } |
| | | async getBox() { |
| | | |
| | | let p = await this.mapFunction.mapApiService.draw({ |
| | | type: "box", |
| | | }); |
| | | p.drawEnd.subscribe(value => { |
| | | let c = p.export(); |
| | | alert(JSON.stringify(c.points)); |
| | | this.mapFunction.mapApiService.removeDraw(p.code); |
| | | this.mapFunction.mapApiService.showDrawDatas([c]) |
| | | }) |
| | | } |
| | | async getLine() { |
| | | |
| | | let p = await this.mapFunction.mapApiService.draw({ |
| | | type: "line", |
| | | }); |
| | | p.drawEnd.subscribe(value => { |
| | | let c = p.export(); |
| | | alert(JSON.stringify(c.points)); |
| | | this.mapFunction.mapApiService.removeDraw(p.code); |
| | | this.mapFunction.mapApiService.showDrawDatas([c]) |
| | | }) |
| | | } |
| | | async getPolygon() { |
| | | |
| | | let p = await this.mapFunction.mapApiService.draw({ |
| | | type: "polygon", |
| | | }); |
| | | p.drawEnd.subscribe(value => { |
| | | let c = p.export(); |
| | | alert(JSON.stringify(c.points)); |
| | | this.mapFunction.mapApiService.removeDraw(p.code); |
| | | this.mapFunction.mapApiService.showDrawDatas([c]) |
| | | }) |
| | | } |
| | | async getCircle() { |
| | | |
| | | let p = await this.mapFunction.mapApiService.draw({ |
| | | type: "circle", |
| | | }); |
| | | p.drawEnd.subscribe(value => { |
| | | let c = p.export(); |
| | | alert(JSON.stringify(c.points)); |
| | | this.mapFunction.mapApiService.removeDraw(p.code); |
| | | this.mapFunction.mapApiService.showDrawDatas([c]) |
| | | }) |
| | | } |
| | | |
| | | render() { |
| | | return ( |
| | |
| | | /> |
| | | </div> |
| | | <Button type="primary" onClick={this.getPoints.bind(this)}>获取坐标点</Button> |
| | | <Button type="primary" onClick={this.getBox.bind(this)}>获取box</Button> |
| | | <Button type="primary" onClick={this.getLine.bind(this)}>获取线</Button> |
| | | <Button type="primary" onClick={this.getPolygon.bind(this)}>获取面</Button> |
| | | <Button type="primary" onClick={this.getCircle.bind(this)}>获取圆</Button> |
| | | <div className={"code_wrapper"}> |
| | | <div dangerouslySetInnerHTML={{__html: this.state.htmlString}}></div> |
| | | </div> |
| New file |
| | |
| | | import React, {Component} from 'react' |
| | | import './ExampleDrawPage.css' |
| | | import {GIS} from "iclient3d-plot-diy"; |
| | | import {Button} from "antd"; |
| | | |
| | | |
| | | export default class ExampleHightLightLocatePage extends Component { |
| | | |
| | | constructor(props) { |
| | | super(props); |
| | | this.state = { |
| | | htmlString: '<h3>正在加载中...</h3>', |
| | | }; |
| | | } |
| | | |
| | | componentDidMount() { |
| | | fetch('./example/ExampleHightLightLocatePage.md') |
| | | .then(response => response.text()) |
| | | .then(mdText => { |
| | | this.setState({htmlString: window.marked.parse(mdText)}); |
| | | }); |
| | | } |
| | | |
| | | render() { |
| | | return ( |
| | | <div className={"example_draw_container"}> |
| | | <h3>军标绘制拨盘功能</h3> |
| | | <div className={"map_wrapper"}> |
| | | <GIS refs={ |
| | | e => { |
| | | this.mapFunction = e |
| | | } |
| | | } |
| | | plotUrl={this.state.plotUrl} |
| | | mapRef={this} |
| | | showDefaultLayer={false} |
| | | /> |
| | | </div> |
| | | <Button type="primary" onClick={() => this.draw()}>高亮点</Button> |
| | | <Button type="primary" onClick={() => this.draw()}>高亮线</Button> |
| | | <Button type="primary" onClick={() => this.draw()}>高亮面</Button> |
| | | <Button type="primary" onClick={() => this.export()}>定位点</Button> |
| | | <Button type="primary" onClick={() => this.export()}>定位线</Button> |
| | | <Button type="primary" onClick={() => this.export()}>定位面</Button> |
| | | <div className={"code_wrapper"}> |
| | | <div dangerouslySetInnerHTML={{__html: this.state.htmlString}}></div> |
| | | </div> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | <li><NavLink to='/example/aggregator'>自动聚合</NavLink></li> |
| | | <li><NavLink to='/example/defaultMap2d'>默认2D</NavLink></li> |
| | | <li><NavLink to='/example/getPoints'>动态获取坐标</NavLink></li> |
| | | <li><NavLink to='/example/select'>军标选择</NavLink></li> |
| | | </ul> |
| | | <div className={"button_wrapper"}> |
| | | |
| New file |
| | |
| | | .textarea { |
| | | width: 100%; |
| | | height: 150px; |
| | | } |
| New file |
| | |
| | | import React, {Component} from 'react' |
| | | import './ExampleDrawPage.css' |
| | | import './ExampleSelectPage.css' |
| | | import {GIS} from "iclient3d-plot-diy"; |
| | | import {Button} from "antd"; |
| | | |
| | | |
| | | export class ExampleSelectPage extends Component { |
| | | |
| | | |
| | | optionObjs = { |
| | | "目标简标": { |
| | | bz: true, |
| | | bzlx: 'simple', |
| | | jbwb: 'R:00017', |
| | | type: "2002", |
| | | returnHeight: true, |
| | | useModify: false, |
| | | lon: 102.73054539488224, lat: 31.005468100060593, height: 0, |
| | | points: [], |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "目标详标": { |
| | | bz: true, |
| | | bzlx: 'detail', |
| | | jbwb: 'R:00017', |
| | | xbwb: "17/10/2019\n16:45:8\n9260.00-10400.00MHZ", |
| | | type: "2002", |
| | | useModify: false, |
| | | lon: 102.70054539488224, lat: 31.000468100060593, height: 0, |
| | | points: [], |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "飞行简标": { |
| | | bz: true, |
| | | bzlx: 'simple', |
| | | jbwb: "P:00019", |
| | | type: "2010", |
| | | useModify: false, |
| | | lon: 102.76054539488224, lat: 31.000468100060593, height: 0, |
| | | points: [{lon: 102.76554539488224, lat: 31.000468100060593, height: 0}, { |
| | | lon: 102.76904539488224, |
| | | lat: 30.992468100060593, |
| | | height: 0 |
| | | }], |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "飞行详标": { |
| | | bz: true, |
| | | bzlx: 'detail', |
| | | jbwb: 'P:00019', |
| | | xbwb: "F16-1\n美国\n16:45:56\nR:00019\nC:00019", |
| | | type: "2010", |
| | | useModify: false, |
| | | lon: 102.73054539488224, lat: 31.001068100060593, height: 0, |
| | | points: [{lon: 102.73554539488224, lat: 31.001068100060593, height: 0}, { |
| | | lon: 102.73904539488224, |
| | | lat: 30.992468100060593, |
| | | height: 0 |
| | | }], |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "雷达对抗侦察区域": { |
| | | type: "lddkzcqy", |
| | | bj: 1, |
| | | qsjd: 30, |
| | | zzjd: 75, |
| | | lon: 102.72004539488224, lat: 31.001068100060593, height: 0, |
| | | useModify: false, |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "雷达对抗干扰波束": { |
| | | type: 'lddkgrps', |
| | | bj: 1, |
| | | qsjd: 30, |
| | | zzjd: 75, |
| | | lon: 102.72004539488224, lat: 30.991068100060593, height: 0, |
| | | useModify: false, |
| | | iconSize: [[20, 20], [30, 30], [40, 40]] |
| | | }, |
| | | "雷达对抗测向线": { |
| | | type: "lddkcxx", |
| | | kcwb: "10110", |
| | | kcgls: 1, |
| | | kcjd: 30, |
| | | useModify: false, |
| | | lon: 102.76054539488224, lat: 31.011068100060593, height: 0, |
| | | points: [] |
| | | }, |
| | | "雷达对抗关系": { |
| | | type: "lddkgx", |
| | | kcwb: "10110", |
| | | kcgls: 1, |
| | | kcjd: 30, |
| | | useModify: false, |
| | | lon: 102.78054539488224, |
| | | lat: 31.015068100060593, |
| | | height: 0, |
| | | points: [] |
| | | }, |
| | | "雷达对目标探测": { |
| | | type: "lddmbtc", |
| | | bj: 0.5, |
| | | qsjd: 0, |
| | | zzjd: 360, |
| | | lon: 102.71004539488224, lat: 30.990068100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "通信对抗侦察区域": { |
| | | type: "txdkzcqy", |
| | | bj: 0.5, |
| | | qsjd: 0, |
| | | zzjd: 360, |
| | | lon: 102.69804539488224, lat: 30.990068100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "通信对抗干扰波束": { |
| | | type: "txdkgrps", |
| | | bj: 1, |
| | | qsjd: 30, |
| | | zzjd: 75, |
| | | lon: 102.76004539488224, lat: 30.991068100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "通信对抗测向线": { |
| | | type: "txdkcxx", |
| | | kcgls: 1, |
| | | kcjd: 30, |
| | | kcwb: "10110", |
| | | useModify: false, |
| | | lon: 102.76854539488224, lat: 31.009068100060593, height: 0, |
| | | points: [] |
| | | }, |
| | | "通信畅通区域": { |
| | | type: 'txctqy', |
| | | bj: 0.5, |
| | | qsjd: 0, |
| | | zzjd: 360, |
| | | lon: 102.71504539488224, lat: 30.980068100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "通信网标绘": { |
| | | type: "txw", |
| | | useModify: false, |
| | | lon: 102.70854539488224, lat: 31.0098468100060593, height: 0, |
| | | points: [] |
| | | }, |
| | | "光电对抗侦察区域": { |
| | | type: 'gddkzcqy', |
| | | bj: 0.5, |
| | | qsjd: 0, |
| | | zzjd: 360, |
| | | lon: 102.69054539488224, lat: 31.0098468100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "光电有源对抗干扰波束": { |
| | | type: 'gdyydkgrbs', |
| | | kcgls: 1, |
| | | kcjd: 30, |
| | | lon: 102.67054539488224, lat: 31.0098468100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | "漫反射干扰区域": { |
| | | type: 'mfsgrqy', |
| | | bj: 1, |
| | | qsjd: 30, |
| | | zzjd: 75, |
| | | lon: 102.67054539488224, lat: 31.0028468100060593, height: 0, |
| | | useModify: false, |
| | | }, |
| | | '烟幕形成区域': { |
| | | type: 'ymxcqy', |
| | | points: [{lon: 102.64984, lat: 30.99237, height: 0}, |
| | | {lon: 102.66012682459443, lat: 30.995109020954718, height: 0}, |
| | | {lon: 102.67126799815856, lat: 30.98766239848537, height: 0}, |
| | | {lon: 102.64984, lat: 30.983747593478107, height: 0}, |
| | | {lon: 102.64984, lat: 30.99237, height: 0}], |
| | | useModify: false, |
| | | }, |
| | | "掩护区域": { |
| | | type: 'yhqy', |
| | | points: [{lon: 102.642853926199, lat: 31.012509646376447, height: 0}, |
| | | {lon: 102.65927322610115, lat: 31.01540811637356, height: 0}, |
| | | {lon: 102.66192135373299, lat: 31.005988487769518, height: 0}, |
| | | {lon: 102.64755620178961, lat: 31.00246196283815, height: 0}, |
| | | {lon: 102.642853926199, lat: 31.012509646376447, height: 0}], |
| | | useModify: false, |
| | | }, |
| | | "协同关系": { |
| | | type: 'xtgx', |
| | | points: [{lon: 102.642853926199, lat: 31.012509646376447, height: 0}, |
| | | {lon: 102.66192135373299, lat: 31.005988487769518, height: 0}], |
| | | useModify: false, |
| | | }, |
| | | "干扰线": { |
| | | type: 'grx', |
| | | points: [{lon: 102.732420985008, lat: 30.97556325857848, height: 0}, |
| | | {lon: 102.73983041603873, lat: 30.97504986175468, height: 0}], |
| | | useModify: false |
| | | }, |
| | | "预警线": { |
| | | type: 'yjx', |
| | | useModify: false, |
| | | points: [{lon: 102.732420985008, lat: 30.97956325857848, height: 0}, |
| | | {lon: 102.73983041603873, lat: 30.98004986175468, height: 0}] |
| | | }, |
| | | "目标分配线": { |
| | | type: 'mbfpx', |
| | | useModify: false, |
| | | points: [{lon: 102.732420985008, lat: 30.97756325857848, height: 0}, |
| | | {lon: 102.73983041603873, lat: 30.97804986175468, height: 0}] |
| | | }, |
| | | "目标醒目": { |
| | | bz: true, |
| | | xz: true, |
| | | bzlx: 'simple', |
| | | jbwb: 'R:00017', |
| | | type: "2002", |
| | | returnHeight: true, |
| | | useModify: false, |
| | | lon: 102.73554539488224, lat: 31.005068100060593, height: 0, |
| | | points: [] |
| | | }, |
| | | } |
| | | |
| | | constructor(props) { |
| | | super(props); |
| | | this.state = { |
| | | htmlString: '<h3>正在加载中...</h3>', |
| | | }; |
| | | } |
| | | |
| | | componentDidMount() { |
| | | |
| | | let options = []; |
| | | for (let key in this.optionObjs) { |
| | | options.push(this.optionObjs[key]); |
| | | } |
| | | this.mapFunction.mapApiService.showDrawDatas(options); |
| | | |
| | | this.mapFunction.mapApiService.updateModel('select') |
| | | this.mapFunction.mapApiService.mapSelectedEvent.addEventListener((selectedData) => { |
| | | // console.log(selectedData); |
| | | document.getElementById('textarea').value = JSON.stringify(selectedData); |
| | | }) |
| | | |
| | | setTimeout(() => { |
| | | this.mapFunction.mapApiService.useDrawSelect('box', true) |
| | | }, 1000); |
| | | this.mapFunction.mapApiService.mapSelectedEvent.addEventListener((selectedData) => { |
| | | console.log(selectedData); |
| | | }) |
| | | |
| | | |
| | | fetch('./example/ExampleSelectPage.md') |
| | | .then(response => response.text()) |
| | | .then(mdText => { |
| | | this.setState({htmlString: window.marked.parse(mdText)}); |
| | | }); |
| | | } |
| | | |
| | | useSelect() { |
| | | this.mapFunction.mapApiService.updateModel('select') |
| | | } |
| | | |
| | | useBoxSelect() { |
| | | this.mapFunction.mapApiService.updateModel('select') |
| | | this.mapFunction.mapApiService.useDrawSelect('box', true) |
| | | } |
| | | |
| | | unBoxSelect() { |
| | | this.mapFunction.mapApiService.clearDrawSelect() |
| | | } |
| | | |
| | | clearSelected() { |
| | | this.mapFunction.mapApiService.clearSelected(); |
| | | } |
| | | |
| | | useModify() { |
| | | this.mapFunction.mapApiService.updateModel('modify') |
| | | } |
| | | |
| | | outSelected() { |
| | | this.mapFunction.mapApiService.triggerSelected(['draw_primitive_1020_']) |
| | | } |
| | | |
| | | render() { |
| | | return ( |
| | | <div className={"example_draw_container"}> |
| | | <h3>军标绘制拨盘功能</h3> |
| | | <div className={"map_wrapper"}> |
| | | <GIS refs={e => { |
| | | this.mapFunction = e |
| | | }} |
| | | plotUrl={this.state.plotUrl} |
| | | mapRef={this} |
| | | showDefaultLayer={true} |
| | | /> |
| | | </div> |
| | | <Button type="primary" onClick={() => this.useSelect()}>选择</Button> |
| | | <Button type="primary" onClick={() => this.useBoxSelect()}>框选</Button> |
| | | <Button type="primary" onClick={() => this.unBoxSelect()}>取消框选</Button> |
| | | <Button type="primary" onClick={() => this.clearSelected()}>清除选择</Button> |
| | | <Button type="primary" onClick={() => this.outSelected()}>外部指定选择对象</Button> |
| | | <Button type="primary" onClick={() => this.useModify()}>修改模式</Button> |
| | | <textarea id="textarea" className={"textarea"}></textarea> |
| | | <div className={"code_wrapper"}> |
| | | <div dangerouslySetInnerHTML={{__html: this.state.htmlString}}></div> |
| | | </div> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
| | | |