地图初始化后更改 Google Maps API 标记标签的颜色

Rou*_*ica 1 javascript css google-maps-api-3

我有一个 Google Maps API 初始化函数,其中标记标签颜色(用于标记针数组)设置为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'
        }
    });
Run Code Online (Sandbox Code Playgroud)

这有效。到现在为止还挺好。

稍后(遵循用户操作等)我想更改标记标签颜色。

我编写了以下函数:

// CHANGE MARKER LABEL COLOR
function changeMarkerLabelColor(labelColor) {

    for (let i = 0; i < markerPins.length; i++ ) {

        markerPins[i].label.color = labelColor;

    }
}
Run Code Online (Sandbox Code Playgroud)

确实有效。但似乎只是在地图初始化时。

地图初始化如何才能getset标记标签颜色?

我很高兴部署 javascript 方法、CSS 方法或任何其他方法 - 但我一直在搜索、测试和试验几个小时,到目前为止都是空手而归。

geo*_*zip 6

没有记录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);
  }
}
Run Code Online (Sandbox Code Playgroud)

概念证明小提琴

setTimeout 运行后生成的地图的屏幕截图

代码片段:

function changeMarkerLabelColor(labelColor) {
  for (let i = 0; i < markerPins.length; i++ ) {
    var label = markerPins[i].getLabel();
    label.color = labelColor;
    markerPins[i].setLabel(label);
  }
}
Run Code Online (Sandbox Code Playgroud)
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);

  }
}
Run Code Online (Sandbox Code Playgroud)
html,
body,
#map_canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
Run Code Online (Sandbox Code Playgroud)