我将所有的 AdvancedMarkersElements 保存在一个数组中,我想使用 maptypeid_changed 事件更改它们的 Pinelements,特别是它们的字形颜色。
我想保持所有其他属性相同。 所以,我想做这样的事情
for (var j in markersDB2)
{
let mark = markersDB2[j];
mark.content.glyphColor = labelColor;
}
但我发现的唯一方法是创建一个新的 PinElement 并将其附加到 advanceMarkerElement。
但是如何为新 PinElement 保留与原始 advanceMarkerElement 中现有属性相同的属性?
有什么想法吗?
您可以将 PinElement 存储在标记本身的自定义属性中,并在以后更新它,而无需创建新的 PinElement。 您需要将其适应您已有的内容,但类似这样的东西应该可以工作:
//create new marker
var newMarker = new google.maps.marker.AdvancedMarkerElement({
map: map,
position: new google.maps.LatLng(lat, lng)
});
//create a new pin
let myPin = new google.maps.marker.PinElement({
background: "Red"
});
//save the entire PinElement as a custom element of the marker
newMarker.myPinElement = myPin;
newMarker.content = myPin.element;
....
//To update the pin:
//change the pinelement attributes
newMarker.myPinElement.background = "Blue";
//update the marker
newMarker.content = newMarker.myPinElement.content;