【发布时间】:2010-10-23 10:46:58
【问题描述】:
有没有办法在不丢失任何其他功能的情况下以灰度显示谷歌地图(通过 Javascript API 嵌入)?
【问题讨论】:
-
我对此表示怀疑。在 IE 中,可以通过使用 DirectX
filterCSS 属性之一的 DIV 覆盖地图来使其下方的任何内容变为灰度,但它也会覆盖控件。有兴趣看看有什么事情发生
有没有办法在不丢失任何其他功能的情况下以灰度显示谷歌地图(通过 Javascript API 嵌入)?
【问题讨论】:
filter CSS 属性之一的 DIV 覆盖地图来使其下方的任何内容变为灰度,但它也会覆盖控件。有兴趣看看有什么事情发生
是的,在 V3 的 api 中他们已经引入了StyledMaps。
他们甚至为您提供了provided a tool 来生成您喜欢的样式的代码。将“饱和度”一直向下滑动,您就可以开始灰度了!
以下示例显示布鲁克林的灰度地图:
var map;
var brooklyn = new google.maps.LatLng(40.6743890, -73.9455);
var stylez = [
{
featureType: "all",
elementType: "all",
stylers: [
{ saturation: -100 } // <-- THIS
]
}
];
var mapOptions = {
zoom: 11,
center: brooklyn,
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'tehgrayz']
}
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var mapType = new google.maps.StyledMapType(stylez, { name:"Grayscale" });
map.mapTypes.set('tehgrayz', mapType);
map.setMapTypeId('tehgrayz');
【讨论】:
通过将使用Google Maps API Styled Map Wizard 生成的样式直接包含到google.maps.MapOptions 对象中,有一种更短的方法(与@Roatin Marth 的best answer 相比)使用Google Maps JavaScript API v3 制作您的Google 地图灰度:
var container = document.getElementById('map_canvas');
var mapOptions = {
zoom: 11,
center: new google.maps.LatLng(40.6743890, -73.9455),
styles: [{
stylers: [{
saturation: -100
}]
}]
};
var map = new google.maps.Map(container, mapOptions);
在使用Google Maps API Styled Map Wizard 完成样式自定义时,通过单击“地图样式”面板中的“显示 JSON”按钮,可以在 mapOptions 变量中的 styles 属性下设置数组。
【讨论】:
只需对 Google 地图 iframe 元素使用 CSS3 grayscale() 滤镜效果!它的工作原理是 js 代码打印图像。
iframe {
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: grayscale(100%);
filter: url(grayscale.svg); /* Firefox 4+ */
filter: gray; /* IE 6-9 */
}
还尝试通过将其应用于div.gm-style(或任何其他包装器)下的第一个 div 元素来定位仅背景图像。我不知道 Google 是否经常更改 dom 结构,但目前(2014 年 11 月 25 日)这很好。
iframe .gm-style > div:first-child {
// Same code here
}
【讨论】:
使用 CSS 过滤器属性将谷歌地图转换为黑白。 100% 完全是黑白的
selector {
-webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */
filter: grayscale(100%);
}
【讨论】:
IE 有 filter: gray 指令。
它以灰度呈现任何 HTML 元素。 JSFiddlehere.
您可能可以将此应用到地图的父 DIV。它可能将其包含的地图转换为灰度再现。我不能说这是否会没有副作用 - 你必须尝试。但这很有可能。
虽然仅限 IE,但从版本 4 开始支持。
除此之外,我认为还有一个用于地图的 Flash API,不是吗?在那里可能更容易实现。
【讨论】:
filter 的东西从未在其他浏览器中流行。可悲! ... 可能在 Flash 中,我不知道。
【讨论】:
【讨论】:
除了写谷歌的好人并要求他们创建所有图像图块的灰度版本和一个可选的 API 参数之外,没有。
【讨论】: