Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
SelectArea.js.map 7.26 KiB
{"version":3,"file":"SelectArea.js","sourceRoot":"","sources":["../../src/reactComponents/SelectArea.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by glenn on 6/12/2017.\r\n */\r\n\r\nimport {React} from './reactAndRedux';\r\nimport ol = require('custom-ol');\r\nimport LayerBaseVectorGeoJson from '../layers/LayerBaseVectorGeoJson';\r\nimport {proj4326, proj3857} from '../olHelpers/projections'\r\nimport makeGuid from '../util/makeGuid';\r\nimport getMap from './helpers/get_map';\r\n\r\nexport interface iSelectArea{\r\n    map: ol.Map | (() => ol.Map);\r\n    callback: (coords: Array<number[]>) => any\r\n}\r\n\r\nexport class SelectArea extends React.Component<iSelectArea, null> {\r\n    map: ol.Map;\r\n    callback: (coords: Array<number[]>) => any;\r\n    areaOverlay: LayerBaseVectorGeoJson;\r\n    draw: ol.interaction.Draw;\r\n    selectId: string;\r\n    cancelId: string;\r\n    selectButton: HTMLButtonElement;\r\n    cancelButton: HTMLButtonElement;\r\n\r\n\r\n    constructor(props: iSelectArea, context: Object) {\r\n        super(props, context);\r\n\r\n        this.selectId = makeGuid();\r\n        this.cancelId = makeGuid();\r\n\r\n        this.callback = this.props.callback;\r\n\r\n        this.areaOverlay = new LayerBaseVectorGeoJson('',\r\n            {\r\n                style: new ol.style.Style({\r\n                    fill: new ol.style.Fill({\r\n                        color: 'rgba(255, 0, 237, 0.1)'\r\n                    }),\r\n                    stroke: new ol.style.Stroke({\r\n                        color: 'rgb(255, 0, 237)',\r\n                        width: 2\r\n                    })\r\n                }),\r\n                transform: {dataProjection: proj4326, featureProjection: proj3857}\r\n            });\r\n\r\n        this.draw = new ol.interaction.Draw({\r\n            source: this.areaOverlay.source,\r\n            type: 'Polygon'\r\n        });\r\n\r\n        this.draw.on('drawend', (evt: {feature: {getGeometry: () => ol.geom.Polygon}}) => {\r\n            this.selectButton.style.display = '';\r\n            this.cancelButton.style.display = 'none';\r\n\r\n            let geom = evt.feature.getGeometry();\r\n            let geomClone = geom.clone();\r\n\r\n            geomClone.transform('EPSG:3857', 'EPSG:4326');\r\n\r\n            setTimeout(() => {\r\n                this.map.removeInteraction(this.draw);\r\n            }, 100);\r\n\r\n            let outCoords = [];\r\n            let ccc = geomClone.getCoordinates()[0];\r\n\r\n            for (let cc of ccc) {\r\n                outCoords.push([Math.round(cc[0] * 1000000) / 1000000, Math.round(cc[1] * 1000000) / 1000000]);\r\n            }\r\n\r\n            this.callback(outCoords);\r\n        });\r\n    }\r\n\r\n\r\n    componentDidMount() {\r\n        this.selectButton = document.getElementById(this.selectId) as HTMLButtonElement;\r\n        this.cancelButton = document.getElementById(this.cancelId) as HTMLButtonElement;\r\n        getMap(this.props.map, this.areaOverlay.olLayer).then((m) => {this.map = m})\r\n    }\r\n\r\n\r\n    setArea() {\r\n        if (!this.map) {\r\n            return;\r\n        }\r\n\r\n        this.selectButton.style.display = 'none';\r\n        this.cancelButton.style.display = '';\r\n\r\n        this.areaOverlay.source.clear();\r\n        this.map.addInteraction(this.draw);\r\n        this.callback(null);\r\n    }\r\n\r\n    cancel() {\r\n        if (!this.map) {\r\n            return;\r\n        }\r\n        this.selectButton.style.display = '';\r\n        this.cancelButton.style.display = 'none';\r\n\r\n        this.areaOverlay.source.clear();\r\n        this.map.removeInteraction(this.draw);\r\n\r\n        this.callback(null);\r\n    }\r\n\r\n    render() {\r\n        return <div className=\"ol-select-area\" style={{margin: '10px'}}>\r\n            <button id={this.selectId} onClick={() => {\r\n                this.setArea()\r\n            }}>Select Area\r\n            </button>\r\n            <button id={this.cancelId} onClick={() => {\r\n                this.cancel()\r\n            }} style={{display: 'none'}}>Cancel\r\n            </button>\r\n        </div>\r\n    }\r\n}\r\n"]}