AdvancedMarkerView 扩展。抛出错误 TypeError: Illegal constructor

问题描述 投票:0回答:2

我正在使用谷歌地图,需要添加一个 google.maps.marker.AdvancedMarkerView 和一个附加参数,该参数包含有关标记的信息,例如它的 ID。为此,我扩展了 AdvancedMarkerView 类并添加了我自己的参数。一切正常,直到最近当我开始收到一条错误消息时:在创建 ParkingMarkerView 的新实例时出现“TypeError: Illegal constructor”。这是我班级的代码:

我的班级

class ParkingMarkerView extends google.maps.marker.AdvancedMarkerView {
    pData;
    constructor(options) {
        super(options);
        this.pData = options.pData;
    }
}


new ParkingMarkerView({
            position: {
                lat: latitude,
                lng: longitude
            },
            map,
            draggable: false,
            pData,
            content,
        })

我没有对代码进行任何更改,因此我怀疑 Google 可能对其脚本进行了一些更改,导致了此错误。使用 pData、内容和其他选项创建新的 ParkingMarkerView 实例时会发生错误。如果您对如何解决此错误有任何建议,请告诉我。谢谢!

不知道要尝试什么

google-maps google-maps-api-3 google-maps-markers extends google-maps-advanced-marker-view
2个回答
0
投票

是的,以前也一样,对我来说也很好……有人有任何线索吗?


0
投票

根据 https://developers.google.com/maps/documentation/javascript/reference/advanced-markers,AdvancedMarkerElement 类(最初在 beta 通道中名为 AdvancedMarkerView)现在是 HTMLElement 的子类。

为了继承它并创建它的实例,你需要先让你的子类成为一个自定义元素。

例如:

class ParkingMarker extends AdvancedMarkerElement {
  constructor(options) {
    super(options);
  }
}

// Define a custom element.
customElements.define('parking-marker', ParkingMarker);

// Now the subclass can be instantiated.
const parkingMarker = new ParkingMarker({...});

您还可以在这里看到更多关于实例化 HTMLElement 的信息。希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.