Google maps api 3 根据条件更改贴图API样式

Google maps api 3 根据条件更改贴图API样式,google-maps-api-3,Google Maps Api 3,我以下面的地图为基础。这是一张相当规则的地图 function initMap() { var map = new google.maps.Map(document.getElementById('map'), { zoom: 2, center: {lat: 23.9096187, lng: -29.6761281}, mapTypeId: google.maps.MapTypeId.SATELLITE, disableDefault

我以下面的地图为基础。这是一张相当规则的地图

  function initMap() {
    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 2,
      center: {lat: 23.9096187, lng: -29.6761281},
      mapTypeId: google.maps.MapTypeId.SATELLITE,
      disableDefaultUI: true
    });
  }
然而!如果某个条件为真,我想实现这些样式(例如,如果var temp>80,则添加此样式)。这可能吗

 {
    stylers: [
      {hue: '#890000'},
      {visibility: 'simplified'},
      {gamma: 0.5},
      {weight: 0.5}
    ]
  },
  {
    elementType: 'labels',
    stylers: [{visibility: 'off'}]
  },
  {
    featureType: 'water',
    stylers: [{color: '#890000'}]
  }
], {
  name: 'Custom Style'
  });
var customMapTypeId = 'custom_style';

  map.mapTypes.set(customMapTypeId, customMapType);
  map.setMapTypeId(customMapTypeId);

通过调用以下命令,可以随时将地图样式更改为定义的样式:

map.setOptions({
  styles: [{
    stylers: [{
      hue: '#890000'
    }, {
      visibility: 'simplified'
    }, {
      gamma: 0.5
    }, {
      weight: 0.5
    }]
  }, {
    elementType: 'labels',
    stylers: [{
      visibility: 'off'
    }]
  }, {
    featureType: 'water',
    stylers: [{
      color: '#890000'
    }]
  }]
});
假设
map
在作用域中(使其成为全局的,或者创建在initMap函数的作用域中更改它的函数,因为
map
当前是该函数的局部函数)

代码片段:

函数初始化(){
var map=new google.maps.map(
document.getElementById(“地图画布”){
中心:新google.maps.LatLng(37.4419,-122.1419),
缩放:13,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var-toggle=true;
google.maps.event.addDomListener(document.getElementById(“btn”),“单击”,函数(){
如果(切换){
map.setOptions({
风格:[{
样式:[{
色调:“#890000”
}, {
可见性:“简化”
}, {
伽马:0.5
}, {
重量:0.5
}]
}, {
elementType:'标签',
样式:[{
能见度:“关闭”
}]
}, {
功能类型:“水”,
样式:[{
颜色:“#890000”
}]
}]
});
}否则{
map.setOptions({
样式:[]
});
}
切换=!切换;
});
}
google.maps.event.addDomListener(窗口“加载”,初始化)
html,
身体,
#地图画布{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}


您当然可以动态更改样式。你试了什么没用的?谢谢你的帮助!是的,我意识到了一些事情:1-对地图的所有样式和动态编辑都需要在原始initMap()函数中。2-需要设置不同的样式(具有唯一的样式ID),并让if/else语句设置map.setMapTypeId。