如何在 Angular 项目中设置 mapboxgl.accessToken?

Kee*_*ert 5 typescript mapbox-gl angular

我试图用 mapbox-gl 在 StackBlitz 上做一个例子。如何设置accessToken?

编辑器声明“无法分配给‘accessToken’,因为它是一个常量或只读属性”。

我已经尝试了另一个问题的可能解决方案: Mapbox-gl 输入不允许访问令牌分配

import { Component, ViewChild, ElementRef } from '@angular/core';
import * as mapboxgl from 'mapbox-gl';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {

  @ViewChild('map') mapElement: ElementRef;
  map: mapboxgl.Map;

  ngOnInit() {
    mapboxgl.accessToken = '<token>';
    this.map = new mapboxgl.Map({
      container: this.mapElement.nativeElement,
      style: 'mapbox://styles/mapbox/streets-v11',
      center: [-77.04, 38.907],
      zoom: 11.15
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

完整代码示例:https : //stackblitz.com/edit/angular-9djiw2

小智 5

另一个技巧是访问令牌属性,如下所示:(mapboxgl as any).accessToken = "your token"


Kee*_*ert 4

最后通过替换解决了这个问题

import * as mapboxgl from 'mapbox-gl';
Run Code Online (Sandbox Code Playgroud)

const mapboxgl = require('mapbox-gl');
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这有效(尽管有一些红色下划线)。它可能特定于 StackBlitz。我会将示例保留在那里,但会禁用 Mapbox 中的密钥。