diff --git a/src/app/routes/supply-management/components/gaode-map/gaode-map.component.html b/src/app/routes/supply-management/components/gaode-map/gaode-map.component.html
index 1a26554b..5e27508d 100644
--- a/src/app/routes/supply-management/components/gaode-map/gaode-map.component.html
+++ b/src/app/routes/supply-management/components/gaode-map/gaode-map.component.html
@@ -1,6 +1,6 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/app/routes/supply-management/components/gaode-map/gaode-map.component.less b/src/app/routes/supply-management/components/gaode-map/gaode-map.component.less
new file mode 100644
index 00000000..809b5b87
--- /dev/null
+++ b/src/app/routes/supply-management/components/gaode-map/gaode-map.component.less
@@ -0,0 +1,8 @@
+:host::ng-deep {
+ p.my-desc {
+ max-width : 300px;
+ margin : 5px 0;
+ line-height: 150%;
+ padding : 12px;
+ }
+}
\ No newline at end of file
diff --git a/src/app/routes/supply-management/components/gaode-map/gaode-map.component.ts b/src/app/routes/supply-management/components/gaode-map/gaode-map.component.ts
index 8ef17fa1..b57cfd7c 100644
--- a/src/app/routes/supply-management/components/gaode-map/gaode-map.component.ts
+++ b/src/app/routes/supply-management/components/gaode-map/gaode-map.component.ts
@@ -1,15 +1,19 @@
-import { Component, Input, OnInit, Output, EventEmitter, OnDestroy } from '@angular/core';
+import { Component, Input, OnInit, Output, EventEmitter, OnDestroy, ViewChild } from '@angular/core';
import { _HttpClient } from '@delon/theme';
import { load } from '@amap/amap-jsapi-loader';
import { BaseService } from 'src/app/shared/services';
import { throwError } from 'rxjs';
import AMapLoader from '@amap/amap-jsapi-loader';
+declare var AMap: any;
declare var AMapUI: any;
@Component({
selector: 'app-gaode-map',
+ styleUrls: ['./gaode-map.component.less'],
templateUrl: './gaode-map.component.html'
})
export class GaodeMapComponent implements OnInit, OnDestroy {
+ @ViewChild('modal')
+ modal: any;
addressInput: any;
aMap: any;
@@ -35,7 +39,10 @@ export class GaodeMapComponent implements OnInit, OnDestroy {
plugins: [
// 需要使用的的插件列表,如比例尺'AMap.Scale'等
'AMap.SimpleMarker',
+ 'AMap.PoiPicker',
'AMap.Scale',
+ 'AMap.Marker',
+ 'AMap.InfoWindow',
'AMap.ToolBar',
'AMap.MapType',
'AMap.Driving',
@@ -44,7 +51,7 @@ export class GaodeMapComponent implements OnInit, OnDestroy {
AMapUI: {
// 是否加载 AMapUI,缺省不加载
version: '1.1', // AMapUI 缺省 1.1
- plugins: ['overlay/SimpleMarker'] // 需要加载的 AMapUI ui插件
+ plugins: ['overlay/SimpleMarker', 'misc/PoiPicker'] // 需要加载的 AMapUI ui插件
},
Loca: {
// 是否加载 Loca, 缺省不加载
@@ -54,25 +61,121 @@ export class GaodeMapComponent implements OnInit, OnDestroy {
.then(AMap => {
console.log(AMap);
- this.aMap = new AMap.Map('container');
+ var poiPicker = new AMapUI.PoiPicker({
+ //city:'北京',
+ input: 'pickerInput'
+ });
+
+ console.log(poiPicker);
+
+ this.aMap = new AMap.Map('container', {
+ resizeEnable: true,
+ zoom: 16
+ });
console.log(this.aMap);
this.aMap.on('complete', () => {
this.service.msgSrv.info('地图加载完成 !');
- new AMapUI.SimpleMarker({
- //前景文字
- iconLabel: 'A',
- //图标主题
- iconTheme: 'default',
- //背景图标样式
- iconStyle: 'red',
- map: this.aMap,
- position: this.aMap.getCenter()
- });
+ this.poiPickerReady(poiPicker);
+ // new AMapUI.SimpleMarker({
+ // //前景文字
+ // iconLabel: 'A',
+ // //图标主题
+ // iconTheme: 'default',
+ // //背景图标样式
+ // iconStyle: 'red',
+ // map: this.aMap,
+ // position: this.aMap.getCenter()
+ // });
});
})
.catch(e => {
throwError(e);
});
}
+
+ poiPickerReady(poiPicker: any) {
+ (window as any).poiPicker = poiPicker;
+ const map = this.aMap;
+ const _this = this;
+ var marker = new AMapUI.SimpleMarker();
+ console.log(marker);
+
+ var infoWindow = new AMap.InfoWindow({
+ offset: new AMap.Pixel(0, -20)
+ });
+ console.log(infoWindow);
+
+ //选取了某个POI
+ poiPicker.on('poiPicked', function (poiResult: any) {
+ var source = poiResult.source,
+ poi = poiResult.item,
+ info = {
+ source: source,
+ id: poi.id,
+ name: poi.name,
+ location: poi.location.toString(),
+ address: poi.address
+ };
+ console.log(poi);
+
+ marker.setMap(map);
+ infoWindow.setMap(map);
+
+ marker.setPosition(poi.location);
+ infoWindow.setPosition(poi.location);
+
+ infoWindow.setContent('地址:
' + poi.name + '
');
+ infoWindow.open(map, marker.getPosition());
+
+ map.setCenter(marker.getPosition());
+ });
+
+ poiPicker.onCityReady(function () {
+ poiPicker.suggest('美食');
+ });
+ }
+
+ createInfoWindow(title: any, content: any) {
+ var info = document.createElement('div');
+ info.className = 'custom-info input-card content-window-card';
+
+ //可以通过下面的方式修改自定义窗体的宽高
+ //info.style.width = "400px";
+ // 定义顶部标题
+ var top = document.createElement('div');
+ var titleD = document.createElement('div');
+ var closeX = document.createElement('img');
+ top.className = 'info-top';
+ titleD.innerHTML = title;
+ closeX.src = 'https://webapi.amap.com/images/close2.gif';
+ closeX.onclick = this.closeInfoWindow;
+
+ top.appendChild(titleD);
+ top.appendChild(closeX);
+ info.appendChild(top);
+
+ // 定义中部内容
+ var middle = document.createElement('div');
+ middle.className = 'info-middle';
+ middle.style.backgroundColor = 'white';
+ middle.innerHTML = content;
+ info.appendChild(middle);
+
+ // 定义底部内容
+ var bottom = document.createElement('div');
+ bottom.className = 'info-bottom';
+ bottom.style.position = 'relative';
+ bottom.style.top = '0px';
+ bottom.style.margin = '0 auto';
+ var sharp = document.createElement('img');
+ sharp.src = 'https://webapi.amap.com/images/sharp.png';
+ bottom.appendChild(sharp);
+ info.appendChild(bottom);
+ return info;
+ }
+
+ closeInfoWindow() {
+ this.aMap.clearInfoWindow();
+ }
}
diff --git a/src/app/routes/supply-management/components/onecar-publish/onecar-publish.component.ts b/src/app/routes/supply-management/components/onecar-publish/onecar-publish.component.ts
index 3f4060f6..cdbe5362 100644
--- a/src/app/routes/supply-management/components/onecar-publish/onecar-publish.component.ts
+++ b/src/app/routes/supply-management/components/onecar-publish/onecar-publish.component.ts
@@ -11,6 +11,7 @@ import {
SFUISchema
} from '@delon/form';
import { _HttpClient } from '@delon/theme';
+import { AmapPoiPickerComponent } from '@shared';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { PublishGoodsChooseFamifiarComponent } from '../choose-famifiar/choose-famifiar.component';
@@ -489,8 +490,8 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
openMap() {
this.modalService.create({
nzTitle: '',
- nzContent: GaodeMapComponent,
- nzWidth: 1200
+ nzContent: AmapPoiPickerComponent,
+ nzWidth: 848
});
}
}
diff --git a/src/app/routes/ticket-management/components/etc-blacklist/etc-blacklist.component.html b/src/app/routes/ticket-management/components/etc-blacklist/etc-blacklist.component.html
index cb617ef0..2738a18f 100644
--- a/src/app/routes/ticket-management/components/etc-blacklist/etc-blacklist.component.html
+++ b/src/app/routes/ticket-management/components/etc-blacklist/etc-blacklist.component.html
@@ -1 +1 @@
-
etc-blacklist works!
+
\ No newline at end of file
diff --git a/src/app/shared/components/amap/amap-path-simplifier/amap-path-simplifier.component.html b/src/app/shared/components/amap/amap-path-simplifier/amap-path-simplifier.component.html
new file mode 100644
index 00000000..6794d28a
--- /dev/null
+++ b/src/app/shared/components/amap/amap-path-simplifier/amap-path-simplifier.component.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/app/shared/components/amap/amap-path-simplifier/amap-path-simplifier.component.less b/src/app/shared/components/amap/amap-path-simplifier/amap-path-simplifier.component.less
new file mode 100644
index 00000000..e69de29b
diff --git a/src/app/shared/components/amap/amap-path-simplifier/amap-path-simplifier.component.ts b/src/app/shared/components/amap/amap-path-simplifier/amap-path-simplifier.component.ts
new file mode 100644
index 00000000..0d350056
--- /dev/null
+++ b/src/app/shared/components/amap/amap-path-simplifier/amap-path-simplifier.component.ts
@@ -0,0 +1,177 @@
+import { Component, Input, OnChanges, OnInit, Output, SimpleChanges, EventEmitter } from '@angular/core';
+import { BaseService } from 'src/app/shared/services';
+import { throwError } from 'rxjs';
+import AMapLoader from '@amap/amap-jsapi-loader';
+import { amapConf } from '@conf/amap.config';
+declare var AMap: any;
+declare var AMapUI: any;
+declare var Loca: any;
+
+const CONFIG = amapConf;
+@Component({
+ selector: 'amap-path-simplifier',
+ templateUrl: './amap-path-simplifier.component.html',
+ styleUrls: ['./amap-path-simplifier.component.less']
+})
+export class AmapPathSimplifierComponent implements OnInit, OnChanges {
+ aMap: any;
+ pathSimplifierIns: any;
+
+ @Input()
+ pathList = [
+ {
+ name: '路线1',
+ points: [
+ {
+ name: '点a',
+ lnglat: [116.405289, 39.904987]
+ },
+ {
+ name: '点b',
+ lnglat: [113.964458, 40.54664]
+ },
+ {
+ name: '点c',
+ lnglat: [111.47836, 41.135964]
+ },
+ {
+ name: '点d',
+ lnglat: [108.949297, 41.670904]
+ },
+ {
+ name: '点e',
+ lnglat: [106.380111, 42.149509]
+ },
+ {
+ name: '点f',
+ lnglat: [103.774185, 42.56996]
+ },
+ {
+ name: '点g',
+ lnglat: [101.135432, 42.930601]
+ },
+ {
+ name: '点h',
+ lnglat: [98.46826, 43.229964]
+ },
+ {
+ name: '点i',
+ lnglat: [95.777529, 43.466798]
+ },
+ {
+ name: '点j',
+ lnglat: [93.068486, 43.64009]
+ },
+ {
+ name: '点k',
+ lnglat: [90.34669, 43.749086]
+ },
+ {
+ name: '点l',
+ lnglat: [87.61792, 43.793308]
+ }
+ ]
+ }
+ ];
+ @Input()
+ selectedIndex = 0;
+ @Input()
+ mapWidth = '800px';
+
+ @Input()
+ mapHeight = '500px';
+
+ @Output()
+ clcikPointEvent = new EventEmitter
();
+
+ constructor() {}
+ ngOnChanges(changes: SimpleChanges): void {
+ if (changes.pathList.currentValue && this.pathSimplifierIns) {
+ this.setData(changes.pathList.currentValue);
+ }
+ }
+ ngOnInit(): void {
+ this.mapInit();
+ }
+
+ ngOnDestroy(): void {
+ if (this.aMap) {
+ this.aMap.destroy();
+ }
+ }
+
+ mapInit() {
+ AMapLoader.load({
+ key: CONFIG.key,
+ version: CONFIG.version,
+ plugins: [
+ // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+ 'AMap.PathSimplifier'
+ ],
+ AMapUI: {
+ version: CONFIG.AMapUIVersion,
+ plugins: ['misc/PathSimplifier'] // 需要加载的 AMapUI ui插件
+ },
+ })
+ .then(AMap => {
+ this.aMap = new AMap.Map('container', {
+ zoom: 4
+ });
+
+ this.aMap.on('complete', () => {
+ // this.service.msgSrv.info('地图加载完成 !');
+ this.pathInit();
+ });
+ })
+ .catch(e => {
+ throwError(e);
+ });
+ }
+
+ pathInit() {
+ this.pathSimplifierIns = new AMapUI.PathSimplifier({
+ zIndex: 100,
+ //autoSetFitView:false,
+ map: this.aMap, //所属的地图实例
+
+ getPath: function (pathData: any, pathIndex: any) {
+ var points = pathData.points,
+ lnglatList = [];
+
+ for (var i = 0, len = points.length; i < len; i++) {
+ lnglatList.push(points[i].lnglat);
+ }
+
+ return lnglatList;
+ },
+ getHoverTitle: function (pathData: any, pathIndex: any, pointIndex: any) {
+ if (pointIndex >= 0) {
+ //point
+ return pathData.name + ',' + pathData.points[pointIndex].name;
+ }
+ return pathData.name + ',点数量' + pathData.points.length;
+ },
+ renderOptions: {
+ renderAllPointsIfNumberBelow: 100 //绘制路线节点,如不需要可设置为-1
+ }
+ });
+
+ (window as any).pathSimplifierIns = this.pathSimplifierIns;
+ this.setData(this.pathList);
+
+ this.setPathIndex(this.selectedIndex);
+
+ this.pathSimplifierIns.on('pointClick', (e: any, info: any) => {
+ this.clcikPointEvent.emit({ e, info });
+ console.log('Click: ' + info.pathData.points[info.pointIndex].name);
+ });
+ }
+
+ setData(pathList: Array) {
+ this.pathSimplifierIns.setData(pathList);
+ }
+
+ setPathIndex(index: number) {
+ this.pathSimplifierIns.setSelectedPathIndex(index);
+ }
+}
diff --git a/src/app/shared/components/amap/amap-poi-picker/amap-poi-picker.component.html b/src/app/shared/components/amap/amap-poi-picker/amap-poi-picker.component.html
new file mode 100644
index 00000000..742b309c
--- /dev/null
+++ b/src/app/shared/components/amap/amap-poi-picker/amap-poi-picker.component.html
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/src/app/shared/components/amap/amap-poi-picker/amap-poi-picker.component.less b/src/app/shared/components/amap/amap-poi-picker/amap-poi-picker.component.less
new file mode 100644
index 00000000..fa02327b
--- /dev/null
+++ b/src/app/shared/components/amap/amap-poi-picker/amap-poi-picker.component.less
@@ -0,0 +1,8 @@
+:host::ng-deep {
+ p.my-desc {
+ max-width : 300px;
+ margin : 5px 0;
+ line-height: 150%;
+ padding : 12px;
+ }
+}
\ No newline at end of file
diff --git a/src/app/shared/components/amap/amap-poi-picker/amap-poi-picker.component.ts b/src/app/shared/components/amap/amap-poi-picker/amap-poi-picker.component.ts
new file mode 100644
index 00000000..3f167d20
--- /dev/null
+++ b/src/app/shared/components/amap/amap-poi-picker/amap-poi-picker.component.ts
@@ -0,0 +1,124 @@
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { throwError } from 'rxjs';
+import AMapLoader from '@amap/amap-jsapi-loader';
+import { amapConf } from '@conf/amap.config';
+declare var AMap: any;
+declare var AMapUI: any;
+declare var Loca: any;
+
+const CONFIG = amapConf;
+
+@Component({
+ selector: 'amap-poi-picker',
+ templateUrl: './amap-poi-picker.component.html',
+ styleUrls: ['./amap-poi-picker.component.less']
+})
+export class AmapPoiPickerComponent implements OnInit {
+ @ViewChild('modal')
+ modal: any;
+ addressInput: any;
+
+ aMap: any;
+
+ poi: any;
+
+ constructor() {}
+ ngOnInit(): void {
+ this.mapInit();
+ // this.PoiPicker();
+ }
+
+ ngOnDestroy(): void {
+ if (this.aMap) {
+ this.aMap.destroy();
+ }
+ }
+
+ mapInit() {
+ AMapLoader.load({
+ // 首次调用 load
+ key: CONFIG.key, // 申请好的Web端开发者Key,首次调用 load 时必填
+ version: CONFIG.version, // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
+ plugins: [
+ // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+ 'AMap.SimpleMarker',
+ 'AMap.PoiPicker',
+ 'AMap.Scale',
+ 'AMap.InfoWindow',
+ 'AMap.Geolocation'
+ ],
+ AMapUI: {
+ // 是否加载 AMapUI,缺省不加载
+ version: CONFIG.AMapUIVersion, // AMapUI 缺省 1.1
+ plugins: ['overlay/SimpleMarker', 'misc/PoiPicker'] // 需要加载的 AMapUI ui插件
+ },
+ Loca: {
+ // 是否加载 Loca, 缺省不加载
+ version: CONFIG.LocaVersion // Loca 版本,缺省 1.3.2
+ }
+ })
+ .then(AMap => {
+ // 搜索picker
+ var poiPicker = new AMapUI.PoiPicker({
+ input: 'pickerInput'
+ });
+
+ // 地图
+ this.aMap = new AMap.Map('container', {
+ resizeEnable: true,
+ zoom: 16
+ });
+
+ // 地图创建成功
+ this.aMap.on('complete', () => {
+ this.poiPickerReady(poiPicker);
+ });
+ })
+ .catch(e => {
+ throwError(e);
+ });
+ }
+
+ poiPickerReady(poiPicker: any) {
+ (window as any).poiPicker = poiPicker;
+ const map = this.aMap;
+ // 定位标志
+ const marker = new AMapUI.SimpleMarker({
+ //图标主题
+ iconTheme: 'default',
+ map: map,
+ position: map.getCenter()
+ });
+
+ // 信息窗口
+ const infoWindow = new AMap.InfoWindow({
+ offset: new AMap.Pixel(0, -20)
+ });
+
+ //选取了某个POI
+ poiPicker.on('poiPicked', (poiResult: any) => {
+ const source = poiResult.source,
+ poi = poiResult.item;
+ console.log(poi);
+ this.poi = poi;
+ marker.setMap(map);
+ infoWindow.setMap(map);
+
+ marker.setPosition(poi.location);
+ infoWindow.setPosition(poi.location);
+
+ infoWindow.setContent('地址: ' + poi.name + '
');
+ infoWindow.open(map, marker.getPosition());
+
+ map.setCenter(marker.getPosition());
+ });
+
+ poiPicker.onCityReady(function () {
+ poiPicker.suggest('美食');
+ });
+ }
+
+ closeInfoWindow() {
+ this.aMap.clearInfoWindow();
+ }
+}
diff --git a/src/app/shared/components/amap/amap.module.ts b/src/app/shared/components/amap/amap.module.ts
new file mode 100644
index 00000000..01b4a67c
--- /dev/null
+++ b/src/app/shared/components/amap/amap.module.ts
@@ -0,0 +1,14 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { AmapPoiPickerComponent } from './amap-poi-picker/amap-poi-picker.component';
+import { FormsModule } from '@angular/forms';
+import { AmapPathSimplifierComponent } from './amap-path-simplifier/amap-path-simplifier.component';
+
+const COMPONENTS = [AmapPoiPickerComponent, AmapPathSimplifierComponent];
+
+@NgModule({
+ declarations: COMPONENTS,
+ imports: [CommonModule, FormsModule],
+ exports: COMPONENTS
+})
+export class AmapModule {}
diff --git a/src/app/shared/components/amap/amap.service.ts b/src/app/shared/components/amap/amap.service.ts
new file mode 100644
index 00000000..b65e03c6
--- /dev/null
+++ b/src/app/shared/components/amap/amap.service.ts
@@ -0,0 +1,9 @@
+import { Injectable } from '@angular/core';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class AmapService {
+
+ constructor() { }
+}
diff --git a/src/app/shared/components/amap/index.ts b/src/app/shared/components/amap/index.ts
new file mode 100644
index 00000000..b31374a1
--- /dev/null
+++ b/src/app/shared/components/amap/index.ts
@@ -0,0 +1,4 @@
+export * from './amap.module';
+export * from './amap.service';
+export * from './amap-poi-picker/amap-poi-picker.component';
+export * from './amap-path-simplifier/amap-path-simplifier.component';
\ No newline at end of file
diff --git a/src/app/shared/index.ts b/src/app/shared/index.ts
index 29518ad6..28f7e8a5 100644
--- a/src/app/shared/index.ts
+++ b/src/app/shared/index.ts
@@ -16,6 +16,7 @@ export * from './components/status-label/index';
export * from './components/scrollbar/index';
export * from './components/address/index';
export * from './components/captcha/index';
+export * from './components/amap/index';
// Utils
export * from './utils';
diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts
index 1e10dace..1ceca61d 100644
--- a/src/app/shared/shared.module.ts
+++ b/src/app/shared/shared.module.ts
@@ -27,6 +27,7 @@ import { ScrollbarModule } from './components/scrollbar';
import { StatusLabelModule } from './components/status-label';
import { SharedThirdModule } from './shared-third.module';
import { LogisticsTimeLineComponent } from './components/logistics-time-line/logistics-time-line.component';
+import { AmapModule } from './components/amap/amap.module';
const MODULES = [
AddressModule,
@@ -38,6 +39,7 @@ const MODULES = [
ScrollbarModule,
StatusLabelModule,
SharedThirdModule,
+ AmapModule,
...PRO_SHARED_MODULES
];
// #endregion
diff --git a/src/conf/amap.config.ts b/src/conf/amap.config.ts
new file mode 100644
index 00000000..25b3509e
--- /dev/null
+++ b/src/conf/amap.config.ts
@@ -0,0 +1,21 @@
+/**
+ * 高德地图资源配置
+ */
+export const amapConf = {
+ /**
+ * 文件上传路径
+ */
+ key: '63f9573ca55fef2b92d4ffe0c85dea8f',
+ /**
+ * JSAPI版本
+ */
+ version: '2.0',
+ /**
+ * AMapUI版本
+ */
+ AMapUIVersion: '1.1',
+ /**
+ * Loca版本
+ */
+ LocaVersion: '2.0'
+};
diff --git a/src/index.html b/src/index.html
index 091ea589..7330ae04 100644
--- a/src/index.html
+++ b/src/index.html
@@ -57,10 +57,10 @@