我正在使用谷歌地图,需要添加一个 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 实例时会发生错误。如果您对如何解决此错误有任何建议,请告诉我。谢谢!
不知道要尝试什么
是的,以前也一样,对我来说也很好……有人有任何线索吗?
根据 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 的信息。希望有所帮助。