From 8ac3a87733b421c1f1cb3b691f946c05bdae02df Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Fri, 06 Jul 2018 13:54:14 +0800 Subject: [PATCH] 设备,监控点维护 完善 --- src/app/routes/map/coordinates-picker/coordinates-picker.component.ts | 140 ++++++++++++++++++++++++++++++++-------------- 1 files changed, 96 insertions(+), 44 deletions(-) diff --git a/src/app/routes/map/coordinates-picker/coordinates-picker.component.ts b/src/app/routes/map/coordinates-picker/coordinates-picker.component.ts index f7ba6b6..1a787bd 100644 --- a/src/app/routes/map/coordinates-picker/coordinates-picker.component.ts +++ b/src/app/routes/map/coordinates-picker/coordinates-picker.component.ts @@ -1,7 +1,7 @@ import { NzModalSubject } from 'ng-zorro-antd'; import { ReactiveFormsModule } from '@angular/forms'; -import { ViewEncapsulation,Component, ViewChild, ElementRef, NgZone } from '@angular/core'; -import { MapOptions,Point,MarkerOptions,ControlAnchor,NavigationControlOptions,NavigationControlType,BMapInstance } from 'angular2-baidu-map'; +import { ViewEncapsulation, Component, ViewChild, ElementRef, NgZone, OnInit } from '@angular/core'; +import { MapOptions, Point, MarkerOptions, ControlAnchor, NavigationControlOptions, NavigationControlType, BMapInstance } from 'angular2-baidu-map'; import { CoorPicker } from '@business/entity/data'; import { CoorPickerService } from 'app/routes/map/coordinates-picker/coordinates-picker.service'; @@ -13,47 +13,52 @@ templateUrl: './coordinates-picker.component.html', styleUrls: [ './coordinates-picker.component.css' ], }) -export class CoordinatesPickerComponent{ +export class CoordinatesPickerComponent implements OnInit { Default_LNG = 121; Default_LAT = 31.4; - markerOption:{ - point:Point, - options:MarkerOptions - }= { - point:null, - options:null + showZoom = 19; + isSaving = false; + markerOption: { + point: Point, + options: MarkerOptions + } = { + point: null, + options: null }; - data:CoorPicker; - navigationOpts:NavigationControlOptions; + data: CoorPicker; + navigationOpts: NavigationControlOptions; options: MapOptions; - _BMap:any = null; + _BMap: any = null; - constructor(private subject:NzModalSubject,private coorPickerService:CoorPickerService) { + constructor(private subject: NzModalSubject, private coorPickerService: CoorPickerService) { + + } + ngOnInit(): void { this.data = this.coorPickerService.data; let lng = this.data.longitude; - lng = lng ==0 || lng == null ? this.Default_LNG:lng; + lng = !lng ? this.Default_LNG : lng; this.data.longitude = lng; let lat = this.data.latitude; - lat = lat == 0||lat == null ? this.Default_LAT:lat; + lat = !lat ? this.Default_LAT : lat; this.data.latitude = lat; this.options = { - minZoom:3, - maxZoom:19, - cursor:'default', - centerAndZoom: { - lng:lng, - lat:lat, - zoom: 19 + minZoom: 3, + maxZoom: 19, + cursor: 'default', + centerAndZoom: { + lng: this.data.longitude, + lat: this.data.latitude, + zoom: this.showZoom }, enableKeyboard: true }; this.navigationOpts = { anchor: ControlAnchor.BMAP_ANCHOR_BOTTOM_RIGHT, type: NavigationControlType.BMAP_NAVIGATION_CONTROL_LARGE - } + }; this.markerOption.point = { - lng:lng, - lat:lat + lng: lng, + lat: lat }; this.markerOption.options = { icon: { @@ -63,15 +68,15 @@ width: 30 } }, - offset:{ - height:-30, - width:-15 + offset: { + height: -30, + width: -15 } }; - } - private _marker:any = null; - loadMarker(marker){ - if(this._marker==null){ + } + private _marker: any = null; + loadMarker(marker) { + if (this._marker == null) { this._marker = marker; } } @@ -83,24 +88,70 @@ this._map.addEventListener( 'tilesloaded', (type, fn) => { - this._map.clearOverlays(); + // this._map.clearOverlays(); this._map.addOverlay(this._marker); } ); - this._localSearch= new this._BMap.LocalSearch(map, { - renderOptions:{map: map} + this._localSearch = new this._BMap.LocalSearch(map, { + renderOptions: {map: map} }); - if(this.data.latitude==this.Default_LAT&&this.data.longitude==this.Default_LNG - &&this.data.address!=null){ - this._localSearch.search(this.data.address); + if (this.data.latitude === this.Default_LAT + && this.data.longitude === this.Default_LNG + && !!this.data.address + && !!this.data.address.trim()) { + this.mapSearch(this.data.address); } - } - queryTest:string; - mapSearch(param:any){ - let text = this.queryTest; - text = text == null || text.trim() ==''?'���������':text; - this._localSearch.search(text); + city: string; + // queryText: string; + mapSearch(queryText: string, isSearch?: boolean) { + + if (!!queryText && !!queryText.trim()) { + this.city = !!this.city ? this.city : '���������'; + const end = queryText.indexOf('���') + 1; + if (end > 0) { + let start = queryText.indexOf('���') + 1; + start = start > 0 ? start : queryText.indexOf('���') + 1; + start = start > end ? 0 : start; + if (start < end) { + this.city = queryText.slice(start, end).trim(); + if (!!this.city) { + this._map.setCurrentCity(this.city); + } + } + } + console.log(this.city); + const myGeo = new this._BMap.Geocoder(); + const that = this; + that._map.setCurrentCity(that.city); + myGeo.getPoint(queryText, function(point){ + let getPoint = false; + if (point) { + that.data.latitude = point.lat; + that.data.longitude = point.lng; + getPoint = true; + }else { + console.log('������������������������������������!'); + } + that.markerOption.point = { + lng: that.data.longitude, + lat: that.data.latitude + }; + that.options.centerAndZoom = { + lng: that.data.longitude, + lat: that.data.latitude, + zoom: that.showZoom + }; + // setTimeout(() => { + if (getPoint && !isSearch) { + that._map.centerAndZoom(point, that.showZoom); + + } else { + that._localSearch.search(queryText); + } + // }, 3000); + }, that.city); + } } clickMap(e: any) { this.markerOption.point = { @@ -114,6 +165,7 @@ this.subject.destroy(); } save() { + this.isSaving = true; this.subject.next(); this.subject.destroy(); } -- Gitblit v1.8.0