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