Open In App

Angular PrimeNG GMap Events

Angular PrimeNG is an open-source framework with a rich set of native Angular UI components that are used for great styling and this framework is used to make responsive websites with very much ease. It provides a lot of templates, components, theme design, an extensive icon library, and much more. In this article, we will see the Angular PrimeNG GMap Events.

The GMap is a google map component that is used to display a map on the webpage. We can perform zoom-in and out functions by default in the GMap component. PrimeNG also provides extra features so that we can add markers, and change the location by changing latitude and longitude and other features. The GMap Events trigger the callback functions when we interact with the component.



Angular PrimeNG GMap Events:

Syntax:



<p-gmap [options]="options" 
        [overlays]="overlays"
        (onOverlayClick)="overlayClicked($event)">
</p-gmap>

Creating Angular application & Module Installation:

ng new geeks_angular
cd geeks_angular
npm install primeng --save
npm install primeicons --save

Project Structure: The project structure will look like the following:

 

index.html:




<!DOCTYPE html>
<html lang="en">
  
<head>
    <meta charset="utf-8" />
    <title>Demo</title>
    <base href="/" />
  
    <meta name="viewport" 
          content="width=device-width, 
                         initial-scale=1" />
    <link rel="stylesheet" 
          type="text/css" 
          href=
"/node_modules/primeicons/primeicons.css" />
    <script async src=
    </script>
    <link rel="icon" 
          type="image/x-icon" 
          href="favicon.ico" />
</head>
  
<body>
  <app-root></app-root>
</body>
  
</html>

ng serve --open

Example 1: In the following example, a toast appears when the user zooms in or out the map.




<h1 style="color: green;
           text-align:center;">
  GeeksforGeeks
</h1>
<h3>Angular PrimeNG GMap Events</h3>
<p-toast></p-toast>
<p-gmap [options]="options"
          [overlays]="overlays"
          (onZoomChanged)="zoomChanged($event)"
          [style]="{ width: '100%', height: '500px' }">
</p-gmap>




import { Component } from '@angular/core';
import { MessageService } from 'primeng/api';
  
declare var google: any;
@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
})
export class AppComponent {
    constructor(private messageService: MessageService) { }
    options: any;
  
    overlays: any[];
    ngOnInit() {
        this.options = {
            center: { lat: 22.72105, lng: 88.373459 },
            zoom: 6,
        };
  
        this.overlays = [
            new google.maps.Marker({
                position: { lat: 22.5726, lng: 88.3639 },
                title: 'Kolkata',
            }),
            new google.maps.Marker({
                position: { lat: 28.7041, lng: 77.1025 },
                title: 'New Delhi',
            }),
            new google.maps.Marker({
                position: { lat: 19.076, lng: 72.8777 },
                title: 'Mumbai',
            }),
            new google.maps.Marker({
                position: { lat: 13.0827, lng: 80.2707 },
                title: 'Chennai',
            }),
        ];
    }
    zoomChanged(event) {
        this.messageService.add({
            summary: 'User zoomed',
            closable: true,
            severity: 'success',
            detail: 'Welcome to GeeksforGeeks',
        });
    }
}




import { NgModule } from '@angular/core';
import { BrowserModule } 
    from '@angular/platform-browser';
import { BrowserAnimationsModule } 
    from '@angular/platform-browser/animations';
import { HttpClientModule } 
    from '@angular/common/http';
import { AppComponent } from './app.component';
import { ButtonModule } from 'primeng/button';
import { MessageService } from 'primeng/api';
import { GMapModule } from 'primeng/gmap';
import { ToastModule } from 'primeng/toast';
  
@NgModule({
    imports: [
        BrowserModule,
        BrowserAnimationsModule,
        ButtonModule,
        HttpClientModule,
        GMapModule,
        ToastModule,
    ],
    declarations: [AppComponent],
    bootstrap: [AppComponent],
    providers: [MessageService],
})
export class AppModule { }

Output:

 

Example 2: In the following example, when an overlay is clicked, the toast is shown.




<h1 style="color: green; 
           text-align:center;">
  GeeksforGeeks
</h1>
<h3>Angular PrimeNG GMap Events</h3>
<p-toast></p-toast>
<p-gmap [options]="options"
          [overlays]="overlays"
          (onOverlayClick)="overlayClicked($event)"
          [style]="{ width: '100%', height: '500px' }">
</p-gmap>




import { Component } from '@angular/core';
import { MessageService } from 'primeng/api';
  
declare var google: any;
@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
})
export class AppComponent {
    constructor(private messageService: MessageService) { }
    options: any;
  
    overlays: any[];
    ngOnInit() {
        this.options = {
            center: { lat: 22.72105, lng: 88.373459 },
            zoom: 6,
        };
  
        this.overlays = [
            new google.maps.Marker({
                position: { lat: 22.5726, lng: 88.3639 },
                title: 'Kolkata',
            }),
            new google.maps.Marker({
                position: { lat: 28.7041, lng: 77.1025 },
                title: 'New Delhi',
            }),
            new google.maps.Marker({
                position: { lat: 19.076, lng: 72.8777 },
                title: 'Mumbai',
            }),
            new google.maps.Marker({
                position: { lat: 13.0827, lng: 80.2707 },
                title: 'Chennai',
            }),
        ];
    }
    overlayClicked(event) {
        this.messageService.add({
            summary: 'Overlay title: ' + event.overlay.title,
            closable: true,
            severity: 'success',
            detail: 'Coordinates: ' + event.overlay.position,
        });
    }
}




import { NgModule } from '@angular/core';
import { BrowserModule } 
    from '@angular/platform-browser';
import { BrowserAnimationsModule } 
    from '@angular/platform-browser/animations';
import { HttpClientModule } 
    from '@angular/common/http';
import { AppComponent } from './app.component';
import { ButtonModule } from 'primeng/button';
import { MessageService } from 'primeng/api';
import { GMapModule } from 'primeng/gmap';
import { ToastModule } from 'primeng/toast';
  
@NgModule({
    imports: [
        BrowserModule,
        BrowserAnimationsModule,
        ButtonModule,
        HttpClientModule,
        GMapModule,
        ToastModule,
    ],
    declarations: [AppComponent],
    bootstrap: [AppComponent],
    providers: [MessageService],
})
export class AppModule { }

Output:

 

Reference: http://primefaces.org/primeng/gmap


Article Tags :