bbj-screen-widget 2.4.67 → 2.4.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bbj-screen-widget.d.ts +16 -12
- package/bbj-screen-widget.metadata.json +1 -1
- package/bundles/bbj-screen-widget-core.umd.js +147 -4
- package/bundles/bbj-screen-widget-core.umd.js.map +1 -1
- package/bundles/bbj-screen-widget-core.umd.min.js +1 -1
- package/bundles/bbj-screen-widget-core.umd.min.js.map +1 -1
- package/bundles/bbj-screen-widget.umd.js +1309 -201
- package/bundles/bbj-screen-widget.umd.js.map +1 -1
- package/bundles/bbj-screen-widget.umd.min.js +1 -1
- package/bundles/bbj-screen-widget.umd.min.js.map +1 -1
- package/core/bbj-screen-widget-core.metadata.json +1 -1
- package/core/public_api.d.ts +2 -0
- package/core/util/map.util.d.ts +23 -0
- package/core/util/scale.util.d.ts +4 -0
- package/esm2015/bbj-screen-widget.js +17 -13
- package/esm2015/core/public_api.js +3 -1
- package/esm2015/core/util/map.util.js +104 -0
- package/esm2015/core/util/scale.util.js +33 -0
- package/esm2015/lib/custom-baidu-map/custom-baidu-map.component.js +4 -42
- package/esm2015/lib/screen-widget.module.js +7 -1
- package/esm2015/lib/tianditu/base-layer.js +80 -0
- package/esm2015/lib/tianditu/tianditu-marker/tianditu-marker.component.js +666 -0
- package/esm2015/lib/tianditu/tianditu.component.js +399 -0
- package/esm2015/lib/tianditu/tianditu.module.js +21 -0
- package/fesm2015/bbj-screen-widget-core.js +138 -1
- package/fesm2015/bbj-screen-widget-core.js.map +1 -1
- package/fesm2015/bbj-screen-widget.js +1193 -86
- package/fesm2015/bbj-screen-widget.js.map +1 -1
- package/lib/custom-baidu-map/custom-baidu-map.component.d.ts +1 -1
- package/lib/tianditu/base-layer.d.ts +20 -0
- package/lib/tianditu/tianditu-marker/tianditu-marker.component.d.ts +63 -0
- package/lib/tianditu/tianditu.component.d.ts +53 -0
- package/lib/tianditu/tianditu.module.d.ts +4 -0
- package/package.json +1 -1
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
import { __awaiter, __decorate, __metadata } from "tslib";
|
|
2
|
+
import { Component, ElementRef, EventEmitter, NgZone, Optional, ViewChild, } from '@angular/core';
|
|
3
|
+
import { LazyService } from '@delon/util';
|
|
4
|
+
import { Data, DataOutput, Property, ScaleSubject, Widget, WidgetRef, Event } from 'bbj-widget-base';
|
|
5
|
+
import { scaleAdapter, bd09towgs84, gcj02towgs84, wgs84togcj02, wgs84tobd09 } from 'bbj-screen-widget/core';
|
|
6
|
+
import { Subject } from 'rxjs';
|
|
7
|
+
let TiandituComponent = class TiandituComponent {
|
|
8
|
+
constructor(lazy, elementRef, zone, scale$, widgetRef) {
|
|
9
|
+
this.lazy = lazy;
|
|
10
|
+
this.elementRef = elementRef;
|
|
11
|
+
this.zone = zone;
|
|
12
|
+
this.scale$ = scale$;
|
|
13
|
+
this.widgetRef = widgetRef;
|
|
14
|
+
this.coordinateType = 'BD-09';
|
|
15
|
+
// @Property('地图类型', {
|
|
16
|
+
// enum: MapTypeEnum,
|
|
17
|
+
// })
|
|
18
|
+
// mapType = 'normal';
|
|
19
|
+
// mapTypeValue: string;
|
|
20
|
+
// @Property('上传样式', { type: 'string', ui: { widget: 'myUploadAudio', visibleIf: { mapType: ['custom'] } } })
|
|
21
|
+
// uploadStyle: string;
|
|
22
|
+
// @Property('切换按钮')
|
|
23
|
+
// showMapTypeRadio: boolean;
|
|
24
|
+
// @Property('全景地图', { type: 'boolean' })
|
|
25
|
+
// minMapShow = false;
|
|
26
|
+
// @Property('显示信息', {
|
|
27
|
+
// ui: { widget: 'select' },
|
|
28
|
+
// enum: [
|
|
29
|
+
// { label: '点击', value: 'click' },
|
|
30
|
+
// { label: '悬停', value: 'mouseover' },
|
|
31
|
+
// ],
|
|
32
|
+
// })
|
|
33
|
+
// showType = 'click';
|
|
34
|
+
// @Property('信息窗背景', { ui: { widget: 'myColor' } })
|
|
35
|
+
// infoWindowBackground: string;
|
|
36
|
+
// @Property('信息窗字体', { ui: { widget: 'myColor' } })
|
|
37
|
+
// infoWindowColor: string;
|
|
38
|
+
// @Property('信息窗宽度')
|
|
39
|
+
// infoWindowWidth: number;
|
|
40
|
+
// @Property('信息窗高度')
|
|
41
|
+
// infoWindowHeight: number;
|
|
42
|
+
// @Property('信息窗模板', { ui: { widget: 'textarea' } })
|
|
43
|
+
// infoWindowTemplate: string;
|
|
44
|
+
// @Property('信息窗边框', {
|
|
45
|
+
// ui: { widget: 'myColor' },
|
|
46
|
+
// example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
|
|
47
|
+
// })
|
|
48
|
+
// infoWindowBorderColor: string;
|
|
49
|
+
// @Property('隐藏尖角')
|
|
50
|
+
// @HostBinding('class.hideInfoWindowTail')
|
|
51
|
+
// hideInfoWindowTail: boolean;
|
|
52
|
+
// @Property('隐藏关闭按钮')
|
|
53
|
+
// @HostBinding('class.hideInfoWindowTop')
|
|
54
|
+
// hideInfoWindowTop: boolean;
|
|
55
|
+
this.dragging = true;
|
|
56
|
+
// @Property('遮罩颜色', {
|
|
57
|
+
// ui: { widget: 'myColor' },
|
|
58
|
+
// example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
|
|
59
|
+
// })
|
|
60
|
+
// shadeColor = '#004395';
|
|
61
|
+
// @Property('背景颜色', {
|
|
62
|
+
// ui: { widget: 'myColor' },
|
|
63
|
+
// example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
|
|
64
|
+
// })
|
|
65
|
+
// mapBackColor: string;
|
|
66
|
+
// @Property('多边线色', {
|
|
67
|
+
// ui: { widget: 'myColor' },
|
|
68
|
+
// example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
|
|
69
|
+
// })
|
|
70
|
+
// mapCityColor = '#41b7ff';
|
|
71
|
+
this.zoom = 12;
|
|
72
|
+
// @Property('遮罩透明', { type: 'number' })
|
|
73
|
+
// fillOpacity = 0;
|
|
74
|
+
// @Property('多边线粗', { type: 'number' })
|
|
75
|
+
// strokesize = 2;
|
|
76
|
+
// @Property('黑夜模式', { type: 'boolean', ui: { hidden: true } })
|
|
77
|
+
// nightMode = false;
|
|
78
|
+
// @Property('3D视角')
|
|
79
|
+
// enable3D: boolean;
|
|
80
|
+
// @Property('定位控件')
|
|
81
|
+
// showLocationControl: boolean;
|
|
82
|
+
// @Property('初始角度', { type: 'number', ui: { visibleIf: { enable3D: [true] } } })
|
|
83
|
+
// tilt = 73;
|
|
84
|
+
// centerLng = 120.7;
|
|
85
|
+
// centerLat = 28;
|
|
86
|
+
// @Property('显示省市', {
|
|
87
|
+
// ui: {
|
|
88
|
+
// widget: 'myUrlSelect',
|
|
89
|
+
// allowClear: true,
|
|
90
|
+
// url: '/assets/mapListItem.json',
|
|
91
|
+
// },
|
|
92
|
+
// })
|
|
93
|
+
// cityName = null;
|
|
94
|
+
this.data = [{ lng: 120.7, lat: 28 }];
|
|
95
|
+
this.dataChange = new EventEmitter();
|
|
96
|
+
this.zoomChange = new EventEmitter();
|
|
97
|
+
this.mapClick = new EventEmitter();
|
|
98
|
+
this.destroy$ = new Subject();
|
|
99
|
+
this.init$ = new Promise((resolve) => {
|
|
100
|
+
this.inited = resolve;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
ngOnInit() {
|
|
104
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
105
|
+
scaleAdapter(this.scale$, this.destroy$, this.zone, this.elementRef.nativeElement, this.widgetRef);
|
|
106
|
+
this.initMap();
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
initMap() {
|
|
110
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
yield this.lazy.loadScript('https://api.tianditu.gov.cn/api?v=4.0&tk=acbe009b9b9cc2c8f369b6415fc8dc99');
|
|
112
|
+
if (!this.destroyed) {
|
|
113
|
+
this.zone.runOutsideAngular(() => {
|
|
114
|
+
this.map = new T.Map(this.container.nativeElement, {
|
|
115
|
+
center: this.createLngLat(this.centerLng, this.centerLat),
|
|
116
|
+
zoom: this.zoom,
|
|
117
|
+
});
|
|
118
|
+
// this.mapTypeChange(this.mapTypeValue);
|
|
119
|
+
if (this.edit || this.dragging === false) {
|
|
120
|
+
this.map.disableDrag();
|
|
121
|
+
}
|
|
122
|
+
// if (this.enable3D) {
|
|
123
|
+
// this.map.setTilt(this.tilt == null ? 73 : this.tilt, { noAnimation: true });
|
|
124
|
+
// this.map.setDisplayOptions({ skyColors: ['rgba(0, 0, 0, 0)'] }); // 隐藏天空
|
|
125
|
+
// // const navi3DCtrl = new BMapGL.NavigationControl3D(); // 添加3D控件
|
|
126
|
+
// // this.map.addControl(navi3DCtrl);
|
|
127
|
+
// } else {
|
|
128
|
+
// this.map.disableTilt();
|
|
129
|
+
// this.map.disableRotate();
|
|
130
|
+
// }
|
|
131
|
+
// if (this.showLocationControl) {
|
|
132
|
+
// const options = {
|
|
133
|
+
// // 控件的停靠位置(可选,默认左上角)
|
|
134
|
+
// anchor: BMAP_ANCHOR_TOP_LEFT,
|
|
135
|
+
// // 控件基于停靠位置的偏移量(可选)
|
|
136
|
+
// offset: new BMapGL.Size(20, 20),
|
|
137
|
+
// };
|
|
138
|
+
// let locationControl = new BMapGL.LocationControl(options);
|
|
139
|
+
// // 将控件添加到地图上
|
|
140
|
+
// this.map.addControl(locationControl);
|
|
141
|
+
// }
|
|
142
|
+
// if (this.minMapShow) {
|
|
143
|
+
// const stCtrl = new BMapGL.PanoramaControl();
|
|
144
|
+
// stCtrl.setOffset(new BMapGL.Size(20, 20));
|
|
145
|
+
// this.map.addControl(stCtrl);
|
|
146
|
+
// }
|
|
147
|
+
// if (this.infoWindowBackground) {
|
|
148
|
+
// this.element.style.setProperty('--info-window-background', this.infoWindowBackground);
|
|
149
|
+
// }
|
|
150
|
+
// if (this.infoWindowColor) {
|
|
151
|
+
// this.element.style.setProperty('--info-window-color', this.infoWindowColor);
|
|
152
|
+
// }
|
|
153
|
+
// if (this.infoWindowBorderColor) {
|
|
154
|
+
// this.element.style.setProperty('--info-window-border-color', this.infoWindowBorderColor);
|
|
155
|
+
// }
|
|
156
|
+
this.map.addEventListener('moveend', (event) => {
|
|
157
|
+
const center = this.map.getCenter();
|
|
158
|
+
this.dataChange.emit(this.transferCoordinate(center));
|
|
159
|
+
});
|
|
160
|
+
this.map.addEventListener('click', (event) => {
|
|
161
|
+
console.log(event);
|
|
162
|
+
this.mapClick.emit(this.transferCoordinate(event.latlng));
|
|
163
|
+
});
|
|
164
|
+
this.map.addEventListener('zoomend', (event) => {
|
|
165
|
+
this.zoomChange.emit(this.map.getZoom());
|
|
166
|
+
this.dataChange.emit(this.transferCoordinate(this.map.getCenter()));
|
|
167
|
+
});
|
|
168
|
+
this.mapLoaded(this.map);
|
|
169
|
+
});
|
|
170
|
+
this.inited(this.map);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
ngOnChanges(changes) {
|
|
175
|
+
if (changes.data && this.data[0]) {
|
|
176
|
+
this.centerLng = +this.data[0].lng;
|
|
177
|
+
this.centerLat = +this.data[0].lat;
|
|
178
|
+
this.setCenter(this.centerLng, this.centerLat);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
ngOnDestroy() {
|
|
182
|
+
this.destroy$.next();
|
|
183
|
+
this.destroy$.complete();
|
|
184
|
+
this.destroyed = true;
|
|
185
|
+
}
|
|
186
|
+
createLngLat(lng, lat) {
|
|
187
|
+
if (this.coordinateType === 'BD-09') {
|
|
188
|
+
[lng, lat] = bd09towgs84(lng, lat);
|
|
189
|
+
}
|
|
190
|
+
else if (this.coordinateType === 'GCJ-02') {
|
|
191
|
+
[lng, lat] = gcj02towgs84(lng, lat);
|
|
192
|
+
}
|
|
193
|
+
return new T.LngLat(lng, lat);
|
|
194
|
+
}
|
|
195
|
+
transferCoordinate(latlng) {
|
|
196
|
+
let { lng, lat } = latlng;
|
|
197
|
+
if (this.coordinateType === 'BD-09') {
|
|
198
|
+
[lng, lat] = wgs84tobd09(lng, lat);
|
|
199
|
+
}
|
|
200
|
+
else if (this.coordinateType === 'GCJ-02') {
|
|
201
|
+
[lng, lat] = wgs84togcj02(lng, lat);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
return latlng;
|
|
205
|
+
}
|
|
206
|
+
return { lng, lat };
|
|
207
|
+
}
|
|
208
|
+
setCenter(lng, lat) {
|
|
209
|
+
if (this.map && lng && lat) {
|
|
210
|
+
const center = this.map.getCenter();
|
|
211
|
+
if (center.lng != lng || center.lat != lat) {
|
|
212
|
+
this.setCenterAndZoom(lng, lat, this.map.getZoom());
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
setCenterAndZoom(lng, lat, zoom) {
|
|
217
|
+
const center = this.map.getCenter();
|
|
218
|
+
const currentZoom = this.map.getZoom();
|
|
219
|
+
// 误差范围内不移动,防止背景抖动
|
|
220
|
+
if (zoom != currentZoom || Math.abs(lng - center.lng) > 1e-13 || Math.abs(lat - center.lat) > 1e-7) {
|
|
221
|
+
const point = this.createLngLat(lng, lat);
|
|
222
|
+
this.map.centerAndZoom(point, zoom);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* 根据经纬度范围设置中心和缩放等级
|
|
227
|
+
* @param minLng
|
|
228
|
+
* @param maxLng
|
|
229
|
+
* @param minLat
|
|
230
|
+
* @param maxLat
|
|
231
|
+
*/
|
|
232
|
+
setRectCenterAndZoom(minLng, maxLng, minLat, maxLat) {
|
|
233
|
+
const pointB = this.createLngLat(minLng, minLat);
|
|
234
|
+
const pointA = this.createLngLat(maxLng, maxLat);
|
|
235
|
+
this.map.setViewport([pointA, pointB]);
|
|
236
|
+
}
|
|
237
|
+
mapLoaded(map) {
|
|
238
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
239
|
+
// if (this.cityName) {
|
|
240
|
+
// if (this.cityName === '温州') {
|
|
241
|
+
// this.cityName = 'wenzhou';
|
|
242
|
+
// }
|
|
243
|
+
// const json: any = await this.http.get('assets/echarts/map/json/' + this.cityName + '.json').toPromise();
|
|
244
|
+
// const polygonData = [];
|
|
245
|
+
// let encodeScale = json.UTF8Scale || 1024;
|
|
246
|
+
// json.features.forEach(({ geometry }) => {
|
|
247
|
+
// geometry.coordinates = (geometry.coordinates as any[]).forEach((coordinate, i) => {
|
|
248
|
+
// if (geometry.type === 'MultiPolygon') {
|
|
249
|
+
// const coordinates = (coordinate as any[]).map((points, j) => {
|
|
250
|
+
// if (json.UTF8Encoding) {
|
|
251
|
+
// points = this.decodePolygon(points, geometry.encodeOffsets[i][j], encodeScale);
|
|
252
|
+
// }
|
|
253
|
+
// return points;
|
|
254
|
+
// });
|
|
255
|
+
// polygonData.push(coordinates);
|
|
256
|
+
// } else {
|
|
257
|
+
// if (json.UTF8Encoding) {
|
|
258
|
+
// coordinate = this.decodePolygon(coordinate, geometry.encodeOffsets[i], encodeScale);
|
|
259
|
+
// }
|
|
260
|
+
// polygonData.push([coordinate]);
|
|
261
|
+
// }
|
|
262
|
+
// });
|
|
263
|
+
// });
|
|
264
|
+
// const data = [
|
|
265
|
+
// {
|
|
266
|
+
// geometry: {
|
|
267
|
+
// type: 'MultiPolygon',
|
|
268
|
+
// coordinates: polygonData,
|
|
269
|
+
// },
|
|
270
|
+
// },
|
|
271
|
+
// ];
|
|
272
|
+
// var layer = new mapvgl.PolygonLayer({
|
|
273
|
+
// lineColor: this.mapCityColor,
|
|
274
|
+
// lineWidth: this.strokesize || 2,
|
|
275
|
+
// fillColor: this.shadeColor,
|
|
276
|
+
// data,
|
|
277
|
+
// renderOrder: -2,
|
|
278
|
+
// });
|
|
279
|
+
// this.view.addLayer(layer);
|
|
280
|
+
// if (this.mapBackColor && !this.mapBackColor.match(/rgba\(\d+,\d+,\d+,0\)/)) {
|
|
281
|
+
// var maskLayer = new mapvgl.MaskLayer({
|
|
282
|
+
// color: this.mapBackColor,
|
|
283
|
+
// data,
|
|
284
|
+
// renderOrder: -3,
|
|
285
|
+
// });
|
|
286
|
+
// this.view.addLayer(maskLayer);
|
|
287
|
+
// }
|
|
288
|
+
// }
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
decodePolygon(coordinate, encodeOffsets, encodeScale) {
|
|
292
|
+
const result = [];
|
|
293
|
+
let prevX = encodeOffsets[0];
|
|
294
|
+
let prevY = encodeOffsets[1];
|
|
295
|
+
for (let i = 0; i < coordinate.length; i += 2) {
|
|
296
|
+
var x = coordinate.charCodeAt(i) - 64;
|
|
297
|
+
var y = coordinate.charCodeAt(i + 1) - 64;
|
|
298
|
+
// ZigZag decoding
|
|
299
|
+
x = (x >> 1) ^ -(x & 1);
|
|
300
|
+
y = (y >> 1) ^ -(y & 1);
|
|
301
|
+
// Delta deocding
|
|
302
|
+
x += prevX;
|
|
303
|
+
y += prevY;
|
|
304
|
+
prevX = x;
|
|
305
|
+
prevY = y;
|
|
306
|
+
// Dequantize
|
|
307
|
+
result.push([x / encodeScale, y / encodeScale]);
|
|
308
|
+
}
|
|
309
|
+
return result;
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
TiandituComponent.decorators = [
|
|
313
|
+
{ type: Component, args: [{
|
|
314
|
+
selector: 'sc-tianditu',
|
|
315
|
+
template: "<div #container class=\"tianditu\"></div>\n<ng-template *ngFor=\"let child of children\" widget-host [widget]=\"child\"></ng-template>\n",
|
|
316
|
+
styles: [":host{display:block;overflow:hidden;transform-origin:0 0;z-index:0;position:relative}.tianditu,:host{height:100%;width:100%}"]
|
|
317
|
+
},] }
|
|
318
|
+
];
|
|
319
|
+
TiandituComponent.ctorParameters = () => [
|
|
320
|
+
{ type: LazyService },
|
|
321
|
+
{ type: ElementRef },
|
|
322
|
+
{ type: NgZone },
|
|
323
|
+
{ type: ScaleSubject, decorators: [{ type: Optional }] },
|
|
324
|
+
{ type: WidgetRef }
|
|
325
|
+
];
|
|
326
|
+
TiandituComponent.propDecorators = {
|
|
327
|
+
container: [{ type: ViewChild, args: ['container',] }]
|
|
328
|
+
};
|
|
329
|
+
__decorate([
|
|
330
|
+
Property('坐标系', {
|
|
331
|
+
enum: [
|
|
332
|
+
{ label: '百度坐标', value: 'BD-09' },
|
|
333
|
+
{ label: '高德/腾讯坐标', value: 'GCJ-02' },
|
|
334
|
+
{ label: '天地图坐标', value: 'WGS84' },
|
|
335
|
+
],
|
|
336
|
+
}),
|
|
337
|
+
__metadata("design:type", Object)
|
|
338
|
+
], TiandituComponent.prototype, "coordinateType", void 0);
|
|
339
|
+
__decorate([
|
|
340
|
+
Property('地图拖动', { type: 'boolean' }),
|
|
341
|
+
__metadata("design:type", Object)
|
|
342
|
+
], TiandituComponent.prototype, "dragging", void 0);
|
|
343
|
+
__decorate([
|
|
344
|
+
Property('地图缩放', {
|
|
345
|
+
ui: { widget: 'myRange', min: 1, max: 40, step: 1 },
|
|
346
|
+
}),
|
|
347
|
+
__metadata("design:type", Object)
|
|
348
|
+
], TiandituComponent.prototype, "zoom", void 0);
|
|
349
|
+
__decorate([
|
|
350
|
+
Data({
|
|
351
|
+
properties: {
|
|
352
|
+
lng: { type: 'number', title: '经度' },
|
|
353
|
+
lat: { type: 'number', title: '纬度' },
|
|
354
|
+
},
|
|
355
|
+
}),
|
|
356
|
+
__metadata("design:type", Array)
|
|
357
|
+
], TiandituComponent.prototype, "data", void 0);
|
|
358
|
+
__decorate([
|
|
359
|
+
DataOutput(['lng', 'lat']),
|
|
360
|
+
Event('中心点改变', {
|
|
361
|
+
params: { properties: { lng: { title: '经度', type: 'number' }, lat: { title: '纬度', type: 'number' } } },
|
|
362
|
+
}),
|
|
363
|
+
__metadata("design:type", Object)
|
|
364
|
+
], TiandituComponent.prototype, "dataChange", void 0);
|
|
365
|
+
__decorate([
|
|
366
|
+
DataOutput('缩放等级'),
|
|
367
|
+
Event('缩放', {
|
|
368
|
+
params: '缩放等级',
|
|
369
|
+
}),
|
|
370
|
+
__metadata("design:type", Object)
|
|
371
|
+
], TiandituComponent.prototype, "zoomChange", void 0);
|
|
372
|
+
__decorate([
|
|
373
|
+
Event('地图点击', {
|
|
374
|
+
params: { properties: { lng: { title: '经度', type: 'number' }, lat: { title: '纬度', type: 'number' } } },
|
|
375
|
+
}),
|
|
376
|
+
__metadata("design:type", Object)
|
|
377
|
+
], TiandituComponent.prototype, "mapClick", void 0);
|
|
378
|
+
TiandituComponent = __decorate([
|
|
379
|
+
Widget('天地图', {
|
|
380
|
+
children: [
|
|
381
|
+
{
|
|
382
|
+
title: '标记层',
|
|
383
|
+
type: 'sc-tianditu-marker',
|
|
384
|
+
option: {},
|
|
385
|
+
hidden: true,
|
|
386
|
+
hideChild: true,
|
|
387
|
+
},
|
|
388
|
+
],
|
|
389
|
+
childTypes: ['sc-tianditu-marker'],
|
|
390
|
+
description: 'hasChildItem',
|
|
391
|
+
}),
|
|
392
|
+
__metadata("design:paramtypes", [LazyService,
|
|
393
|
+
ElementRef,
|
|
394
|
+
NgZone,
|
|
395
|
+
ScaleSubject,
|
|
396
|
+
WidgetRef])
|
|
397
|
+
], TiandituComponent);
|
|
398
|
+
export { TiandituComponent };
|
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlhbmRpdHUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWVuLXdpZGdldC9zcmMvbGliL3RpYW5kaXR1L3RpYW5kaXR1LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUVaLE1BQU0sRUFJTixRQUFRLEVBRVIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztJQXNCbEIsaUJBQWlCLFNBQWpCLGlCQUFpQjtJQW9JNUIsWUFDVSxJQUFpQixFQUNqQixVQUFzQixFQUN0QixJQUFZLEVBQ0EsTUFBb0IsRUFDaEMsU0FBb0I7UUFKcEIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDQSxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFqSTlCLG1CQUFjLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIsT0FBTztRQUNQLHdCQUF3QjtRQUN4QiwwQkFBMEI7UUFDMUIsK0dBQStHO1FBQy9HLHlCQUF5QjtRQUN6QixzQkFBc0I7UUFDdEIsK0JBQStCO1FBQy9C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O1FBQ2IsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtLQUN2RyxDQUFDOzttREFDaUM7QUFySHhCLGlCQUFpQjtJQWI3QixNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLElBQUk7Z0JBQ1osU0FBUyxFQUFFLElBQUk7YUFDaEI7U0FDRjtRQUNELFVBQVUsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1FBQ2xDLFdBQVcsRUFBRSxjQUFjO0tBQzVCLENBQUM7cUNBc0lnQixXQUFXO1FBQ0wsVUFBVTtRQUNoQixNQUFNO1FBQ1EsWUFBWTtRQUNyQixTQUFTO0dBekluQixpQkFBaUIsQ0F5WDdCO1NBelhZLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhenlTZXJ2aWNlIH0gZnJvbSAnQGRlbG9uL3V0aWwnO1xuaW1wb3J0IHsgRGF0YSwgRGF0YU91dHB1dCwgUHJvcGVydHksIFNjYWxlU3ViamVjdCwgV2lkZ2V0LCBXaWRnZXRSZWYsIEV2ZW50LCBEYXRhSW5wdXQgfSBmcm9tICdiYmotd2lkZ2V0LWJhc2UnO1xuaW1wb3J0IHsgc2NhbGVBZGFwdGVyLCBiZDA5dG93Z3M4NCwgZ2NqMDJ0b3dnczg0LCB3Z3M4NHRvZ2NqMDIsIHdnczg0dG9iZDA5IH0gZnJvbSAnYmJqLXNjcmVlbi13aWRnZXQvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmRlY2xhcmUgdmFyIFQ6IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2MtdGlhbmRpdHUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGlhbmRpdHUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aWFuZGl0dS5jb21wb25lbnQubGVzcyddLFxufSlcbkBXaWRnZXQoJ+WkqeWcsOWbvicsIHtcbiAgY2hpbGRyZW46IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ+agh+iusOWxgicsXG4gICAgICB0eXBlOiAnc2MtdGlhbmRpdHUtbWFya2VyJyxcbiAgICAgIG9wdGlvbjoge30sXG4gICAgICBoaWRkZW46IHRydWUsXG4gICAgICBoaWRlQ2hpbGQ6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hpbGRUeXBlczogWydzYy10aWFuZGl0dS1tYXJrZXInXSxcbiAgZGVzY3JpcHRpb246ICdoYXNDaGlsZEl0ZW0nLFxufSlcbmV4cG9ydCBjbGFzcyBUaWFuZGl0dUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBAUHJvcGVydHkoJ+WdkOagh+ezuycsIHtcbiAgICBlbnVtOiBbXG4gICAgICB7IGxhYmVsOiAn55m+5bqm5Z2Q5qCHJywgdmFsdWU6ICdCRC0wOScgfSxcbiAgICAgIHsgbGFiZWw6ICfpq5jlvrcv6IW+6K6v5Z2Q5qCHJywgdmFsdWU6ICdHQ0otMDInIH0sXG4gICAgICB7IGxhYmVsOiAn5aSp5Zyw5Zu+5Z2Q5qCHJywgdmFsdWU6ICdXR1M4NCcgfSxcbiAgICBdLFxuICB9KVxuICBjb29yZGluYXRlVHlwZSA9ICdCRC0wOSc7XG4gIC8vICBAUHJvcGVydHkoJ+WcsOWbvuexu+WeiycsIHtcbiAgLy8gICAgIGVudW06IE1hcFR5cGVFbnVtLFxuICAvLyAgIH0pXG4gIC8vICAgbWFwVHlwZSA9ICdub3JtYWwnO1xuICAvLyAgIG1hcFR5cGVWYWx1ZTogc3RyaW5nO1xuICAvLyAgIEBQcm9wZXJ0eSgn5LiK5Lyg5qC35byPJywgeyB0eXBlOiAnc3RyaW5nJywgdWk6IHsgd2lkZ2V0OiAnbXlVcGxvYWRBdWRpbycsIHZpc2libGVJZjogeyBtYXBUeXBlOiBbJ2N1c3RvbSddIH0gfSB9KVxuICAvLyAgIHVwbG9hZFN0eWxlOiBzdHJpbmc7XG4gIC8vICAgQFByb3BlcnR5KCfliIfmjaLmjInpkq4nKVxuICAvLyAgIHNob3dNYXBUeXBlUmFkaW86IGJvb2xlYW47XG4gIC8vICAgQFByb3BlcnR5KCflhajmma/lnLDlm74nLCB7IHR5cGU6ICdib29sZWFuJyB9KVxuICAvLyAgIG1pbk1hcFNob3cgPSBmYWxzZTtcbiAgLy8gICBAUHJvcGVydHkoJ+aYvuekuuS/oeaBrycsIHtcbiAgLy8gICAgIHVpOiB7IHdpZGdldDogJ3NlbGVjdCcgfSxcbiAgLy8gICAgIGVudW06IFtcbiAgLy8gICAgICAgeyBsYWJlbDogJ+eCueWHuycsIHZhbHVlOiAnY2xpY2snIH0sXG4gIC8vICAgICAgIHsgbGFiZWw6ICfmgqzlgZwnLCB2YWx1ZTogJ21vdXNlb3ZlcicgfSxcbiAgLy8gICAgIF0sXG4gIC8vICAgfSlcbiAgLy8gICBzaG93VHlwZSA9ICdjbGljayc7XG4gIC8vICAgQFByb3BlcnR5KCfkv6Hmga/nqpfog4zmma8nLCB7IHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0gfSlcbiAgLy8gICBpbmZvV2luZG93QmFja2dyb3VuZDogc3RyaW5nO1xuICAvLyAgIEBQcm9wZXJ0eSgn5L+h5oGv56qX5a2X5L2TJywgeyB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9IH0pXG4gIC8vICAgaW5mb1dpbmRvd0NvbG9yOiBzdHJpbmc7XG4gIC8vICAgQFByb3BlcnR5KCfkv6Hmga/nqpflrr3luqYnKVxuICAvLyAgIGluZm9XaW5kb3dXaWR0aDogbnVtYmVyO1xuICAvLyAgIEBQcm9wZXJ0eSgn5L+h5oGv56qX6auY5bqmJylcbiAgLy8gICBpbmZvV2luZG93SGVpZ2h0OiBudW1iZXI7XG4gIC8vICAgQFByb3BlcnR5KCfkv6Hmga/nqpfmqKHmnb8nLCB7IHVpOiB7IHdpZGdldDogJ3RleHRhcmVhJyB9IH0pXG4gIC8vICAgaW5mb1dpbmRvd1RlbXBsYXRlOiBzdHJpbmc7XG4gIC8vICAgQFByb3BlcnR5KCfkv6Hmga/nqpfovrnmoYYnLCB7XG4gIC8vICAgICB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9LFxuICAvLyAgICAgZXhhbXBsZTogWycjZmZmZmZmJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgbnVsbF0sXG4gIC8vICAgfSlcbiAgLy8gICBpbmZvV2luZG93Qm9yZGVyQ29sb3I6IHN0cmluZztcbiAgLy8gICBAUHJvcGVydHkoJ+makOiXj+WwluinkicpXG4gIC8vICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRlSW5mb1dpbmRvd1RhaWwnKVxuICAvLyAgIGhpZGVJbmZvV2luZG93VGFpbDogYm9vbGVhbjtcbiAgLy8gICBAUHJvcGVydHkoJ+makOiXj+WFs+mXreaMiemSricpXG4gIC8vICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRlSW5mb1dpbmRvd1RvcCcpXG4gIC8vICAgaGlkZUluZm9XaW5kb3dUb3A6IGJvb2xlYW47XG4gIEBQcm9wZXJ0eSgn5Zyw5Zu+5ouW5YqoJywgeyB0eXBlOiAnYm9vbGVhbicgfSlcbiAgZHJhZ2dpbmcgPSB0cnVlO1xuXG4gIC8vIEBQcm9wZXJ0eSgn6YGu572p6aKc6ImyJywge1xuICAvLyAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXG4gIC8vICAgZXhhbXBsZTogWycjZmZmZmZmJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgbnVsbF0sXG4gIC8vIH0pXG4gIC8vIHNoYWRlQ29sb3IgPSAnIzAwNDM5NSc7XG4gIC8vIEBQcm9wZXJ0eSgn6IOM5pmv6aKc6ImyJywge1xuICAvLyAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXG4gIC8vICAgZXhhbXBsZTogWycjZmZmZmZmJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgbnVsbF0sXG4gIC8vIH0pXG4gIC8vIG1hcEJhY2tDb2xvcjogc3RyaW5nO1xuXG4gIC8vIEBQcm9wZXJ0eSgn5aSa6L6557q/6ImyJywge1xuICAvLyAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXG4gIC8vICAgZXhhbXBsZTogWycjZmZmZmZmJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgbnVsbF0sXG4gIC8vIH0pXG4gIC8vIG1hcENpdHlDb2xvciA9ICcjNDFiN2ZmJztcbiAgQFByb3BlcnR5KCflnLDlm77nvKnmlL4nLCB7XG4gICAgdWk6IHsgd2lkZ2V0OiAnbXlSYW5nZScsIG1pbjogMSwgbWF4OiA0MCwgc3RlcDogMSB9LFxuICB9KVxuICB6b29tID0gMTI7XG4gIC8vIEBQcm9wZXJ0eSgn6YGu572p6YCP5piOJywgeyB0eXBlOiAnbnVtYmVyJyB9KVxuICAvLyBmaWxsT3BhY2l0eSA9IDA7XG4gIC8vIEBQcm9wZXJ0eSgn5aSa6L6557q/57KXJywgeyB0eXBlOiAnbnVtYmVyJyB9KVxuICAvLyBzdHJva2VzaXplID0gMjtcbiAgLy8gQFByb3BlcnR5KCfpu5HlpJzmqKHlvI8nLCB7IHR5cGU6ICdib29sZWFuJywgdWk6IHsgaGlkZGVuOiB0cnVlIH0gfSlcbiAgLy8gbmlnaHRNb2RlID0gZmFsc2U7XG4gIC8vIEBQcm9wZXJ0eSgnM0Top4bop5InKVxuICAvLyBlbmFibGUzRDogYm9vbGVhbjtcbiAgLy8gQFByb3BlcnR5KCflrprkvY3mjqfku7YnKVxuICAvLyBzaG93TG9jYXRpb25Db250cm9sOiBib29sZWFuO1xuICAvLyBAUHJvcGVydHkoJ+WIneWni+inkuW6picsIHsgdHlwZTogJ251bWJlcicsIHVpOiB7IHZpc2libGVJZjogeyBlbmFibGUzRDogW3RydWVdIH0gfSB9KVxuICAvLyB0aWx0ID0gNzM7XG5cbiAgLy8gY2VudGVyTG5nID0gMTIwLjc7XG5cbiAgLy8gY2VudGVyTGF0ID0gMjg7XG4gIC8vIEBQcm9wZXJ0eSgn5pi+56S655yB5biCJywge1xuICAvLyAgIHVpOiB7XG4gIC8vICAgICB3aWRnZXQ6ICdteVVybFNlbGVjdCcsXG4gIC8vICAgICBhbGxvd0NsZWFyOiB0cnVlLFxuICAvLyAgICAgdXJsOiAnL2Fzc2V0cy9tYXBMaXN0SXRlbS5qc29uJyxcbiAgLy8gICB9LFxuICAvLyB9KVxuICAvLyBjaXR5TmFtZSA9IG51bGw7XG4gIEBEYXRhKHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBsbmc6IHsgdHlwZTogJ251bWJlcicsIHRpdGxlOiAn57uP5bqmJyB9LFxuICAgICAgbGF0OiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+e6rOW6picgfSxcbiAgICB9LFxuICB9KVxuICBkYXRhOiBhbnlbXSA9IFt7IGxuZzogMTIwLjcsIGxhdDogMjggfV07XG4gIEBEYXRhT3V0cHV0KFsnbG5nJywgJ2xhdCddKVxuICBARXZlbnQoJ+S4reW/g+eCueaUueWPmCcsIHtcbiAgICBwYXJhbXM6IHsgcHJvcGVydGllczogeyBsbmc6IHsgdGl0bGU6ICfnu4/luqYnLCB0eXBlOiAnbnVtYmVyJyB9LCBsYXQ6IHsgdGl0bGU6ICfnuqzluqYnLCB0eXBlOiAnbnVtYmVyJyB9IH0gfSxcbiAgfSlcbiAgZGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBEYXRhT3V0cHV0KCfnvKnmlL7nrYnnuqcnKVxuICBARXZlbnQoJ+e8qeaUvicsIHtcbiAgICBwYXJhbXM6ICfnvKnmlL7nrYnnuqcnLFxuICB9KVxuICB6b29tQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBFdmVudCgn5Zyw5Zu+54K55Ye7Jywge1xuICAgIHBhcmFtczogeyBwcm9wZXJ0aWVzOiB7IGxuZzogeyB0aXRsZTogJ+e7j+W6picsIHR5cGU6ICdudW1iZXInIH0sIGxhdDogeyB0aXRsZTogJ+e6rOW6picsIHR5cGU6ICdudW1iZXInIH0gfSB9LFxuICB9KVxuICBtYXBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAVmlld0NoaWxkKCdjb250YWluZXInKVxuICBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZWRpdDogYm9vbGVhbjtcbiAgY2hpbGRyZW46IGFueVtdO1xuICBtYXA6IGFueTtcbiAgY2VudGVyTG5nOiBudW1iZXI7XG4gIGNlbnRlckxhdDogbnVtYmVyO1xuICBkZXN0cm95ZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgaW5pdGVkOiAobWFwOiBhbnkpID0+IHZvaWQ7XG4gIGluaXQkID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICB0aGlzLmluaXRlZCA9IHJlc29sdmU7XG4gIH0pO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxhenk6IExhenlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHNjYWxlJDogU2NhbGVTdWJqZWN0LFxuICAgIHByaXZhdGUgd2lkZ2V0UmVmOiBXaWRnZXRSZWYsXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBzY2FsZUFkYXB0ZXIodGhpcy5zY2FsZSQsIHRoaXMuZGVzdHJveSQsIHRoaXMuem9uZSwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMud2lkZ2V0UmVmKTtcbiAgICB0aGlzLmluaXRNYXAoKTtcbiAgfVxuXG4gIGFzeW5jIGluaXRNYXAoKSB7XG4gICAgYXdhaXQgdGhpcy5sYXp5LmxvYWRTY3JpcHQoJ2h0dHBzOi8vYXBpLnRpYW5kaXR1Lmdvdi5jbi9hcGk/dj00LjAmdGs9YWNiZTAwOWI5YjljYzJjOGYzNjliNjQxNWZjOGRjOTknKTtcbiAgICBpZiAoIXRoaXMuZGVzdHJveWVkKSB7XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLm1hcCA9IG5ldyBULk1hcCh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgY2VudGVyOiB0aGlzLmNyZWF0ZUxuZ0xhdCh0aGlzLmNlbnRlckxuZywgdGhpcy5jZW50ZXJMYXQpLFxuICAgICAgICAgIHpvb206IHRoaXMuem9vbSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHRoaXMubWFwVHlwZUNoYW5nZSh0aGlzLm1hcFR5cGVWYWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLmVkaXQgfHwgdGhpcy5kcmFnZ2luZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB0aGlzLm1hcC5kaXNhYmxlRHJhZygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmICh0aGlzLmVuYWJsZTNEKSB7XG4gICAgICAgIC8vICAgdGhpcy5tYXAuc2V0VGlsdCh0aGlzLnRpbHQgPT0gbnVsbCA/IDczIDogdGhpcy50aWx0LCB7IG5vQW5pbWF0aW9uOiB0cnVlIH0pO1xuICAgICAgICAvLyAgIHRoaXMubWFwLnNldERpc3BsYXlPcHRpb25zKHsgc2t5Q29sb3JzOiBbJ3JnYmEoMCwgMCwgMCwgMCknXSB9KTsgLy8g6ZqQ6JeP5aSp56m6XG4gICAgICAgIC8vICAgLy8gY29uc3QgbmF2aTNEQ3RybCA9IG5ldyBCTWFwR0wuTmF2aWdhdGlvbkNvbnRyb2wzRCgpOyAvLyDmt7vliqAzROaOp+S7tlxuICAgICAgICAvLyAgIC8vIHRoaXMubWFwLmFkZENvbnRyb2wobmF2aTNEQ3RybCk7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgdGhpcy5tYXAuZGlzYWJsZVRpbHQoKTtcbiAgICAgICAgLy8gICB0aGlzLm1hcC5kaXNhYmxlUm90YXRlKCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gaWYgKHRoaXMuc2hvd0xvY2F0aW9uQ29udHJvbCkge1xuICAgICAgICAvLyAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIC8vICAgICAvLyDmjqfku7bnmoTlgZzpnaDkvY3nva7vvIjlj6/pgInvvIzpu5jorqTlt6bkuIrop5LvvIlcbiAgICAgICAgLy8gICAgIGFuY2hvcjogQk1BUF9BTkNIT1JfVE9QX0xFRlQsXG4gICAgICAgIC8vICAgICAvLyDmjqfku7bln7rkuo7lgZzpnaDkvY3nva7nmoTlgY/np7vph4/vvIjlj6/pgInvvIlcbiAgICAgICAgLy8gICAgIG9mZnNldDogbmV3IEJNYXBHTC5TaXplKDIwLCAyMCksXG4gICAgICAgIC8vICAgfTtcbiAgICAgICAgLy8gICBsZXQgbG9jYXRpb25Db250cm9sID0gbmV3IEJNYXBHTC5Mb2NhdGlvbkNvbnRyb2wob3B0aW9ucyk7XG4gICAgICAgIC8vICAgLy8g5bCG5o6n5Lu25re75Yqg5Yiw5Zyw5Zu+5LiKXG4gICAgICAgIC8vICAgdGhpcy5tYXAuYWRkQ29udHJvbChsb2NhdGlvbkNvbnRyb2wpO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmICh0aGlzLm1pbk1hcFNob3cpIHtcbiAgICAgICAgLy8gICBjb25zdCBzdEN0cmwgPSBuZXcgQk1hcEdMLlBhbm9yYW1hQ29udHJvbCgpO1xuICAgICAgICAvLyAgIHN0Q3RybC5zZXRPZmZzZXQobmV3IEJNYXBHTC5TaXplKDIwLCAyMCkpO1xuICAgICAgICAvLyAgIHRoaXMubWFwLmFkZENvbnRyb2woc3RDdHJsKTtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBpZiAodGhpcy5pbmZvV2luZG93QmFja2dyb3VuZCkge1xuICAgICAgICAvLyAgIHRoaXMuZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pbmZvLXdpbmRvdy1iYWNrZ3JvdW5kJywgdGhpcy5pbmZvV2luZG93QmFja2dyb3VuZCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gaWYgKHRoaXMuaW5mb1dpbmRvd0NvbG9yKSB7XG4gICAgICAgIC8vICAgdGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWluZm8td2luZG93LWNvbG9yJywgdGhpcy5pbmZvV2luZG93Q29sb3IpO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmICh0aGlzLmluZm9XaW5kb3dCb3JkZXJDb2xvcikge1xuICAgICAgICAvLyAgIHRoaXMuZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pbmZvLXdpbmRvdy1ib3JkZXItY29sb3InLCB0aGlzLmluZm9XaW5kb3dCb3JkZXJDb2xvcik7XG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy5tYXAuYWRkRXZlbnRMaXN0ZW5lcignbW92ZWVuZCcsIChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNlbnRlciA9IHRoaXMubWFwLmdldENlbnRlcigpO1xuICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KHRoaXMudHJhbnNmZXJDb29yZGluYXRlKGNlbnRlcikpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgICAgICAgdGhpcy5tYXBDbGljay5lbWl0KHRoaXMudHJhbnNmZXJDb29yZGluYXRlKGV2ZW50LmxhdGxuZykpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXAuYWRkRXZlbnRMaXN0ZW5lcignem9vbWVuZCcsIChldmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuem9vbUNoYW5nZS5lbWl0KHRoaXMubWFwLmdldFpvb20oKSk7XG4gICAgICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQodGhpcy50cmFuc2ZlckNvb3JkaW5hdGUodGhpcy5tYXAuZ2V0Q2VudGVyKCkpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubWFwTG9hZGVkKHRoaXMubWFwKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pbml0ZWQodGhpcy5tYXApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhICYmIHRoaXMuZGF0YVswXSkge1xuICAgICAgdGhpcy5jZW50ZXJMbmcgPSArdGhpcy5kYXRhWzBdLmxuZztcbiAgICAgIHRoaXMuY2VudGVyTGF0ID0gK3RoaXMuZGF0YVswXS5sYXQ7XG4gICAgICB0aGlzLnNldENlbnRlcih0aGlzLmNlbnRlckxuZywgdGhpcy5jZW50ZXJMYXQpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH1cblxuICBjcmVhdGVMbmdMYXQobG5nOiBudW1iZXIsIGxhdDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29vcmRpbmF0ZVR5cGUgPT09ICdCRC0wOScpIHtcbiAgICAgIFtsbmcsIGxhdF0gPSBiZDA5dG93Z3M4NChsbmcsIGxhdCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvb3JkaW5hdGVUeXBlID09PSAnR0NKLTAyJykge1xuICAgICAgW2xuZywgbGF0XSA9IGdjajAydG93Z3M4NChsbmcsIGxhdCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgVC5MbmdMYXQobG5nLCBsYXQpO1xuICB9XG5cbiAgdHJhbnNmZXJDb29yZGluYXRlKGxhdGxuZzogeyBsYXQ6IG51bWJlcjsgbG5nOiBudW1iZXIgfSkge1xuICAgIGxldCB7IGxuZywgbGF0IH0gPSBsYXRsbmc7XG4gICAgaWYgKHRoaXMuY29vcmRpbmF0ZVR5cGUgPT09ICdCRC0wOScpIHtcbiAgICAgIFtsbmcsIGxhdF0gPSB3Z3M4NHRvYmQwOShsbmcsIGxhdCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvb3JkaW5hdGVUeXBlID09PSAnR0NKLTAyJykge1xuICAgICAgW2xuZywgbGF0XSA9IHdnczg0dG9nY2owMihsbmcsIGxhdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsYXRsbmc7XG4gICAgfVxuICAgIHJldHVybiB7IGxuZywgbGF0IH07XG4gIH1cblxuICBzZXRDZW50ZXIobG5nOiBudW1iZXIsIGxhdDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubWFwICYmIGxuZyAmJiBsYXQpIHtcbiAgICAgIGNvbnN0IGNlbnRlciA9IHRoaXMubWFwLmdldENlbnRlcigpO1xuICAgICAgaWYgKGNlbnRlci5sbmcgIT0gbG5nIHx8IGNlbnRlci5sYXQgIT0gbGF0KSB7XG4gICAgICAgIHRoaXMuc2V0Q2VudGVyQW5kWm9vbShsbmcsIGxhdCwgdGhpcy5tYXAuZ2V0Wm9vbSgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRDZW50ZXJBbmRab29tKGxuZzogbnVtYmVyLCBsYXQ6IG51bWJlciwgem9vbTogbnVtYmVyKSB7XG4gICAgY29uc3QgY2VudGVyID0gdGhpcy5tYXAuZ2V0Q2VudGVyKCk7XG4gICAgY29uc3QgY3VycmVudFpvb20gPSB0aGlzLm1hcC5nZXRab29tKCk7XG4gICAgLy8g6K+v5beu6IyD5Zu05YaF5LiN56e75YqoLOmYsuatouiDjOaZr+aKluWKqFxuICAgIGlmICh6b29tICE9IGN1cnJlbnRab29tIHx8IE1hdGguYWJzKGxuZyAtIGNlbnRlci5sbmcpID4gMWUtMTMgfHwgTWF0aC5hYnMobGF0IC0gY2VudGVyLmxhdCkgPiAxZS03KSB7XG4gICAgICBjb25zdCBwb2ludCA9IHRoaXMuY3JlYXRlTG5nTGF0KGxuZywgbGF0KTtcbiAgICAgIHRoaXMubWFwLmNlbnRlckFuZFpvb20ocG9pbnQsIHpvb20pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmoLnmja7nu4/nuqzluqbojIPlm7Torr7nva7kuK3lv4PlkoznvKnmlL7nrYnnuqdcbiAgICogQHBhcmFtIG1pbkxuZ1xuICAgKiBAcGFyYW0gbWF4TG5nXG4gICAqIEBwYXJhbSBtaW5MYXRcbiAgICogQHBhcmFtIG1heExhdFxuICAgKi9cbiAgc2V0UmVjdENlbnRlckFuZFpvb20obWluTG5nOiBudW1iZXIsIG1heExuZzogbnVtYmVyLCBtaW5MYXQ6IG51bWJlciwgbWF4TGF0OiBudW1iZXIpIHtcbiAgICBjb25zdCBwb2ludEIgPSB0aGlzLmNyZWF0ZUxuZ0xhdChtaW5MbmcsIG1pbkxhdCk7XG4gICAgY29uc3QgcG9pbnRBID0gdGhpcy5jcmVhdGVMbmdMYXQobWF4TG5nLCBtYXhMYXQpO1xuICAgIHRoaXMubWFwLnNldFZpZXdwb3J0KFtwb2ludEEsIHBvaW50Ql0pO1xuICB9XG5cbiAgYXN5bmMgbWFwTG9hZGVkKG1hcDogYW55KSB7XG4gICAgLy8gaWYgKHRoaXMuY2l0eU5hbWUpIHtcbiAgICAvLyAgIGlmICh0aGlzLmNpdHlOYW1lID09PSAn5rip5beeJykge1xuICAgIC8vICAgICB0aGlzLmNpdHlOYW1lID0gJ3dlbnpob3UnO1xuICAgIC8vICAgfVxuICAgIC8vICAgY29uc3QganNvbjogYW55ID0gYXdhaXQgdGhpcy5odHRwLmdldCgnYXNzZXRzL2VjaGFydHMvbWFwL2pzb24vJyArIHRoaXMuY2l0eU5hbWUgKyAnLmpzb24nKS50b1Byb21pc2UoKTtcbiAgICAvLyAgIGNvbnN0IHBvbHlnb25EYXRhID0gW107XG4gICAgLy8gICBsZXQgZW5jb2RlU2NhbGUgPSBqc29uLlVURjhTY2FsZSB8fCAxMDI0O1xuICAgIC8vICAganNvbi5mZWF0dXJlcy5mb3JFYWNoKCh7IGdlb21ldHJ5IH0pID0+IHtcbiAgICAvLyAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMgPSAoZ2VvbWV0cnkuY29vcmRpbmF0ZXMgYXMgYW55W10pLmZvckVhY2goKGNvb3JkaW5hdGUsIGkpID0+IHtcbiAgICAvLyAgICAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbicpIHtcbiAgICAvLyAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gKGNvb3JkaW5hdGUgYXMgYW55W10pLm1hcCgocG9pbnRzLCBqKSA9PiB7XG4gICAgLy8gICAgICAgICAgIGlmIChqc29uLlVURjhFbmNvZGluZykge1xuICAgIC8vICAgICAgICAgICAgIHBvaW50cyA9IHRoaXMuZGVjb2RlUG9seWdvbihwb2ludHMsIGdlb21ldHJ5LmVuY29kZU9mZnNldHNbaV1bal0sIGVuY29kZVNjYWxlKTtcbiAgICAvLyAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgICByZXR1cm4gcG9pbnRzO1xuICAgIC8vICAgICAgICAgfSk7XG4gICAgLy8gICAgICAgICBwb2x5Z29uRGF0YS5wdXNoKGNvb3JkaW5hdGVzKTtcbiAgICAvLyAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgaWYgKGpzb24uVVRGOEVuY29kaW5nKSB7XG4gICAgLy8gICAgICAgICAgIGNvb3JkaW5hdGUgPSB0aGlzLmRlY29kZVBvbHlnb24oY29vcmRpbmF0ZSwgZ2VvbWV0cnkuZW5jb2RlT2Zmc2V0c1tpXSwgZW5jb2RlU2NhbGUpO1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgICAgcG9seWdvbkRhdGEucHVzaChbY29vcmRpbmF0ZV0pO1xuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfSk7XG4gICAgLy8gICB9KTtcbiAgICAvLyAgIGNvbnN0IGRhdGEgPSBbXG4gICAgLy8gICAgIHtcbiAgICAvLyAgICAgICBnZW9tZXRyeToge1xuICAgIC8vICAgICAgICAgdHlwZTogJ011bHRpUG9seWdvbicsXG4gICAgLy8gICAgICAgICBjb29yZGluYXRlczogcG9seWdvbkRhdGEsXG4gICAgLy8gICAgICAgfSxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgIF07XG4gICAgLy8gICB2YXIgbGF5ZXIgPSBuZXcgbWFwdmdsLlBvbHlnb25MYXllcih7XG4gICAgLy8gICAgIGxpbmVDb2xvcjogdGhpcy5tYXBDaXR5Q29sb3IsXG4gICAgLy8gICAgIGxpbmVXaWR0aDogdGhpcy5zdHJva2VzaXplIHx8IDIsXG4gICAgLy8gICAgIGZpbGxDb2xvcjogdGhpcy5zaGFkZUNvbG9yLFxuICAgIC8vICAgICBkYXRhLFxuICAgIC8vICAgICByZW5kZXJPcmRlcjogLTIsXG4gICAgLy8gICB9KTtcbiAgICAvLyAgIHRoaXMudmlldy5hZGRMYXllcihsYXllcik7XG4gICAgLy8gICBpZiAodGhpcy5tYXBCYWNrQ29sb3IgJiYgIXRoaXMubWFwQmFja0NvbG9yLm1hdGNoKC9yZ2JhXFwoXFxkKyxcXGQrLFxcZCssMFxcKS8pKSB7XG4gICAgLy8gICAgIHZhciBtYXNrTGF5ZXIgPSBuZXcgbWFwdmdsLk1hc2tMYXllcih7XG4gICAgLy8gICAgICAgY29sb3I6IHRoaXMubWFwQmFja0NvbG9yLFxuICAgIC8vICAgICAgIGRhdGEsXG4gICAgLy8gICAgICAgcmVuZGVyT3JkZXI6IC0zLFxuICAgIC8vICAgICB9KTtcbiAgICAvLyAgICAgdGhpcy52aWV3LmFkZExheWVyKG1hc2tMYXllcik7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICB9XG5cbiAgZGVjb2RlUG9seWdvbihjb29yZGluYXRlOiBzdHJpbmcsIGVuY29kZU9mZnNldHM6IG51bWJlcltdLCBlbmNvZGVTY2FsZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgbGV0IHByZXZYID0gZW5jb2RlT2Zmc2V0c1swXTtcbiAgICBsZXQgcHJldlkgPSBlbmNvZGVPZmZzZXRzWzFdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZGluYXRlLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgeCA9IGNvb3JkaW5hdGUuY2hhckNvZGVBdChpKSAtIDY0O1xuICAgICAgdmFyIHkgPSBjb29yZGluYXRlLmNoYXJDb2RlQXQoaSArIDEpIC0gNjQ7XG4gICAgICAvLyBaaWdaYWcgZGVjb2RpbmdcbiAgICAgIHggPSAoeCA+PiAxKSBeIC0oeCAmIDEpO1xuICAgICAgeSA9ICh5ID4+IDEpIF4gLSh5ICYgMSk7XG4gICAgICAvLyBEZWx0YSBkZW9jZGluZ1xuICAgICAgeCArPSBwcmV2WDtcbiAgICAgIHkgKz0gcHJldlk7XG5cbiAgICAgIHByZXZYID0geDtcbiAgICAgIHByZXZZID0geTtcbiAgICAgIC8vIERlcXVhbnRpemVcbiAgICAgIHJlc3VsdC5wdXNoKFt4IC8gZW5jb2RlU2NhbGUsIHkgLyBlbmNvZGVTY2FsZV0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBhc3luYyBtYXBUeXBlQ2hhbmdlKG1hcFR5cGU6IHN0cmluZykge1xuICAvLyAgIHN3aXRjaCAobWFwVHlwZSkge1xuICAvLyAgICAgY2FzZSAnZGFyayc6XG4gIC8vICAgICAgIGlmICghdGhpcy5kYXJrU3R5bGUpIHtcbiAgLy8gICAgICAgICB0aGlzLmRhcmtTdHlsZSA9IGF3YWl0IHRoaXMuaHR0cC5nZXQoJ2Fzc2V0cy9lY2hhcnRzL21hcC9qc29uL2N1c3RvbV9tYXAuanNvbicpLnRvUHJvbWlzZSgpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIHRoaXMubWFwLnNldE1hcFR5cGUoQk1BUF9OT1JNQUxfTUFQKTtcbiAgLy8gICAgICAgdGhpcy5tYXAuc2V0TWFwU3R5bGVWMih7IHN0eWxlSnNvbjogdGhpcy5kYXJrU3R5bGUgfSk7XG4gIC8vICAgICAgIGJyZWFrO1xuICAvLyAgICAgY2FzZSAnc2F0ZWxsaXRlJzpcbiAgLy8gICAgICAgdGhpcy5tYXAuc2V0TWFwVHlwZShCTUFQX1NBVEVMTElURV9NQVApO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIGNhc2UgJ2N1c3RvbSc6XG4gIC8vICAgICAgIGlmICh0aGlzLnVwbG9hZFN0eWxlKSB7XG4gIC8vICAgICAgICAgY29uc3Qgc3R5bGVKc29uID0gYXdhaXQgdGhpcy5odHRwLmdldCh0aGlzLnVwbG9hZFN0eWxlKS50b1Byb21pc2UoKTtcbiAgLy8gICAgICAgICB0aGlzLm1hcC5zZXRNYXBUeXBlKEJNQVBfTk9STUFMX01BUCk7XG4gIC8vICAgICAgICAgdGhpcy5tYXAuc2V0TWFwU3R5bGVWMih7IHN0eWxlSnNvbiB9KTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIGRlZmF1bHQ6XG4gIC8vICAgICAgIHRoaXMubWFwLnNldE1hcFR5cGUoQk1BUF9OT1JNQUxfTUFQKTtcbiAgLy8gICAgICAgdGhpcy5tYXAuc2V0TWFwU3R5bGVWMih7IHN0eWxlSnNvbjogbnVsbCB9KTtcbiAgLy8gICB9XG4gIC8vIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { TiandituComponent } from './tianditu.component';
|
|
4
|
+
import { WidgetBaseModule, WidgetService } from 'bbj-widget-base';
|
|
5
|
+
import { TiandituMarkerComponent } from './tianditu-marker/tianditu-marker.component';
|
|
6
|
+
export class TiandituModule {
|
|
7
|
+
constructor(widgetService) {
|
|
8
|
+
widgetService.register(TiandituComponent, { scaleContent: false });
|
|
9
|
+
widgetService.register(TiandituMarkerComponent);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
TiandituModule.decorators = [
|
|
13
|
+
{ type: NgModule, args: [{
|
|
14
|
+
declarations: [TiandituComponent, TiandituMarkerComponent],
|
|
15
|
+
imports: [CommonModule, WidgetBaseModule],
|
|
16
|
+
},] }
|
|
17
|
+
];
|
|
18
|
+
TiandituModule.ctorParameters = () => [
|
|
19
|
+
{ type: WidgetService }
|
|
20
|
+
];
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlhbmRpdHUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWVuLXdpZGdldC9zcmMvbGliL3RpYW5kaXR1L3RpYW5kaXR1Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFNdEYsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBWSxhQUE0QjtRQUN0QyxhQUFhLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkUsYUFBYSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7OztZQVJGLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSx1QkFBdUIsQ0FBQztnQkFDMUQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDO2FBQzFDOzs7WUFOMEIsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGlhbmRpdHVDb21wb25lbnQgfSBmcm9tICcuL3RpYW5kaXR1LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRCYXNlTW9kdWxlLCBXaWRnZXRTZXJ2aWNlIH0gZnJvbSAnYmJqLXdpZGdldC1iYXNlJztcbmltcG9ydCB7IFRpYW5kaXR1TWFya2VyQ29tcG9uZW50IH0gZnJvbSAnLi90aWFuZGl0dS1tYXJrZXIvdGlhbmRpdHUtbWFya2VyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1RpYW5kaXR1Q29tcG9uZW50LCBUaWFuZGl0dU1hcmtlckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFdpZGdldEJhc2VNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBUaWFuZGl0dU1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UpIHtcbiAgICB3aWRnZXRTZXJ2aWNlLnJlZ2lzdGVyKFRpYW5kaXR1Q29tcG9uZW50LCB7IHNjYWxlQ29udGVudDogZmFsc2UgfSk7XG4gICAgd2lkZ2V0U2VydmljZS5yZWdpc3RlcihUaWFuZGl0dU1hcmtlckNvbXBvbmVudCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2,6 +2,7 @@ import { InjectionToken, ɵɵdefineInjectable, ɵɵinject, Injectable, Optional,
|
|
|
2
2
|
import { __awaiter } from 'tslib';
|
|
3
3
|
import { LazyService as LazyService$1 } from '@delon/util';
|
|
4
4
|
import { LazyService } from '@delon/util/other';
|
|
5
|
+
import { takeUntil, take } from 'rxjs/operators';
|
|
5
6
|
|
|
6
7
|
const SCREEN_WIDGET_CONFIG = new InjectionToken('screen-widget.config');
|
|
7
8
|
|
|
@@ -106,9 +107,145 @@ BaiduMapService.ctorParameters = () => [
|
|
|
106
107
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [SCREEN_WIDGET_CONFIG,] }] }
|
|
107
108
|
];
|
|
108
109
|
|
|
110
|
+
function scaleAdapter(scale$, destroy$, zone, element, widgetRef) {
|
|
111
|
+
scale$.pipe(takeUntil(destroy$)).subscribe((scale) => {
|
|
112
|
+
const { x: sx, y: sy, scaleContent } = scale;
|
|
113
|
+
const style = element.style;
|
|
114
|
+
if (scaleContent === false) {
|
|
115
|
+
zone.onStable.pipe(take(1)).subscribe(() => {
|
|
116
|
+
const parent = element.parentNode;
|
|
117
|
+
if (parent) {
|
|
118
|
+
const match = /translate\(([-\d.]+)px, ([-\d.]+)px\)/.exec(parent.style.transform);
|
|
119
|
+
if (match) {
|
|
120
|
+
const offsetX = parseFloat(match[1]);
|
|
121
|
+
const offsetY = parseFloat(match[2]);
|
|
122
|
+
style.transform = `translate(${-offsetX}px,${-offsetY}px)`;
|
|
123
|
+
style.height = parent.clientHeight + offsetY + 'px';
|
|
124
|
+
style.width = parent.clientWidth + offsetX + 'px';
|
|
125
|
+
style.padding = `${offsetY}px 0 0 ${offsetX}px`;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
const { position, size } = widgetRef.widget;
|
|
132
|
+
const { x, y } = position;
|
|
133
|
+
const { width, height } = size;
|
|
134
|
+
style.transform = `translate(${-x}px,${-y}px) scale(${1 / sx},${1 / sy})`;
|
|
135
|
+
style.height = (y + height) * sy + 'px';
|
|
136
|
+
style.width = (x + width) * sx + 'px';
|
|
137
|
+
style.padding = `${y * sy}px 0 0 ${x * sx}px`;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
//定义一些常量
|
|
143
|
+
var x_PI = (3.14159265358979324 * 3000.0) / 180.0;
|
|
144
|
+
var PI = 3.1415926535897932384626;
|
|
145
|
+
var a = 6378245.0;
|
|
146
|
+
var ee = 0.00669342162296594323;
|
|
147
|
+
/**
|
|
148
|
+
* 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换
|
|
149
|
+
* 即 百度 转 谷歌、高德
|
|
150
|
+
*/
|
|
151
|
+
function bd09togcj02(bd_lon, bd_lat) {
|
|
152
|
+
var x_pi = (3.14159265358979324 * 3000.0) / 180.0;
|
|
153
|
+
var x = bd_lon - 0.0065;
|
|
154
|
+
var y = bd_lat - 0.006;
|
|
155
|
+
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
|
|
156
|
+
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
|
|
157
|
+
var gg_lng = z * Math.cos(theta);
|
|
158
|
+
var gg_lat = z * Math.sin(theta);
|
|
159
|
+
return [gg_lng, gg_lat];
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
|
|
163
|
+
* 即谷歌、高德 转 百度
|
|
164
|
+
*/
|
|
165
|
+
function gcj02tobd09(lng, lat) {
|
|
166
|
+
var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
|
|
167
|
+
var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
|
|
168
|
+
var bd_lng = z * Math.cos(theta) + 0.0065;
|
|
169
|
+
var bd_lat = z * Math.sin(theta) + 0.006;
|
|
170
|
+
return [bd_lng, bd_lat];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* WGS84转GCj02
|
|
174
|
+
*/
|
|
175
|
+
function wgs84togcj02(lng, lat) {
|
|
176
|
+
if (out_of_china(lng, lat)) {
|
|
177
|
+
return [lng, lat];
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
var dlat = transformlat(lng - 105.0, lat - 35.0);
|
|
181
|
+
var dlng = transformlng(lng - 105.0, lat - 35.0);
|
|
182
|
+
var radlat = (lat / 180.0) * PI;
|
|
183
|
+
var magic = Math.sin(radlat);
|
|
184
|
+
magic = 1 - ee * magic * magic;
|
|
185
|
+
var sqrtmagic = Math.sqrt(magic);
|
|
186
|
+
dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI);
|
|
187
|
+
dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI);
|
|
188
|
+
var mglat = lat + dlat;
|
|
189
|
+
var mglng = lng + dlng;
|
|
190
|
+
return [mglng, mglat];
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* GCJ02 转换为 WGS84
|
|
195
|
+
*/
|
|
196
|
+
function gcj02towgs84(lng, lat) {
|
|
197
|
+
if (out_of_china(lng, lat)) {
|
|
198
|
+
return [lng, lat];
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
var dlat = transformlat(lng - 105.0, lat - 35.0);
|
|
202
|
+
var dlng = transformlng(lng - 105.0, lat - 35.0);
|
|
203
|
+
var radlat = (lat / 180.0) * PI;
|
|
204
|
+
var magic = Math.sin(radlat);
|
|
205
|
+
magic = 1 - ee * magic * magic;
|
|
206
|
+
var sqrtmagic = Math.sqrt(magic);
|
|
207
|
+
dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI);
|
|
208
|
+
dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI);
|
|
209
|
+
var mglat = lat + dlat;
|
|
210
|
+
var mglng = lng + dlng;
|
|
211
|
+
return [lng * 2 - mglng, lat * 2 - mglat];
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* BD09 转换为 WGS84
|
|
216
|
+
*/
|
|
217
|
+
function bd09towgs84(lng, lat) {
|
|
218
|
+
var rel = bd09togcj02(lng, lat);
|
|
219
|
+
return gcj02towgs84(rel[0], rel[1]);
|
|
220
|
+
}
|
|
221
|
+
function wgs84tobd09(lng, lat) {
|
|
222
|
+
var rel = wgs84togcj02(lng, lat);
|
|
223
|
+
return gcj02tobd09(rel[0], rel[1]);
|
|
224
|
+
}
|
|
225
|
+
function transformlat(lng, lat) {
|
|
226
|
+
var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));
|
|
227
|
+
ret += ((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0) / 3.0;
|
|
228
|
+
ret += ((20.0 * Math.sin(lat * PI) + 40.0 * Math.sin((lat / 3.0) * PI)) * 2.0) / 3.0;
|
|
229
|
+
ret += ((160.0 * Math.sin((lat / 12.0) * PI) + 320 * Math.sin((lat * PI) / 30.0)) * 2.0) / 3.0;
|
|
230
|
+
return ret;
|
|
231
|
+
}
|
|
232
|
+
function transformlng(lng, lat) {
|
|
233
|
+
var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));
|
|
234
|
+
ret += ((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0) / 3.0;
|
|
235
|
+
ret += ((20.0 * Math.sin(lng * PI) + 40.0 * Math.sin((lng / 3.0) * PI)) * 2.0) / 3.0;
|
|
236
|
+
ret += ((150.0 * Math.sin((lng / 12.0) * PI) + 300.0 * Math.sin((lng / 30.0) * PI)) * 2.0) / 3.0;
|
|
237
|
+
return ret;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* 判断是否在国内,不在国内则不做偏移
|
|
241
|
+
*/
|
|
242
|
+
function out_of_china(lng, lat) {
|
|
243
|
+
return lng < 72.004 || lng > 137.8347 || lat < 0.8293 || lat > 55.8271 || false;
|
|
244
|
+
}
|
|
245
|
+
|
|
109
246
|
/**
|
|
110
247
|
* Generated bundle index. Do not edit.
|
|
111
248
|
*/
|
|
112
249
|
|
|
113
|
-
export { BaiduMapService, SCREEN_WIDGET_CONFIG };
|
|
250
|
+
export { BaiduMapService, SCREEN_WIDGET_CONFIG, bd09togcj02, bd09towgs84, gcj02tobd09, gcj02towgs84, scaleAdapter, wgs84tobd09, wgs84togcj02 };
|
|
114
251
|
//# sourceMappingURL=bbj-screen-widget-core.js.map
|