【发布时间】:2017-03-01 19:05:08
【问题描述】:
您好,我正在尝试在谷歌地图中启用绘图工具。但出现如下错误:
VM1935 zone.js@0.6.25?main=browser:140 Uncaught TypeError: Cannot read property 'DrawingManager' of undefined
import { Component } from '@angular/core';
import { Validators, FormGroup, FormArray, FormBuilder } from '@angular/forms';
import { Ng2MapComponent } from 'ng2-map';
Ng2MapComponent['apiUrl'] =
'https://maps.google.com/maps/api/js?libraries=visualization,places';
@Component({
selector: 'my-app',
template: `
<ng2-map zoom="14" center="Brampton, Canada">
<marker *ngFor="let pos of positions"
(click)="showInfoWindow($event)"
[position]="pos"></marker>
<info-window id="iw">
lat: [[lat]], lng: [[lng]]
</info-window>
<drawing-manager
[drawingMode]="'marker'"
[drawingControl]="true"
[drawingControlOptions]="{
position: 2,
drawingModes: ['marker', 'circle', 'polygon', 'polyline', 'rectangle']
}"
[circleOptions]="{
fillColor: '#ffff00',
fillOpacity: 1,
strokeWeight: 5,
editable: true,
zIndex: 1
}"></drawing-manager>
</ng2-map>
<button (click)="showRandomMarkers()">Show Random Markers</button>
`
})
export class AppComponent {
positions = [];
showRandomMarkers() {
let randomLat: number, randomLng: number;
this.positions = [];
for (let i = 0 ; i < 9; i++) {
randomLat = Math.random() * 0.0099 + 43.7250;
randomLng = Math.random() * 0.0099 + -79.7699;
this.positions.push([randomLat, randomLng]);
}
}
showInfoWindow(marker) {
marker.ng2MapComponent.openInfoWindow(
'iw', // id of InfoWindow
marker, // anchor for InfoWindow
{ // local variables for InfoWindow
lat: marker.getPosition().lat(),
lng: marker.getPosition().lng(),
}
);
}
}
模块文件:
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { Ng2MapModule } from 'ng2-map';
@NgModule({
imports: [
RouterModule.forChild(AlertsRoutes),
Ng2MapModule.forRoot({apiUrl: 'https://maps.google.com/maps/api/js?key=mykey'})
]
})
export class TestModule { }
还有如何启用绘图管理器?
【问题讨论】:
-
从 ng2-map 的文档中,您似乎需要执行标准的 @NgModule({imports:Ng2MapModule.forRoot()}) 事情并将其传递给 apiUrl。您能否展示您的模块文件,以便我准备完整的回复?
-
明确一点,您不是以编程方式使用 DrawingManager 吗?您只是在模板中使用它,但无论如何您都会从 ng2-map 代码本身得到这个错误。我的理解正确吗?
标签: javascript google-maps angular