首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Google Maps API集成到Angular 2组件中

如何将Google Maps API集成到Angular 2组件中
EN

Stack Overflow用户
提问于 2016-05-19 22:39:34
回答 3查看 41.9K关注 0票数 20

我有一个Angular 2组件,它在文件comp.ts中以如下方式定义:

代码语言:javascript
复制
import {Component} from 'angular2/core';

@component({
    selector:'my-comp',
    templateUrl:'comp.html'
})

export class MyComp{
    constructor(){
    }
}

因为我想让组件显示一个google地图,所以我在文件comp.html中插入了以下代码:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<script src="http://maps.googleapis.com/maps/api/js"></script>
<script>
function initialize() {
  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("googleMap"),mapProp);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>

<body>
<div id="googleMap" style="width:500px;height:380px;"></div>
</body>

</html> 

此代码是从此链接http://www.w3schools.com/googleAPI/google_maps_basic.asp复制的。问题是组件没有显示地图。我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-20 20:44:37

我找到了一个解决方案。首先,下面这行代码:

代码语言:javascript
复制
<script src="http://maps.googleapis.com/maps/api/js?key=[YOUR_API_KEY]"></script>

必须插入到index.html文件中。创建地图的代码必须插入到comp.ts文件中。特别是,它必须插入到一个特殊的方法中,即"ngOnInit",该方法可以定位在类的构造函数之后。这是comp.ts:

代码语言:javascript
复制
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);
    }
}

最后,必须将id为"googleMap“的div插入到comp.html文件中,该文件将包含google地图,如下所示:

代码语言:javascript
复制
<body>
    <div id="googleMap" style="width:500px;height:380px;"></div>
</body>
票数 18
EN

Stack Overflow用户

发布于 2016-08-07 17:33:58

是啊,你可以这么做。但是在typescript编译器中会有一个错误,所以不要忘记隐式声明google变量。

代码语言:javascript
复制
declare var google: any;

紧跟在组件导入之后添加此指令。

代码语言:javascript
复制
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);
  }
}
票数 23
EN

Stack Overflow用户

发布于 2016-11-18 09:35:33

使用angular2-google-map:https://angular-maps.com/

代码语言:javascript
复制
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 {}
票数 -5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37326572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档