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

鲁宁

我有一个Google Maps API初始化函数,其中Marker标签颜色(用于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;

    }
}

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

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

我很高兴部署javascript方法,CSS方法或任何其他方法-但是我已经进行了数小时的搜索,测试和试验,但到目前为止还是空手而归。

地理编码

没有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);
  }
}

概念证明

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

代码段:

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);

  }
}
html,
body,
#map_canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章