Browse Source

[新增]单位总平面图引入gis导出图片

tangshan
邵佳豪 4 years ago
parent
commit
fae5b30695
  1. 23
      package-lock.json
  2. 1
      package.json
  3. 40
      src/app/gis-management/gis-labeling/gis-labeling.component.ts
  4. 9
      src/app/test/test.component.html
  5. 17
      src/app/test/test.component.scss
  6. 47
      src/app/test/test.component.ts
  7. 19
      src/app/ui/collection-tools-plan/collection-tools.component.html
  8. 41
      src/app/ui/collection-tools-plan/collection-tools.component.ts

23
package-lock.json generated

@ -6849,21 +6849,6 @@
"timsort": "^0.3.0"
}
},
"css-line-break": {
"version": "1.1.1",
"resolved": "https://registry.npm.taobao.org/css-line-break/download/css-line-break-1.1.1.tgz",
"integrity": "sha1-1em90peEAJnrBQPHMQ/TSSegJu8=",
"requires": {
"base64-arraybuffer": "^0.2.0"
},
"dependencies": {
"base64-arraybuffer": {
"version": "0.2.0",
"resolved": "https://registry.npm.taobao.org/base64-arraybuffer/download/base64-arraybuffer-0.2.0.tgz",
"integrity": "sha1-S5RPrAGRqlkHr+LYyZnMxXzoD0U="
}
}
},
"css-parse": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/css-parse/download/css-parse-2.0.0.tgz",
@ -9379,14 +9364,6 @@
"integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
"dev": true
},
"html2canvas": {
"version": "1.0.0-rc.7",
"resolved": "https://registry.npm.taobao.org/html2canvas/download/html2canvas-1.0.0-rc.7.tgz",
"integrity": "sha1-cMFZzg5jlUqRFpUxiU0IrVYnrJg=",
"requires": {
"css-line-break": "1.1.1"
}
},
"http-cache-semantics": {
"version": "3.8.1",
"resolved": "https://registry.npm.taobao.org/http-cache-semantics/download/http-cache-semantics-3.8.1.tgz",

1
package.json

@ -34,7 +34,6 @@
"e-ngx-cesium": "^6.3.2",
"echarts": "^4.6.0",
"firebase": "^7.6.2",
"html2canvas": "^1.0.0-rc.7",
"ng-zorro-antd": "^9.3.0",
"ng2-file-upload": "^1.4.0",
"ngx-countdown": "^9.0.1",

40
src/app/gis-management/gis-labeling/gis-labeling.component.ts

@ -5,8 +5,6 @@ import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dial
import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';
declare var AMap: any;
declare var QRCode: any;
declare var html2canvas: any;
// import html2canvas from 'html2canvas';
@Component({
selector: 'app-gis-labeling',
templateUrl: './gis-labeling.component.html',
@ -158,41 +156,6 @@ export class GisLabelingComponent implements OnInit {
}
//生成图片
canvasImg
createimg(){
// 使用html2canvas插件,将数据源中的数据转换成画布。
html2canvas(document.querySelector("#map"),{
useCORS: true, // 【重要】开启跨域配置,
allowTaint: true,//允许跨域图片
taintTest: false,//是否在渲染前测试图片
onrendered: function(canvas) {
var dataUrl = canvas.toDataURL("image/png");
}
}).then(canvas => {
// 修改生成的宽度
// canvas.style.width = "1000px";
console.log(canvas, "生成的画布文件");
this.canvasImg = canvas.toDataURL("image/png");
// console.log(this.canvasImg)
}).then(()=>{
this.downloadFile("导出图片", this.canvasImg);
})
}
downloadFile(filename, content) {
var base64Img = content;
var oA = document.createElement('a');
oA.href = base64Img;
oA.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
oA.dispatchEvent(event);
}
//构造重点单位checkbox控制器
buildUnits() {
@ -1032,6 +995,9 @@ export class GisLabelingComponent implements OnInit {
})
that.map = new AMap.Map('map',{
layers:[layer], //当只想显示标准图层时layers属性可缺省,
WebGLParams: {
preserveDrawingBuffer: true
}
});
that.map.setCity('上海市');

9
src/app/test/test.component.html

@ -1 +1,8 @@
<p>测试当前视图宽高</p>
<div class="box">
<button mat-button style="position: absolute;left: 50%;top: 0;z-index: 999;" (click)="createimg()">生成图片</button>
<div id="mapxxx"></div>
<div class="img">
<img [src]="canvasImg" alt="">
</div>
</div>

17
src/app/test/test.component.scss

@ -0,0 +1,17 @@
.box{
width: 100%;
height: 100%;
display: flex;
#mapxxx{
width: 500px;
height: 500px;
}
.img{
width: 500px;
height: 500px;
img{
width: 500px;
height: 500px;
}
}
}

47
src/app/test/test.component.ts

@ -1,5 +1,6 @@
import { Component, OnInit } from '@angular/core';
declare var html2canvas: any;
declare var AMap: any;
@Component({
selector: 'app-test',
templateUrl: './test.component.html',
@ -8,10 +9,48 @@ import { Component, OnInit } from '@angular/core';
export class TestComponent implements OnInit {
constructor() { }
map: any
ngOnInit(): void {
alert(document.documentElement.clientWidth)
alert(document.documentElement.clientHeight)
setTimeout(() => {
this.map = new AMap.Map('mapxxx', {
WebGLParams: {
preserveDrawingBuffer: true
}
});
this.map.setCity('上海市');
}, 0);
}
//生成图片
canvasImg
createimg() {
// 使用html2canvas插件,将数据源中的数据转换成画布。
html2canvas(document.querySelector("#mapxxx"), {
useCORS: true,
onrendered: function (canvas) {
var dataUrl = canvas.toDataURL("image/png");
}
}).then(canvas => {
// 修改生成的宽度
// canvas.style.width = "1000px";
console.log(canvas, "生成的画布文件");
this.canvasImg = canvas.toDataURL("image/png");
// console.log(this.canvasImg)
}).then(() => {
this.downloadFile("导出图片", this.canvasImg);
})
}
downloadFile(filename, content) {
var base64Img = content;
var oA = document.createElement('a');
oA.href = base64Img;
oA.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
oA.dispatchEvent(event);
}
}

19
src/app/ui/collection-tools-plan/collection-tools.component.html

@ -35,10 +35,21 @@
<img src="/assets/images/czsf.png" alt="">
重置缩放
</span>
<span title="导出图片" class="zoom" (click)="takeScreenshot()">
<mat-icon>image</mat-icon>
导出图片
</span>
<ng-container *ngIf="!isGis; else elseTemplate">
<span title="导出图片" class="zoom" (click)="takeScreenshot()">
<mat-icon>image</mat-icon>
导出图片
</span>
</ng-container>
<ng-template #elseTemplate>
<span title="导出图片" class="zoom" (click)="takeScreenshotGis()">
<mat-icon>image</mat-icon>
导出图片
</span>
</ng-template>
<span class="rightSave">
<!-- <mat-icon title="查看/编辑模式" (click)="lookpat()" *ngIf="isEditPattern">tv</mat-icon>
<mat-icon title="查看/编辑模式" (click)="editpat()" *ngIf="!isEditPattern && isediticon">create</mat-icon> -->

41
src/app/ui/collection-tools-plan/collection-tools.component.ts

@ -18,7 +18,7 @@ import { MaskLayerService } from 'src/app/mask-layer.service';
import * as ObjectID from 'bson-objectid';
import { AxMessageSystem } from 'src/app/working-area/model/axMessageSystem';
declare var AMap: any
declare var html2canvas: any;
declare global {
interface Window {
deleteMarker: any;
@ -721,6 +721,34 @@ export class CollectionToolsPlanComponent implements OnInit {
takeScreenshot() {
this.canvas.takeScreenshot();
}
canvasImg
takeScreenshotGis() {
// console.log(666666, this.selectingSitePlan)
// 使用html2canvas插件,将数据源中的数据转换成画布。
html2canvas(document.querySelector("#planContainer"), {
useCORS: true, // 【重要】开启跨域配置,
allowTaint: true,//允许跨域图片
taintTest: false,//是否在渲染前测试图片
onrendered: function (canvas) {
var dataUrl = canvas.toDataURL("image/png");
}
}).then(canvas => {
// 修改生成的宽度
this.canvasImg = canvas.toDataURL("image/png");
// console.log(this.canvasImg)
}).then(() => {
this.downloadFile(this.selectingSitePlan.name, this.canvasImg);
})
}
downloadFile(filename, content) {
var base64Img = content;
var oA = document.createElement('a');
oA.href = base64Img;
oA.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
oA.dispatchEvent(event);
}
isMultiSelect: boolean = false; // 多选/单选 切换
changeMultiSelect(e) { this.canvas.setMulitSelect(this.isMultiSelect) }
@ -1413,11 +1441,14 @@ export class CollectionToolsPlanComponent implements OnInit {
}
map: any
toLoadGis() {
console.log(666666, this.selectingSitePlan)
// console.log(666666, this.selectingSitePlan)
this.map = new AMap.Map('planContainer', {
viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D',
zoom: 11, //初始化地图层级
WebGLParams: {
preserveDrawingBuffer: true
}
});
if (this.selectingSitePlan.defaultCenter) {
this.map.setZoom(this.selectingSitePlan.zoomLevel); //设置地图层级
@ -2552,14 +2583,14 @@ export class CollectionToolsPlanComponent implements OnInit {
}) //get
} else { //建筑时
console.log('走了2')
console.log('allBuildings',this.allBuildings)
console.log('paramsData',paramsData)
console.log('allBuildings', this.allBuildings)
console.log('paramsData', paramsData)
this.beforeOneCheckedBuilding = this.allBuildings[paramsData.buildingIndex]
let params = { buildingId: this.beforeOneCheckedBuilding.id }
let fireData = this.getFireElements(this.beforeOneCheckedBuilding.buildingTypes[0].id || '') //获取建筑下 消防要素
let planData = this.getBuildingData(params) //获取 建筑 数据
this.http.get('/api/BuildingAreas', { params }).subscribe(data => {
console.log('BuildingAreas',data)
console.log('BuildingAreas', data)
this.sitePlanData = data
let index = this.sitePlanData.findIndex(item => { return item.id === paramsData.storeyId })
this.selectingSitePlan = this.sitePlanData[index] || {}

Loading…
Cancel
Save