【发布时间】:2019-05-25 12:00:42
【问题描述】:
我正在尝试通过单击使用 Angular 的按钮来更改 Google 地图绘图管理器的几个选项。但我收到错误消息说 DrawingManager 变量未定义。
我在 Angular 组件的 ngAfterViewInit 函数中初始化了 Google Maps 和 DrawingManager。 Google Map 对象和 Drawing Manager 对象被分配给组件中的变量,如代码所示。我想通过单击组件中的按钮来更改绘图管理器的几个选项。通过单击按钮调用“drawControlEnable”函数。但是 DrawingManager 对象在“drawControlEnable”函数中是未定义的。我已将 Google 地图脚本放入 index.html 和组件的代码中。
索引.html
<script async defer src="https://maps.googleapis.com/maps/api/js?key=XXXXX&libraries=drawing,geometry"></script>
角度组件
import {Component, OnInit, ViewChild, AfterViewInit} from '@angular/core';
import { } from '@types/googlemaps';
.....
.....
@ViewChild('gmap') gmapElement: any;
map: google.maps.Map;
shapes = [];
coordinatesArray = [];
drawingManager: any;
ngAfterViewInit() {
var mapProp = {
center: new google.maps.LatLng(7.515073, 80.723066),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
this.map = new google.maps.Map(this.gmapElement.nativeElement, mapProp);
this.drawingManager = new google.maps.drawing.DrawingManager({
drawingMode: null,
drawingControl: false,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: ['polygon']
},
markerOptions: {icon: 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png'},
polygonOptions: {
editable: true,
draggable: true
}
});
this.drawingManager.setMap(this.map);
}
.....
.....
drawControlEnable() {
this.drawingManager.setDrawingMode(google.maps.drawing.OverlayType.MARKER);
this.drawingManager.setOptions({drawingControl : true});
}
如何通过单击按钮更改 DrawingManager 选项?
【问题讨论】:
标签: javascript angular google-maps