import { Component, Input, OnInit, Output, EventEmitter, OnDestroy, ViewChild } from '@angular/core';
import { _HttpClient } from '@delon/theme';
import { load } from '@amap/amap-jsapi-loader';
import { BaseService } from 'src/app/shared/services';
import { throwError } from 'rxjs';
import AMapLoader from '@amap/amap-jsapi-loader';
declare var AMap: any;
declare var AMapUI: any;
@Component({
  selector: 'app-gaode-map',
  styleUrls: ['./gaode-map.component.less'],
  templateUrl: './gaode-map.component.html'
})
export class GaodeMapComponent implements OnInit, OnDestroy {
  @ViewChild('modal')
  modal: any;
  addressInput: any;

  aMap: any;
  constructor(private service: BaseService) {}
  ngOnInit(): void {
    this.mapInit();
    // this.PoiPicker();
  }

  ngOnDestroy(): void {
    if (this.aMap) {
      this.aMap.destroy();
    }
  }

  mapInit() {
    console.log(AMapLoader);

    AMapLoader.load({
      // 首次调用 load
      key: '63f9573ca55fef2b92d4ffe0c85dea8f', // 申请好的Web端开发者Key，首次调用 load 时必填
      version: '2.0', // 指定要加载的 JSAPI 的版本，缺省时默认为 1.4.15
      plugins: [
        // 需要使用的的插件列表，如比例尺'AMap.Scale'等
        'AMap.SimpleMarker',
        'AMap.PoiPicker',
        'AMap.Scale',
        'AMap.Marker',
        'AMap.InfoWindow',
        'AMap.ToolBar',
        'AMap.MapType',
        'AMap.Driving',
        'AMap.Geolocation'
      ],
      AMapUI: {
        // 是否加载 AMapUI，缺省不加载
        version: '1.1', // AMapUI 缺省 1.1
        plugins: ['overlay/SimpleMarker', 'misc/PoiPicker'] // 需要加载的 AMapUI ui插件
      },
      Loca: {
        // 是否加载 Loca， 缺省不加载
        version: '2.0' // Loca 版本，缺省 1.3.2
      }
    })
      .then(AMap => {
        console.log(AMap);

        var poiPicker = new AMapUI.PoiPicker({
          //city:'北京',
          input: 'pickerInput'
        });

        console.log(poiPicker);

        this.aMap = new AMap.Map('container', {
          resizeEnable: true,
          zoom: 16
        });
        console.log(this.aMap);

        this.aMap.on('complete', () => {
          this.service.msgSrv.info('地图加载完成 !');
          this.poiPickerReady(poiPicker);
          // new AMapUI.SimpleMarker({
          //   //前景文字
          //   iconLabel: 'A',
          //   //图标主题
          //   iconTheme: 'default',
          //   //背景图标样式
          //   iconStyle: 'red',
          //   map: this.aMap,
          //   position: this.aMap.getCenter()
          // });
        });
      })
      .catch(e => {
        throwError(e);
      });
  }

  poiPickerReady(poiPicker: any) {
    (window as any).poiPicker = poiPicker;
    const map = this.aMap;
    const _this = this;
    var marker = new AMapUI.SimpleMarker();
    console.log(marker);

    var infoWindow = new AMap.InfoWindow({
      offset: new AMap.Pixel(0, -20)
    });
    console.log(infoWindow);

    //选取了某个POI
    poiPicker.on('poiPicked', function (poiResult: any) {
      var source = poiResult.source,
        poi = poiResult.item,
        info = {
          source: source,
          id: poi.id,
          name: poi.name,
          location: poi.location.toString(),
          address: poi.address
        };
      console.log(poi);

      marker.setMap(map);
      infoWindow.setMap(map);

      marker.setPosition(poi.location);
      infoWindow.setPosition(poi.location);

      infoWindow.setContent('地址: <pre>' + poi.name + '</pre>');
      infoWindow.open(map, marker.getPosition());

      map.setCenter(marker.getPosition());
    });

    poiPicker.onCityReady(function () {
      poiPicker.suggest('美食');
    });
  }

  createInfoWindow(title: any, content: any) {
    var info = document.createElement('div');
    info.className = 'custom-info input-card content-window-card';

    //可以通过下面的方式修改自定义窗体的宽高
    //info.style.width = "400px";
    // 定义顶部标题
    var top = document.createElement('div');
    var titleD = document.createElement('div');
    var closeX = document.createElement('img');
    top.className = 'info-top';
    titleD.innerHTML = title;
    closeX.src = 'https://webapi.amap.com/images/close2.gif';
    closeX.onclick = this.closeInfoWindow;

    top.appendChild(titleD);
    top.appendChild(closeX);
    info.appendChild(top);

    // 定义中部内容
    var middle = document.createElement('div');
    middle.className = 'info-middle';
    middle.style.backgroundColor = 'white';
    middle.innerHTML = content;
    info.appendChild(middle);

    // 定义底部内容
    var bottom = document.createElement('div');
    bottom.className = 'info-bottom';
    bottom.style.position = 'relative';
    bottom.style.top = '0px';
    bottom.style.margin = '0 auto';
    var sharp = document.createElement('img');
    sharp.src = 'https://webapi.amap.com/images/sharp.png';
    bottom.appendChild(sharp);
    info.appendChild(bottom);
    return info;
  }

  closeInfoWindow() {
    this.aMap.clearInfoWindow();
  }
}
