javascript - 如何动态设置谷歌地图样式

标签 javascript google-maps

使用 Google Map APi v3,有样式选项,例如:

   {
     featureType: 'transit.line',
     elementType: 'geometry',
     stylers: [
        { hue: '#fc0101' },
        { visibility: 'on' }
     ]
    }

这适用于 map 加载,如 API 示例所示:https://developers.google.com/maps/documentation/javascript/examples/maptype-styled-simple

我需要添加一个点击事件来显示或更改某种样式,例如,如果我在 dom 事件上更改上述代码的 hue 值。

示例代码:

// a link to test map changes
var testDiv = document.getElementById("test");

// add click event listener for map
google.maps.event.addDomListener(testDiv, 'click', showTest);

// the function for setZoom works 
function showTest() {
    map.setZoom(2); 
}

我找不到任何设置样式的文档,没有“设置”,https://developers.google.com/maps/documentation/javascript/reference#StyledMapType

setOptions 包含一个 styles 属性,但我无法让它工作。

一个不起作用的例子:

 // turn off transit line visibility on click
function showTest() {
    map.setOptions({
        styles : {
            featureType: 'transit.line',
            elementType: 'geometry',
            stylers: [
                { hue: '#fc0101' },
                { visibility: 'off' }
            ]
        }
    });
}

编辑:下面的答案很好,我没有意识到这里也记录了这一点:https://developers.google.com/maps/documentation/javascript/styling?csw=1

最佳答案

http://codepen.io/jolsalazar/full/anKqG

这里是示例代码:

var map;
var chicago = new google.maps.LatLng(41.850033, -87.650052);

function initialize() {

  var roadAtlasStyles = [
    {
      featureType: 'transit.line',
      elementType: 'geometry',
      stylers: [
        { hue: '#ff0000' },
        { visibility: 'on' },
        { lightness: -70 }
      ],
      enableCloseButton: true,
      visible: false
    }
  ];

  var mapOptions = {
    zoom: 12,
    center: chicago,
    mapTypeControlOptions: {
      mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'usroadatlas']
    }
  };

  map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

  var styledMapOptions = {
    name: 'US Road Atlas'
  };

  var usRoadMapType = new google.maps.StyledMapType(
      roadAtlasStyles, styledMapOptions);


  map.mapTypes.set('usroadatlas', usRoadMapType);
  map.setMapTypeId('usroadatlas');

  google.maps.event.addDomListener(document.getElementById('test'), 'click', function() {
    map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
  });

}

jQuery(document).ready(function () {
    google.maps.event.addDomListener(window, 'load', initialize);
});

关于javascript - 如何动态设置谷歌地图样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23687727/

相关文章:

javascript - 我如何获取文本区域的行并将它们放入左右对齐的元素集中,每行在 ":"上拆分?

javascript - 使用 Google map 地点库在 map 上显示的标记不超过 20 个

android - map 在设备上不起作用

javascript - 自动完成表格未将城市放入表格中?

javascript - 使用 HTML JS 在 Android WebView 中打开相机?

javascript - jquery 的绑定(bind)不起作用

google-maps - 谷歌地图 API;如何在 map 上添加比例尺?

ios - 如何在 Objective C 中对 Google Maps maker 的标题添加操作

javascript - AngularJS 多个指令 ngIf 要求在 !isFocused 上进行嵌入

javascript - 将 HandsOnTable 限制为其父容器的大小