import { Ffilter } from './../../../../../core/interfaces/utils/forms/filters'; import { AfterViewInit, Component, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core'; import { MapInfoWindow, MapMarker, GoogleMap } from '@angular/google-maps' import { Site } from 'src/app/core/interfaces/site/site'; import { } from 'googlemaps' import { SITES } from '../../../../../core/mocks/data'; @Component({ selector: 'app-map', templateUrl: './map.component.html', styleUrls: ['./map.component.scss'], encapsulation: ViewEncapsulation.None, }) export class MapComponent implements OnInit, AfterViewInit { @ViewChild('mapa', { static: false }) map!: GoogleMap; @ViewChild(MapInfoWindow, { static: false }) info_window!: MapInfoWindow; sites: Site[] = SITES; @Input() form!: Ffilter; mapa?: any; zoom = 17; position!: google.maps.LatLngLiteral markers: any[] = []; info_window_content: Site = { name: "", id: 0, address: { latitude: 1234, length: 123 } }; options: google.maps.MapOptions = { zoomControl: true, scrollwheel: false, disableDoubleClickZoom: true, maxZoom: 17, minZoom: 8, noClear: false, styles: [ { "featureType": "poi", "elementType": "labels.text", "stylers": [ { "visibility": "off" } ] }, { "featureType": "poi.business", "stylers": [ { "visibility": "off" } ] }, { "featureType": "road", "elementType": "labels.icon", "stylers": [ { "visibility": "off" } ] }, { "featureType": "transit", "stylers": [ { "visibility": "off" } ] } ], } constructor() { } ngOnInit(): void { this.position = { lat: this.form.lat, lng: this.form.lng }; this.createMarkers(); } ngAfterViewInit() { console.log(this.map) } createMarkers() { const image = { url: "../../../../../../assets/markers/redmarker.png", size: new google.maps.Size(36, 36), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(0, 29), }; this.sites.forEach((site: Site) => { this.markers.push({ position: { lat: site.address!.latitude, lng: site.address!.length }, title: site.name, info: { ...site }, icon: image }) }) } openInfoWindow(marker: MapMarker, info_site: any) { this.info_window_content = info_site this.info_window.open(marker); } closeInfoWindow(){ this.info_window.close() } mapIsDragged() { this.form.lat = this.map.googleMap?.getCenter().lat() || 0 this.form.lng = this.map.googleMap?.getCenter().lat() || 0 this.form.zoom = parseInt(this.map.googleMap?.getZoom().toPrecision() || '17') || 17 console.log(this.form) } }