UNPKG

ng-cw-v12

Version:

Angular UI Component Library

380 lines 78.3 kB
import { __awaiter } from "tslib"; import { Component, Output, EventEmitter, Input } from '@angular/core'; import { Subject } from 'rxjs'; import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; import * as i2 from "./local.service"; import * as i3 from "@angular/common"; import * as i4 from "@angular/forms"; export class PoiComponent { constructor(eleRef, http, ls) { this.eleRef = eleRef; this.http = http; this.ls = ls; /** 点击事件 */ this.ncClick = new EventEmitter(); /** 清除事件 */ this.ncClear = new EventEmitter(); /** 错误事件 */ this.ncError = new EventEmitter(); /** token */ this.ncToken = ''; /** 城市 */ this.ncCity = ''; //百度:https://mapopen-website-wiki.cdn.bcebos.com/static_zip/BaiduMap_cityCode_1102.zip //高德:https://a.amap.com/lbs/static/code_resource/AMap_adcode_citycode.zip //天地图:https://download.tianditu.gov.cn/download/xzqh/AdminCode.csv //腾讯:https://lbs.qq.com/service/webService/webServiceGuide/search/webServiceDistrict#6 /** 搜索框占位符 */ this.ncPlaceholder = '搜地点'; /** 搜索框宽度 */ this.ncWidth = '300px'; /** 显示类型 */ this.ncShowType = 'simple'; /** 搜索延迟 */ this.ncDelay = 500; this.parametersOk = false; //参数是否输入完整,不完整不显示组件dom this.searchBarShow = false; //poi搜索条显示 this.poiKey = ''; //poi搜索关键字 this.poiInputing = false; this.poiTipsList = []; //poi搜索提示结果 this.poiTipsListShow = false; //是否显示poi提示列表 this.$poiKeyChangeSubject = new Subject(); } ngOnInit() { //监听搜索输入框值变化,500ms没变才执行搜索 this.$poiKeyChangeSubject.pipe(debounceTime(this.ncDelay), distinctUntilChanged((n, o) => { return n === o; })).subscribe((_value) => { if (_value) { this.searchPoiTips(); } else { this.clearPoi(); } }); } ngOnChanges(changes) { if (changes['ncMapType'] || changes['ncToken']) { this.checkParams(); } if (changes['ncMapType'] && !changes['ncMapType'].firstChange || changes['ncToken'] && !changes['ncToken'].firstChange) { if (this.poiKey) { this.searchPoiTips(); } } } checkParams() { if (!this.ncMapType) { this.parametersOk = false; console.error("ncMapType为空,可选值为:'baidu' | 'gaode' | 'tianditu' | 'tencent'"); } if (this.ncToken == '') { this.parametersOk = false; console.error('ncToken为空,请根据地图类型传入相应token'); } if (this.ncMapType && this.ncToken) { this.parametersOk = true; } } //win11微软输入法输入中文时会触发mouseleave //-----解决思路如下----: //1、通过document.activeElement.id判断input有焦点时searchBarLeave不执行searchBarShow=false //2、但是input焦点一直存在,searchBarLeave永远不执行searchBarShow=false //3、接着增加searchInputLeave,在鼠标离开input时取消input焦点,解决上步 //4、但是现在输入中文时,输入第一个字母又会触发searchInputLeave,关闭了焦点,执行了搜索(输入zai时变成了z爱) //5、接着增加poiInputing,keydown时poiInputing=true,第一个字母输入时不执行searchInputLeave里的取消焦点,解决上步, //6、但是poiInputing就一直为true了,searchInputLeave永远不执行取消input焦点了 //7、接着增加on-keyup时poiInputing=false,解决上步 searchBarLeave() { setTimeout(() => { if (document.activeElement && document.activeElement.id != 'searchInput') { this.searchBarShow = false; } }); } searchInputLeave() { if (this.poiInputing) { return; } setTimeout(() => { let searchInput = this.eleRef.nativeElement.querySelector('#searchInput'); if (searchInput) { searchInput.blur(); } }); } showSearch() { this.searchBarShow = true; setTimeout(() => { let searchInput = this.eleRef.nativeElement.querySelector('#searchInput'); if (searchInput) { searchInput.focus(); } }); } //输入框值变化 poiKeyChange() { this.$poiKeyChangeSubject.next(this.poiKey); } //poi搜索提示 searchPoiTips() { return __awaiter(this, void 0, void 0, function* () { if (this.ncMapType == 'gaode') { let url = `https://restapi.amap.com/v3/assistant/inputtips?key=${this.ncToken}&keywords=${this.poiKey}&city=${this.ncCity}`; this.http.get(url).subscribe((res) => { this.poiTipsListShow = true; if (res['status'] == 1) { this.poiTipsList = res['tips']; for (let l of this.poiTipsList) { if (l.location.length > 0) { let GCJ02 = l.location.split(','); l['locationWGS84'] = this.ls.gcj02towgs84(Number(GCJ02[0]), Number(GCJ02[1])); } else { l['locationWGS84'] = []; } } } else { this.poiTipsList = []; this.ncError.emit({ mapType: this.ncMapType, message: '搜索提示请求业务错误', response: res }); } }, (err) => { this.ncError.emit({ mapType: this.ncMapType, message: '搜索提示请求失败', error: err }); }); } else if (this.ncMapType == 'baidu') { let url = ''; if (this.ncCity == '') { url = `https://api.map.baidu.com/place/v2/suggestion?query=${this.poiKey}&region=全国&output=json&ak=${this.ncToken}`; } else { url = `https://api.map.baidu.com/place/v2/suggestion?query=${this.poiKey}&region=${this.ncCity}&output=json&ak=${this.ncToken}`; } this.ls.jsonpFunction({ url: url, success: (res) => { this.poiTipsListShow = true; if (res['status'] == 0) { this.poiTipsList = res['result']; for (let l of this.poiTipsList) { if (l.location.lat) { let GCJ02 = this.ls.bd09togcj02(Number(l.location.lng), Number(l.location.lat)); l['locationWGS84'] = this.ls.gcj02towgs84(Number(GCJ02[0]), Number(GCJ02[1])); } else { l['locationWGS84'] = []; } } } else { this.poiTipsList = []; this.ncError.emit({ mapType: this.ncMapType, message: '搜索提示请求业务错误', response: res }); } }, error: (err) => { this.ncError.emit({ mapType: this.ncMapType, message: '搜索提示请求失败', error: err }); } }); } else if (this.ncMapType == 'tianditu') { let url = ''; if (this.ncCity == '') { url = `http://api.tianditu.gov.cn/v2/search?postStr={"keyWord":"${this.poiKey}","level": 18,"mapBound": "-180,-90,180,90","queryType":7,"start":0,"count":10,"show":2}&type=query&tk=${this.ncToken}`; } else { url = `http://api.tianditu.gov.cn/v2/search?postStr={"keyWord":"${this.poiKey}","specify": ${this.ncCity},"level": 18,"mapBound": "-180,-90,180,90","queryType":7,"start":0,"count":10,"show":2}&type=query&tk=${this.ncToken}`; } this.http.get(url).subscribe((res) => { this.poiTipsListShow = true; if (res['status'].infocode == 1000) { this.poiTipsList = res['pois'] || []; for (let l of this.poiTipsList) { if (l.lonlat.length > 0) { let temp = l.lonlat.split(','); l['locationWGS84'] = [Number(temp[0]), Number(temp[1])]; } else { l['locationWGS84'] = []; } } } else { this.poiTipsList = []; this.ncError.emit({ mapType: this.ncMapType, message: '搜索提示请求业务错误', response: res }); } }, (err) => { this.ncError.emit({ mapType: this.ncMapType, message: '搜索提示请求失败', error: err }); }); } else if (this.ncMapType == 'tencent') { let url = `https://apis.map.qq.com/ws/place/v1/suggestion?region=${this.ncCity}&keyword=${this.poiKey}&key=${this.ncToken}&output=jsonp`; this.ls.jsonpFunction({ url: url, success: (res) => { this.poiTipsListShow = true; if (res['status'] == 0) { this.poiTipsList = res['data']; for (let l of this.poiTipsList) { if (l.location.lat) { l['locationWGS84'] = this.ls.gcj02towgs84(Number(l.location.lng), Number(l.location.lat)); } else { l['locationWGS84'] = []; } } } else { this.poiTipsList = []; this.ncError.emit({ mapType: this.ncMapType, message: '搜索提示请求业务错误', response: res }); } }, error: (err) => { this.ncError.emit({ mapType: this.ncMapType, message: '搜索提示请求失败', error: err }); } }); } }); } //poi提示点击 //若提示列表经纬度则直接使用 //若没有则使用提示名字调用详细接口,取返回结果第一条的经纬度 poiTipsClick(item) { this.searchBarShow = false; if (item.locationWGS84.length > 0) { this.ncClick.emit(item); } else { if (this.ncMapType == 'gaode') { let url = `https://restapi.amap.com/v3/place/text?key=${this.ncToken}&keywords=${item.name}&city=${this.ncCity}`; this.http.get(url).subscribe((res) => { if (res['status'] == 1) { if (res['pois'][0].location.length > 0) { let GCJ02 = res['pois'][0].location.split(','); item['locationWGS84'] = this.ls.gcj02towgs84(Number(GCJ02[0]), Number(GCJ02[1])); this.ncClick.emit(item); } else { this.ncClick.emit(item); } } else { this.ncClick.emit(item); this.ncError.emit({ mapType: this.ncMapType, message: '详细搜索请求业务错误', response: res }); } }, (err) => { this.ncClick.emit(item); this.ncError.emit({ mapType: this.ncMapType, message: '详细搜索请求失败', error: err }); }); } else if (this.ncMapType == 'baidu') { let url = ''; if (this.ncCity == '') { url = `https://api.map.baidu.com/place/v2/search?query=${item.name}&region=全国&output=json&ak=${this.ncToken}`; } else { url = `https://api.map.baidu.com/place/v2/search?query=${item.name}&region=${this.ncCity}&output=json&ak=${this.ncToken}`; } this.ls.jsonpFunction({ url: url, success: (res) => { if (res['status'] == 0) { if (res['results'][0].location.lat) { let GCJ02 = this.ls.bd09togcj02(Number(res['results'][0].location.lng), Number(res['results'][0].location.lat)); item['locationWGS84'] = this.ls.gcj02towgs84(Number(GCJ02[0]), Number(GCJ02[1])); this.ncClick.emit(item); } else { this.ncClick.emit(item); } } else { this.ncClick.emit(item); this.ncError.emit({ mapType: this.ncMapType, message: '详细搜索请求业务错误', response: res }); } }, error: (err) => { this.ncClick.emit(item); this.ncError.emit({ mapType: this.ncMapType, message: '详细搜索请求失败', error: err }); } }); } else if (this.ncMapType == 'tianditu') { this.ncClick.emit(item); } else if (this.ncMapType == 'tencent') { let boundary = ''; if (this.ncCity == '') { boundary = 'region(全国, 1)'; } else { boundary = `region(${this.ncCity}, 1)`; } let url = `https://apis.map.qq.com/ws/place/v1/search?boundary=${boundary}&keyword=${item.title}&key=${this.ncToken}&output=jsonp`; this.ls.jsonpFunction({ url: url, success: (res) => { if (res['status'] == 0) { if (res['data'][0].location.lat) { item['locationWGS84'] = this.ls.gcj02towgs84(Number(res['data'][0].location.lng), Number(res['data'][0].location.lat)); this.ncClick.emit(item); } else { this.ncClick.emit(item); } } else { this.ncClick.emit(item); this.ncError.emit({ mapType: this.ncMapType, message: '详细搜索请求业务错误', response: res }); } }, error: (err) => { this.ncClick.emit(item); this.ncError.emit({ mapType: this.ncMapType, message: '详细搜索请求失败', error: err }); } }); } } } //清除poi clearPoi() { this.poiKey = ''; this.poiTipsList = []; this.poiTipsListShow = false; this.ncClear.emit(); } } PoiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: PoiComponent, deps: [{ token: i0.ElementRef }, { token: i1.HttpClient }, { token: i2.LocalService }], target: i0.ɵɵFactoryTarget.Component }); PoiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: PoiComponent, selector: "nc-poi", inputs: { ncMapType: "ncMapType", ncToken: "ncToken", ncCity: "ncCity", ncPlaceholder: "ncPlaceholder", ncWidth: "ncWidth", ncShowType: "ncShowType", ncDelay: "ncDelay" }, outputs: { ncClick: "ncClick", ncClear: "ncClear", ncError: "ncError" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"parametersOk\">\r\n <div class=\"searchIcon\" *ngIf=\"!searchBarShow\">\r\n <span on-mouseenter=\"showSearch()\">\r\n <svg t=\"1725550918948\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n p-id=\"23934\" width=\"32\" height=\"32\">\r\n <path\r\n d=\"M405.2 746.9C217 746.9 63.9 593.8 63.9 405.6S217 64.2 405.2 64.2s341.3 153.1 341.3 341.3-153.1 341.4-341.3 341.4z m0-614.4c-150.6 0-273.1 122.5-273.1 273.1s122.5 273.1 273.1 273.1 273.1-122.5 273.1-273.1-122.5-273.1-273.1-273.1z\"\r\n p-id=\"23935\"></path>\r\n <path\r\n d=\"M911.3 959.2L576.2 624.1c-0.8-0.8-0.8-2.1 0-2.8l45.4-45.4c0.8-0.8 2.1-0.8 2.8 0L959.5 911c0.8 0.8 0.8 2.1 0 2.8l-45.4 45.4c-0.8 0.8-2 0.8-2.8 0z\"\r\n p-id=\"23936\"></path>\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"searchBar\" *ngIf=\"searchBarShow\" on-mouseleave=\"searchBarLeave()\" [ngStyle]=\"{'width': ncWidth}\">\r\n <input class=\"nc-input\" id=\"searchInput\" autocomplete=\"off\" type=\"text\" placeholder=\"{{ncPlaceholder}}\"\r\n [(ngModel)]=\"poiKey\" (ngModelChange)=\"poiKeyChange()\" on-mouseleave=\"searchInputLeave()\"\r\n on-keydown=\"poiInputing = true\" on-keyup=\"poiInputing = false\" />\r\n <div class=\"search-list\" *ngIf=\"poiTipsListShow\">\r\n <div class=\"no-data\" *ngIf=\"poiTipsList.length == 0\">\r\n <svg t=\"1725549253174\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\" p-id=\"14899\" width=\"64\" height=\"64\">\r\n <path\r\n d=\"M843.776 577.536L737.28 403.456c-2.048-4.096-6.144-6.144-10.24-6.144H284.672c-4.096 0-8.192 2.048-10.24 6.144l-106.496 174.08v215.04c0 6.144 4.096 10.24 10.24 10.24h657.408c6.144 0 10.24-4.096 10.24-10.24V581.632c-2.048 0-2.048-2.048-2.048-4.096z m-552.96-157.696h430.08l96.256 151.552H579.584c-6.144 0-10.24 4.096-10.24 10.24 0 34.816-28.672 63.488-63.488 63.488-34.816 0-63.488-28.672-63.488-63.488 0-6.144-4.096-10.24-10.24-10.24H194.56l96.256-151.552z m532.48 364.544h-634.88V593.92h233.472c6.144 40.96 40.96 75.776 83.968 75.776 43.008 0 79.872-32.768 83.968-75.776h233.472v190.464zM116.736 684.032v-12.288c0-2.048-2.048-6.144-6.144-6.144-2.048 0-6.144 2.048-6.144 6.144v12.288h-10.24c-2.048 0-6.144 2.048-6.144 6.144s2.048 6.144 6.144 6.144h12.288v12.288c0 2.048 2.048 6.144 6.144 6.144 2.048 0 6.144-2.048 6.144-6.144V696.32h12.288c2.048 0 6.144-2.048 6.144-6.144s-2.048-6.144-6.144-6.144h-14.336zM884.736 450.56h18.432c4.096 0 8.192 4.096 8.192 8.192s-4.096 8.192-8.192 8.192h-18.432v18.432c0 4.096-4.096 8.192-8.192 8.192s-8.192-4.096-8.192-8.192v-18.432h-18.432c-4.096 0-8.192-4.096-8.192-8.192s4.096-8.192 8.192-8.192h18.432v-18.432c0-4.096 4.096-8.192 8.192-8.192s8.192 4.096 8.192 8.192v18.432z m63.488 75.776h10.24c2.048 0 6.144 2.048 6.144 6.144s-2.048 6.144-6.144 6.144h-10.24v10.24c0 2.048-2.048 6.144-6.144 6.144-2.048 0-6.144-2.048-6.144-4.096v-10.24h-10.24c-2.048 0-6.144-2.048-6.144-6.144s2.048-6.144 6.144-6.144h10.24v-12.288c0-2.048 2.048-6.144 6.144-6.144 2.048 0 6.144 2.048 6.144 6.144v10.24zM131.072 436.224v-18.432c0-4.096-4.096-8.192-8.192-8.192s-8.192 4.096-8.192 8.192v16.384h-18.432c-4.096 0-8.192 4.096-8.192 8.192s4.096 8.192 8.192 8.192h16.384v20.48c0 4.096 4.096 8.192 8.192 8.192s8.192-4.096 8.192-8.192v-16.384h16.384c4.096 0 8.192-4.096 8.192-8.192s-4.096-8.192-8.192-8.192c4.096-2.048-14.336-2.048-14.336-2.048z m-77.824 174.08c-18.432 0-34.816-16.384-34.816-34.816 0-18.432 16.384-34.816 34.816-34.816 18.432 0 34.816 16.384 34.816 34.816 0 20.48-16.384 34.816-34.816 34.816z m0-16.384c10.24 0 16.384-8.192 16.384-16.384 0-10.24-8.192-16.384-16.384-16.384-10.24 0-16.384 8.192-16.384 16.384-2.048 8.192 6.144 16.384 16.384 16.384z m933.888-98.304c-8.192 0-16.384-6.144-16.384-16.384 0-8.192 6.144-16.384 16.384-16.384 8.192 0 16.384 6.144 16.384 16.384s-6.144 16.384-16.384 16.384z m0-6.144c4.096 0 8.192-4.096 8.192-8.192s-4.096-8.192-8.192-8.192-8.192 4.096-8.192 8.192 4.096 8.192 8.192 8.192zM288.768 241.664c6.144-6.144 14.336-6.144 20.48 0l51.2 51.2c6.144 6.144 6.144 14.336 0 20.48-6.144 6.144-14.336 6.144-20.48 0l-51.2-51.2c-6.144-6.144-6.144-14.336 0-20.48z m217.088-34.816c8.192 0 14.336 6.144 14.336 14.336v71.68c0 8.192-6.144 14.336-14.336 14.336-8.192 0-14.336-6.144-14.336-14.336v-71.68c0-6.144 6.144-14.336 14.336-14.336z m215.04 32.768c6.144 6.144 6.144 14.336 0 20.48L671.744 307.2c-6.144 6.144-14.336 6.144-20.48 0-6.144-6.144-6.144-14.336 0-20.48l49.152-49.152c6.144-4.096 16.384-4.096 20.48 2.048z m0 0\"\r\n p-id=\"14900\" fill=\"#bfbfbf\"></path>\r\n </svg>\r\n <div>\u6682\u65E0\u6570\u636E</div>\r\n </div>\r\n <ng-container *ngIf=\"poiTipsList.length > 0\">\r\n <!--\u7B80\u6613\u6A21\u5F0F-->\r\n <ng-container *ngIf=\"ncShowType == 'simple'\">\r\n <div class=\"list-row-1\" *ngFor=\"let l of poiTipsList;let i = index;\" (click)=\"poiTipsClick(l)\">\r\n <span class=\"tipsIcon\">\r\n <svg t=\"1725550918948\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\" p-id=\"23934\" width=\"32\" height=\"32\">\r\n <path\r\n d=\"M405.2 746.9C217 746.9 63.9 593.8 63.9 405.6S217 64.2 405.2 64.2s341.3 153.1 341.3 341.3-153.1 341.4-341.3 341.4z m0-614.4c-150.6 0-273.1 122.5-273.1 273.1s122.5 273.1 273.1 273.1 273.1-122.5 273.1-273.1-122.5-273.1-273.1-273.1z\"\r\n p-id=\"23935\"></path>\r\n <path\r\n d=\"M911.3 959.2L576.2 624.1c-0.8-0.8-0.8-2.1 0-2.8l45.4-45.4c0.8-0.8 2.1-0.8 2.8 0L959.5 911c0.8 0.8 0.8 2.1 0 2.8l-45.4 45.4c-0.8 0.8-2 0.8-2.8 0z\"\r\n p-id=\"23936\"></path>\r\n </svg>\r\n </span>\r\n <span>\r\n <ng-container *ngIf=\"ncMapType == 'gaode'\">{{l.name}}</ng-container>\r\n <ng-container *ngIf=\"ncMapType == 'baidu'\">{{l.name}}</ng-container>\r\n <ng-container *ngIf=\"ncMapType == 'tianditu'\">{{l.name}}</ng-container>\r\n <ng-container *ngIf=\"ncMapType == 'tencent'\">{{l.title}}</ng-container>\r\n </span>\r\n <span class=\"tipsDistrict\">\r\n <ng-container *ngIf=\"ncMapType == 'gaode'\">{{l.district}}</ng-container>\r\n <ng-container *ngIf=\"ncMapType == 'baidu'\">{{l.district}}</ng-container>\r\n <ng-container *ngIf=\"ncMapType == 'tianditu'\">{{l.county}}</ng-container>\r\n <ng-container *ngIf=\"ncMapType == 'tencent'\">{{l.district}}</ng-container>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!--\u8BE6\u7EC6\u6A21\u5F0F-->\r\n <ng-container *ngIf=\"ncShowType == 'detailed'\">\r\n <div class=\"list-row-2\" *ngFor=\"let l of poiTipsList;let i = index;\" (click)=\"poiTipsClick(l)\">\r\n <div class=\"name\">\r\n <ng-container *ngIf=\"ncMapType == 'gaode'\">{{i + 1}}\u3001{{l.name}}</ng-container>\r\n <ng-container *ngIf=\"ncMapType == 'baidu'\">{{i + 1}}\u3001{{l.name}}</ng-container>\r\n <ng-container *ngIf=\"ncMapType == 'tianditu'\">{{i + 1}}\u3001{{l.name}}</ng-container>\r\n <ng-container *ngIf=\"ncMapType == 'tencent'\">{{i + 1}}\u3001{{l.title}}</ng-container>\r\n </div>\r\n <div class=\"region\">\r\n <ng-container *ngIf=\"ncMapType == 'gaode'\">{{l.district}}</ng-container>\r\n <ng-container\r\n *ngIf=\"ncMapType == 'baidu'\">{{l.province}}{{l.city}}{{l.district}}</ng-container>\r\n <ng-container\r\n *ngIf=\"ncMapType == 'tianditu'\">{{l.province}}{{l.city}}{{l.county}}</ng-container>\r\n <ng-container\r\n *ngIf=\"ncMapType == 'tencent'\">{{l.province}}{{l.city}}{{l.district}}</ng-container>\r\n </div>\r\n <div class=\"address\">{{l.address}}</div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [".searchIcon{z-index:1001;position:relative;background-color:#1890ff;color:#fff;width:30px;height:30px;display:flex;align-items:center;justify-content:center;font-size:18px;border-radius:3px}.searchIcon svg{width:18px;height:18px;fill:#fff;display:flex}.searchBar{z-index:1001;position:relative}.searchBar .search-list{position:absolute;background-color:#fff;width:100%;max-height:380px;overflow:auto;box-shadow:0 2px 8px #e7e7e7}.searchBar .search-list .no-data{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 0;color:gray}.searchBar .search-list .list-row-1{padding:5px 10px;cursor:pointer}.searchBar .search-list .list-row-1:hover{background-color:#ececec}.searchBar .search-list .list-row-1 .tipsIcon{color:gray;margin-right:5px}.searchBar .search-list .list-row-1 .tipsIcon svg{width:14px;height:14px;fill:gray;position:relative;top:2px}.searchBar .search-list .list-row-1 .tipsDistrict{color:gray;margin-left:5px;font-size:13px}.searchBar .search-list .list-row-2{padding:5px 10px;cursor:pointer}.searchBar .search-list .list-row-2:hover{background-color:#ececec}.searchBar .search-list .list-row-2 .region,.searchBar .search-list .list-row-2 .address{color:gray;font-size:13px}.searchBar .search-list::-webkit-scrollbar{width:5px!important;height:5px!important}.searchBar .search-list::-webkit-scrollbar-thumb{border-radius:5px!important;background:#cccccc!important}.searchBar .search-list::-webkit-scrollbar-track{border-radius:0!important;background:#f1f1f1!important}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: PoiComponent, decorators: [{ type: Component, args: [{ selector: 'nc-poi', templateUrl: './poi.component.html', styleUrls: ['./poi.component.less'] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.HttpClient }, { type: i2.LocalService }]; }, propDecorators: { ncClick: [{ type: Output }], ncClear: [{ type: Output }], ncError: [{ type: Output }], ncMapType: [{ type: Input }], ncToken: [{ type: Input }], ncCity: [{ type: Input }], ncPlaceholder: [{ type: Input }], ncWidth: [{ type: Input }], ncShowType: [{ type: Input }], ncDelay: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvcG9pL3BvaS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3BvaS9wb2kuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBRXJILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFVcEUsTUFBTSxPQUFPLFlBQVk7SUFrQ3hCLFlBQW9CLE1BQWtCLEVBQVUsSUFBZ0IsRUFBVSxFQUFnQjtRQUF0RSxXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLE9BQUUsR0FBRixFQUFFLENBQWM7UUFqQzFGLFdBQVc7UUFDRCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxXQUFXO1FBQ0QsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsV0FBVztRQUNELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3ZDLFlBQVk7UUFDSCxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQzlCLFNBQVM7UUFDQSxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQzdCLHNGQUFzRjtRQUN0Rix5RUFBeUU7UUFDekUsa0VBQWtFO1FBQ2xFLHNGQUFzRjtRQUN0RixhQUFhO1FBQ0osa0JBQWEsR0FBVyxLQUFLLENBQUM7UUFDdkMsWUFBWTtRQUNILFlBQU8sR0FBVyxPQUFPLENBQUM7UUFDbkMsV0FBVztRQUNGLGVBQVUsR0FBZSxRQUFRLENBQUM7UUFDM0MsV0FBVztRQUNG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RUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYWxTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IHR5cGUgTmNNYXBUeXBlID0gJ2JhaWR1JyB8ICdnYW9kZScgfCAndGlhbmRpdHUnIHwgJ3RlbmNlbnQnO1xyXG5leHBvcnQgdHlwZSBOY1Nob3dUeXBlID0gJ3NpbXBsZScgfCAnZGV0YWlsZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICduYy1wb2knLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9wb2kuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3BvaS5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb2lDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblx0LyoqIOeCueWHu+S6i+S7tiAqL1xyXG5cdEBPdXRwdXQoKSBuY0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiDmuIXpmaTkuovku7YgKi9cclxuXHRAT3V0cHV0KCkgbmNDbGVhciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiog6ZSZ6K+v5LqL5Lu2ICovXHJcblx0QE91dHB1dCgpIG5jRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0LyoqIOWcsOWbvuexu+WeiyAqL1xyXG5cdEBJbnB1dCgpIG5jTWFwVHlwZSE6IE5jTWFwVHlwZTtcclxuXHQvKiogdG9rZW4gKi9cclxuXHRASW5wdXQoKSBuY1Rva2VuOiBzdHJpbmcgPSAnJztcclxuXHQvKiog5Z+O5biCICovXHJcblx0QElucHV0KCkgbmNDaXR5OiBzdHJpbmcgPSAnJztcclxuXHQvL+eZvuW6pu+8mmh0dHBzOi8vbWFwb3Blbi13ZWJzaXRlLXdpa2kuY2RuLmJjZWJvcy5jb20vc3RhdGljX3ppcC9CYWlkdU1hcF9jaXR5Q29kZV8xMTAyLnppcFxyXG5cdC8v6auY5b6377yaaHR0cHM6Ly9hLmFtYXAuY29tL2xicy9zdGF0aWMvY29kZV9yZXNvdXJjZS9BTWFwX2FkY29kZV9jaXR5Y29kZS56aXBcclxuXHQvL+WkqeWcsOWbvu+8mmh0dHBzOi8vZG93bmxvYWQudGlhbmRpdHUuZ292LmNuL2Rvd25sb2FkL3h6cWgvQWRtaW5Db2RlLmNzdlxyXG5cdC8v6IW+6K6v77yaaHR0cHM6Ly9sYnMucXEuY29tL3NlcnZpY2Uvd2ViU2VydmljZS93ZWJTZXJ2aWNlR3VpZGUvc2VhcmNoL3dlYlNlcnZpY2VEaXN0cmljdCM2XHJcblx0LyoqIOaQnOe0ouahhuWNoOS9jeespiAqL1xyXG5cdEBJbnB1dCgpIG5jUGxhY2Vob2xkZXI6IHN0cmluZyA9ICfmkJzlnLDngrknO1xyXG5cdC8qKiDmkJzntKLmoYblrr3luqYgKi9cclxuXHRASW5wdXQoKSBuY1dpZHRoOiBzdHJpbmcgPSAnMzAwcHgnO1xyXG5cdC8qKiDmmL7npLrnsbvlnosgKi9cclxuXHRASW5wdXQoKSBuY1Nob3dUeXBlOiBOY1Nob3dUeXBlID0gJ3NpbXBsZSc7XHJcblx0LyoqIOaQnOe0ouW7tui/nyAqL1xyXG5cdEBJbnB1dCgpIG5jRGVsYXk6IG51bWJlciA9IDUwMDtcclxuXHJcblx0cGFyYW1ldGVyc09rOiBib29sZWFuID0gZmFsc2U7Ly/lj4LmlbDmmK/lkKbovpPlhaXlrozmlbTvvIzkuI3lrozmlbTkuI3mmL7npLrnu4Tku7Zkb21cclxuXHRzZWFyY2hCYXJTaG93OiBib29sZWFuID0gZmFsc2U7Ly9wb2nmkJzntKLmnaHmmL7npLpcclxuXHRwb2lLZXk6IHN0cmluZyA9ICcnOy8vcG9p5pCc57Si5YWz6ZSu5a2XXHJcblx0cG9pSW5wdXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwb2lUaXBzTGlzdDogQXJyYXk8YW55PiA9IFtdOy8vcG9p5pCc57Si5o+Q56S657uT5p6cXHJcblx0cG9pVGlwc0xpc3RTaG93OiBib29sZWFuID0gZmFsc2U7Ly/mmK/lkKbmmL7npLpwb2nmj5DnpLrliJfooahcclxuXHQkcG9pS2V5Q2hhbmdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBlbGVSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBsczogTG9jYWxTZXJ2aWNlKSB7IH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHQvL+ebkeWQrOaQnOe0oui+k+WFpeahhuWAvOWPmOWMlu+8jDUwMG1z5rKh5Y+Y5omN5omn6KGM5pCc57SiXHJcblx0XHR0aGlzLiRwb2lLZXlDaGFuZ2VTdWJqZWN0LnBpcGUoXHJcblx0XHRcdGRlYm91bmNlVGltZSh0aGlzLm5jRGVsYXkpLFxyXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgobjogc3RyaW5nLCBvOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gbiA9PT0gbztcclxuXHRcdFx0fSlcclxuXHRcdCkuc3Vic2NyaWJlKChfdmFsdWU6IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAoX3ZhbHVlKSB7XHJcblx0XHRcdFx0dGhpcy5zZWFyY2hQb2lUaXBzKCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jbGVhclBvaSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuXHRcdGlmIChjaGFuZ2VzWyduY01hcFR5cGUnXSB8fCBjaGFuZ2VzWyduY1Rva2VuJ10pIHtcclxuXHRcdFx0dGhpcy5jaGVja1BhcmFtcygpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzWyduY01hcFR5cGUnXSAmJiAhY2hhbmdlc1snbmNNYXBUeXBlJ10uZmlyc3RDaGFuZ2VcclxuXHRcdFx0fHwgY2hhbmdlc1snbmNUb2tlbiddICYmICFjaGFuZ2VzWyduY1Rva2VuJ10uZmlyc3RDaGFuZ2UpIHtcclxuXHRcdFx0aWYgKHRoaXMucG9pS2V5KSB7XHJcblx0XHRcdFx0dGhpcy5zZWFyY2hQb2lUaXBzKClcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y2hlY2tQYXJhbXMoKSB7XHJcblx0XHRpZiAoIXRoaXMubmNNYXBUeXBlKSB7XHJcblx0XHRcdHRoaXMucGFyYW1ldGVyc09rID0gZmFsc2U7XHJcblx0X