我有一个Google Maps API初始化函数,其中标记标签颜色(对于markerPins数组)设置为transparent
:
markerPins[i] = new google.maps.Marker({
position: position,
map: map,
optimized: false,
icon: myPin,
label: {
color: 'transparent', // <= HERE
fontSize: '11px',
fontWeight: '900',
text: 'Example Label'
}
});
这很有效。到目前为止,非常好。
稍后(在用户操作之后等)我想更改标记标签颜色。
我写了以下函数:
// CHANGE MARKER LABEL COLOR
function changeMarkerLabelColor(labelColor) {
for (let i = 0; i < markerPins.length; i++ ) {
markerPins[i].label.color = labelColor;
}
}
确实有效 。但似乎只是在地图被初始化时。
地图初始化后,如何get
和set
标记标记颜色?
我很乐意部署一个javascript方法,一种CSS方法或任何其他方法 - 但我一直在搜索,测试和试验几个小时,到目前为止空手而归。
答案 0 :(得分:3)
标记没有记录的label
属性。使用(记录的).setLabel
和.getLabel
函数:
function changeMarkerLabelColor(labelColor) {
for (let i = 0; i < markerPins.length; i++ ) {
var label = markerPins[i].getLabel();
label.color = labelColor;
markerPins[i].setLabel(label);
}
}
代码段
var locations = [
{ position: {lat: 37.4419, lng: -122.1419}},
{ position: {lat: 37.4529598, lng: -122.1817252}},
{ position: {lat: 37.4688273, lng: -122.141075}},
];
var markerPins = [];
function initialize() {
var map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
for (var i = 0; i < locations.length; i++) {
markerPins[i] = new google.maps.Marker({
position: locations[i].position,
map: map,
optimized: false,
label: {
color: 'transparent', // <= HERE
fontSize: '11px',
fontWeight: '900',
text: 'Example Label'
}
});
}
setTimeout(function() {
changeMarkerLabelColor("blue");
}, 5000)
}
google.maps.event.addDomListener(window, "load", initialize);
function changeMarkerLabelColor(labelColor) {
for (let i = 0; i < markerPins.length; i++) {
var label = markerPins[i].getLabel();
label.color = labelColor;
markerPins[i].setLabel(label);
}
}
&#13;
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
&#13;
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>
&#13;