如何动态设置谷歌地图样式
How to set Google Maps styles dynamically
使用Google Map APi v3,有如下样式选项:
{
featureType: 'transit.line',
elementType: 'geometry',
stylers: [
{ hue: '#fc0101' },
{ visibility: 'on' }
]
}
这适用于地图加载,可以在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);
}
我找不到任何设置样式的文档,没有"set",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' }
]
}
});
}
缩放事件的工作示例(只是缩放地图):http://codepen.io/anon/pen/yfGxm
样式事件的非工作示例(此设置用于删除
)
编辑:下面的答案很好,我没有意识到这也记录在这里: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);
});
对我来说,map. setopoptions()很适合设置样式。我想你忘记用[]括号了。
你可以改变地图的样式如下:
// turn off transit line visibility on click
function showTest() {
var myStyle =[{
featureType: 'transit.line',
elementType: 'geometry',
stylers: [
{ hue: '#fc0101' },
{ visibility: 'on' }
]
}];
map.setOptions({styles: myStyle});
}
相关文章:
- 动态设置谷歌地图缩放
- 使用谷歌地图api计算距离并将其设置在表格中<td>
- 将谷歌地图中的平移边界设置为图像覆盖
- 为位于路线上的谷歌地图标记(起点和终点)设置一个信息窗口
- 将边界设置为overlayImage谷歌地图
- 从结果集中自动设置谷歌地图缩放
- 谷歌地图标记在通过变量设置标记和经度时不保持不变
- 如何动态设置谷歌地图标记大小
- 在javascript中设置谷歌地图标记图标属性
- 用城市名称(地址?)设置谷歌地图标记位置
- 根据屏幕/设备宽度设置谷歌地图API V3缩放级别
- 如何设置谷歌地图's按ID居中
- 设置谷歌地图信息窗口的高度
- 在Javascript中使用相对路径设置谷歌地图图标
- 如何在ngMap中设置谷歌地图100%的高度
- 问题试图设置谷歌地图信息窗口的内容与
- 如何设置谷歌地图标记弹跳
- 如何动态设置谷歌地图样式
- 如何设置谷歌地图信息窗口的高度
- 如何从页面中取消设置谷歌地图