import { Component, OnInit, ViewEncapsulation, AfterViewInit, ViewChild, ElementRef, NgZone, OnDestroy } from '@angular/core'; import { AbmComponent } from 'angular-baidu-maps'; declare const BMap: any; declare const BMAP_SATELLITE_MAP: any; @Component({ selector: 'app-maps-baidu', templateUrl: './baidu.component.html' }) export class MapsBaiduComponent implements OnDestroy { options: any = {}; status = ''; @ViewChild('map') mapComp: AbmComponent; satelliteOptions: any; private mapSatellite: any; constructor(private el: ElementRef, private zone: NgZone) { } private _map: any; onReady(map: any) { this._map = map; map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); map.addControl(new BMap.MapTypeControl()); map.setCurrentCity('北京'); map.enableScrollWheelZoom(true); this.status = '加载完成'; // 添加监听事件 map.addEventListener('tilesloaded', () => { this.status = '地图加载完毕'; }); map.addEventListener('click', this._click.bind(this)); } _click(e: any) { this.status = `${e.point.lng}, ${e.point.lat}, ${+new Date}`; } panTo() { this._map.panTo(new BMap.Point(116.404, 39.715)); } zoom() { this._map.setZoom((this._map.getZoom() + 1) % 17); } infoWindow() { const infoWin = new BMap.InfoWindow('地址:北京市东城区王府井大街88号乐天银泰百货八层', { width: 200, // 信息窗口宽度 height: 100, // 信息窗口高度 title: '海底捞王府井店', // 信息窗口标题 enableMessage: true, // 设置允许信息窗发送短息 message: '亲耐滴,晚上一起吃个饭吧?戳下面的链接看下地址喔~' }); this._map.openInfoWindow(infoWin, this._map.getCenter()); } // 卫星 onReadySatellite(map: any) { map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); map.setMapType(BMAP_SATELLITE_MAP); this.mapSatellite = map; } ngOnDestroy(): void { this._map.removeEventListener('click', this._click.bind(this)); } }