【问题标题】:Google Map - change style attributes for an existing marker and update mapGoogle Map - 更改现有标记的样式属性并更新地图
【发布时间】:2017-05-06 19:18:53
【问题描述】:

在 Google 地图中,可以创建地图并放置自定义标记,如下所示

let lat = 19.29;
let long = 72.85;
let map = new google.maps.Map(document.getElementById('map'), {zoom: 12});
let LatLng = new google.maps.LatLng(lat, long);
let marker = new google.maps.Marker({
                    position: LatLng,
                    map: map,
                    icon: { path: google.maps.SymbolPath.CIRCLE,
                            scale: 2,
                            fillColor: 'Crimson',
                            strokeColor: 'Crimson'                          
                          }
                });

稍后我们如何更改标记样式,例如fillColor

这个问题与标记为重复的问题不同 - 这个问题是关于更新现有标记的样式属性的通用问题,并且特定于 google map api v3。

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:

    从标记中获取当前图标,更改其颜色,设置新图标:

    var icon = marker.getIcon();
    icon.fillColor = "#00FF00";
    icon.strokeColor = "#00FF00";
    marker.setIcon(icon);
    

    proof of concept fiddle

    代码 sn-p:

    var color = ["#FF0000", "#00FF00", "#0000FF"];
    var colorIdx = 1;
    
    function initialize() {
    
      let lat = 19.29;
      let long = 72.85;
      let LatLng = new google.maps.LatLng(lat, long);
      let map = new google.maps.Map(document.getElementById('map'), {
        zoom: 12,
        center: LatLng
      });
      let marker = new google.maps.Marker({
        position: LatLng,
        map: map,
        icon: {
          path: google.maps.SymbolPath.CIRCLE,
          scale: 10,
          fillColor: 'Crimson',
          strokeColor: 'Crimson'
        }
      });
      google.maps.event.addDomListener(document.getElementById('btn'), 'click', function() {
        var icon = marker.getIcon();
        icon.fillColor = color[colorIdx];
        icon.strokeColor = color[colorIdx];
        colorIdx++;
        colorIdx %= color.length;
        marker.setIcon(icon);
      })
    }
    google.maps.event.addDomListener(window, "load", initialize);
    html,
    body,
    #map {
      height: 100%;
      width: 100%;
      margin: 0px;
      padding: 0px
    }
    <script src="https://maps.googleapis.com/maps/api/js"></script>
    <input type="button" id="btn" value="change color" />
    <div id="map"></div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      相关资源
      最近更新 更多