How can I integrate Google Maps APIs inside an Angular 2 component

前端 未结 3 1196
囚心锁ツ
囚心锁ツ 2020-12-07 23:38

I have an Angular 2 component that is defined in the file comp.ts in this way like this:

import {Component} from \'angular2/core\';

@component({
    selecto         


        
相关标签:
3条回答
  • 2020-12-07 23:51

    I have found a solution. First of all, the following line:

    <script src="http://maps.googleapis.com/maps/api/js?key=[YOUR_API_KEY]"></script>
    

    must be inserted in the index.html file. The code which creates the map must be inserted in the comp.ts file. In particular, it must be inserted in a special method, namely "ngOnInit", which can be positioned after the constructor of the class. This is comp.ts:

    import { Component } from 'angular2/core';
    
    declare const google: any;
    
    @Component({
        selector: 'my-app',
        templateUrl:'appHtml/app.html',
        styleUrls: ['css/app.css']
    })
    
    export class AppMainComponent {
        constructor() {}
        ngOnInit() {
            let mapProp = {
                center: new google.maps.LatLng(51.508742, -0.120850),
                zoom: 5,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            let map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
        }
    }
    

    Finally, the div with id "googleMap", which is going to contain the google map, must be inserted in the comp.html file, which will look like this:

    <body>
        <div id="googleMap" style="width:500px;height:380px;"></div>
    </body>
    
    0 讨论(0)
  • 2020-12-07 23:59

    Yeah, you could do so. But there would be an error in typescript compiler, so don't forget to implicitly declare google variable.

    declare var google: any;
    

    add this directive right after component import.

    import { Component, OnInit } from '@angular/core';
    declare var google: any;
    
    @Component({
      moduleId: module.id,
      selector: 'app-root',
      templateUrl: 'app.component.html',
      styleUrls: ['app.component.css']
    })
    export class AppComponent implements OnInit {
      ngOnInit() {
        var mapProp = {
                center: new google.maps.LatLng(51.508742, -0.120850),
                zoom: 5,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
          var map = new google.maps.Map(document.getElementById("gmap"), mapProp);
      }
    }
    
    0 讨论(0)
  • 2020-12-08 00:00

    Use angular2-google-maps: https://angular-maps.com/

    import { BrowserModule } from '@angular/platform-browser';
    import { NgModule, ApplicationRef } from '@angular/core';
    
    import { AgmCoreModule } from 'angular2-google-maps/core';
    
    @Component({
      selector: 'app-root',
        styles: [`
            .sebm-google-map-container {
                height: 300px;
            }
        `],
      template: `
            <sebm-google-map [latitude]="lat" [longitude]="lng"></sebm-google-map>
        `
    })
    export class AppComponent {
      lat: number = 51.678418;
      lng: number = 7.809007;
    }
    
    @NgModule({
      imports: [
        BrowserModule,
        AgmCoreModule.forRoot({
          apiKey: 'YOUR_GOOGLE_MAPS_API_KEY'
        })
      ],
      declarations: [ AppComponent ],
      bootstrap: [ AppComponent ]
    })
    export class AppModule {}
    
    0 讨论(0)
提交回复
热议问题