2 回答
TA贡献1780条经验 获得超4个赞
由于标记是 DOM 中的一个元素,您可以通过.innerHTML = ...以下方式更新其内容:
document.getElementById("test").innerHTML = "This is my new content";
在您的情况下,我会update(text)向您的 HTMLMapMarker 类添加一个新方法,并在需要更改标记内容时调用它:
class HTMLMapMarker extends google.maps.OverlayView {
...
update(newText) {
if (this.div) {
this.div.innerHTML = newText;
} else {
console.warn("createDiv() has not been called on this point", this);
}
}
...
}
调用 update() 例程:
marker = createHTMLMapMarker({
latlng: new google.maps.LatLng((53.233071+0.00008),(6.535706-0.00006)),
map: map,
html: `<div id="test" class="progress consumptionProduction">
<div class="progress-bar" role="progressbar" style="width: 15%" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div>
<div class="progress-bar bg-success" role="progressbar" style="width: 85%" aria-valuenow="85" aria-valuemin="0" aria-valuemax="100"></div>
</div>`
})
marker.update("This should be my new content");
TA贡献1824条经验 获得超5个赞
marker.html只是HTMLMapMarker用于实际创建 .html 对象的类的属性createDiv。仅更新此属性不会触发任何操作,并且createDiv之前已被调用。您需要做的是添加一个updateDiv(html)方法,例如:
updateDiv(html) {
this.html=html;
if(!this.div){
this.createDiv();
} else {
this.div.innerHTML = this.html;
}
}
然后调用此方法来更新标记(使用 HTML)。或者,您可以使用对象的.div属性HTMLMapMarker直接操作标记对象。
添加回答
举报