| | |
| | | import { NzModalSubject } from 'ng-zorro-antd'; |
| | | import { ReactiveFormsModule } from '@angular/forms'; |
| | | import { ViewEncapsulation, Component, ViewChild, ElementRef, NgZone } from '@angular/core'; |
| | | 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'; |
| | |
| | | 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; |
| | | showZoom = 19; |
| | | isSaving = false; |
| | | markerOption: { |
| | | point: Point, |
| | |
| | | _BMap: any = null; |
| | | |
| | | 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 |
| | | centerAndZoom: { |
| | | lng: this.data.longitude, |
| | | lat: this.data.latitude, |
| | | zoom: this.showZoom |
| | | }, |
| | | enableKeyboard: true |
| | | }; |
| | |
| | | width: -15 |
| | | } |
| | | }; |
| | | } |
| | | } |
| | | private _marker: any = null; |
| | | loadMarker(marker) { |
| | | if (this._marker == null) { |
| | |
| | | this._map.addEventListener( |
| | | 'tilesloaded', |
| | | (type, fn) => { |
| | | this._map.clearOverlays(); |
| | | // this._map.clearOverlays(); |
| | | this._map.addOverlay(this._marker); |
| | | } |
| | | ); |
| | |
| | | && this.data.longitude === this.Default_LNG |
| | | && !!this.data.address |
| | | && !!this.data.address.trim()) { |
| | | this._localSearch.search(this.data.address); |
| | | 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 = { |