Newer
Older
googleMap / src / app / services / googlemap.service.ts
Luis Olaya on 1 Jul 2020 2 KB calle carrera
import { Injectable } from "@angular/core";
import { Geolocation } from "@ionic-native/geolocation/ngx";
import { HttpClient } from "@angular/common/http";
import { AlertController } from "@ionic/angular";

@Injectable({
  providedIn: "root",
})
export class GooglemapService {
  public data: any = {};
  TU_LLAVE = "AIzaSyAw_VEeJAY7R9kuABvgz9e9CiKogTW3MFc"; //wtredata
  //TU_LLAVE = "AIzaSyBrY7wrURAlHMM_h__9cCRodYALQg1kuzI"; //mauricio

  constructor(
    private geolocation: Geolocation,
    private http: HttpClient,
    private alertController: AlertController
  ) { }



  async loadMap(direccion: any) {
    console.log("serviceeeeee")
    const myLatLng: any = await this.getLocation();
    this.data.latitud = myLatLng.lat;
    this.data.longitud = myLatLng.lng;

    let data = await this.direccion(direccion);
    return data;
  }

  private async getLocation() {
    const rta = await this.geolocation.getCurrentPosition();
    return {
      lat: rta.coords.latitude,
      lng: rta.coords.longitude,
    };
  }

  private async verificationLocation() { }

  /// Permite obtener la direccion y el barrio a partir de las coordenadas
  private direccion(direccion: any) {
    console.log(direccion)
    return new Promise((resolve, reject) => {
      const lat = this.data.latitud;
      const long = this.data.longitud;

      let idCiudad = direccion.ciudad;
      let ciudad = ""
      let dir = "";
      let abrebiatura = "";
      let numero = direccion.numero;
      let casa = direccion.casa;
      if (idCiudad != "") {
        ciudad = direccion.departamento[idCiudad].nombre
        abrebiatura = direccion.departamento[idCiudad].abreviatura
        dir = direccion.direccion;
        console.log(ciudad + " " + abrebiatura)
      }

      this.http
        .get<{ status: string; results: any[] }>(
          `https://maps.googleapis.com/maps/api/geocode/json?address=` + dir + `+` + numero + `+` + casa + `+` + ciudad + `,
          +`+ abrebiatura + `,+CO&key=${this.TU_LLAVE}`,
          { responseType: 'json' }
        )
        .subscribe((e) => {
          if (e.status === 'OK') {
            // console.log(e.results[0].geometry.location)
            // this.data.direccion = e.results[0].formatted_address;
            //lat = e.results[0].geometry.location.lat
            const lat = e.results[0].geometry.location.lat
            const long = e.results[0].geometry.location.lng
            // this.data.barrio = e.results[0].address_components[2].long_name;
            resolve({
              dir: e.results[0].formatted_address,
              lat,
              lng: long,
            });
          } else {
            resolve({
              dir: '',
              lat: null,
              lng: null,
            });
          }
        });
    });
  }
}