Google Maps en niveaux de gris

Existe-t-il un moyen d'afficher une carte Google (intégrée via L'API Javascript) en niveaux de gris sans perdre aucune autre fonctionnalité?

41
demandé sur Soner Gönül 2010-10-23 14:46:58

8 réponses

Oui, dans la V3 de l'api, ils ont introduit StyledMaps.

Ils ont même fourni un outil pour générer le code pour les styles que vous aimez. Faites glisser la "Saturation" tout le chemin vers le bas et vous avez des niveaux de gris en cours!

L'exemple suivant affiche une carte en niveaux de gris de Brooklyn:

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');
106
répondu Roatin Marth 2010-10-23 11:16:10

Il y a un moyen un peu plus court (comparé à la meilleure réponse de @Roatin Marth ) pour rendre votre google map en niveaux de gris avec Google Maps JavaScript API V3 en incluant directement les styles que vous avez générés avec Google Maps API Styled Map Wizard dans google.maps.MapOptions object:

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);

Vous obtenez le tableau défini sous la propriété styles dans la variable mapOptions en cliquant sur le bouton "Afficher JSON" dans le panneau de style de carte lorsque vous terminez la personnalisation de vos styles à l'aide de Google Maps API Styled Map Assistant .

Sortie JSON démontrant le tableau de styles à définir dans mapOptions

31
répondu Nik Sumeiko 2017-05-23 12:34:24

Il suffit d'utiliser CSS3 grayscale () effet de filtre pour L'élément iframe Google maps! Cela fonctionne parce que le code JS imprime des images.

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 */
}

Essayez également de cibler uniquement les images d'arrière-plan en appliquant ceci au tout premier élément div sous le div.gm-style (ou tout autre wrapper). Je ne sais pas si Google change souvent la structure dom mais pour le moment (25 Nov 2014) cela fonctionne bien.

iframe .gm-style > div:first-child {
  // Same code here
}
11
répondu TheodorosPloumis 2014-11-25 11:10:03

Découvrez ceci:

Http://snazzymaps.com/style/15/subtle-grayscale

Fonctionne comme un charme :)

1
répondu HasanAboShally 2014-11-02 13:09:59

IE a la directive filter: gray.

Il rend tout élément HTML en niveaux de gris. JSFiddle ici .

Vous pouvez être en mesure d'appliquer ceci à la DIV parent de la carte. IL peut transformer la carte qu'il contient en une réimpression en niveaux de gris. Je ne peux pas dire si cela fonctionnera sans effets secondaires-vous devrez essayer. Mais c'est bien possible.

IE seulement, cependant, mais pris en charge depuis la Version 4.

Docs de filtre en niveaux de gris à MSDN

Autres que cela, je pense qu'il y a une API Flash pour les cartes, n'est-ce pas? Il pourrait être plus facile à réaliser là.

0
répondu Pekka 웃 2010-10-23 11:00:15

Utilisez la propriété CSS filter pour convertir la carte google en noir et blanc. 100% est complètement noir et blanc

selector {
  -webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */
  filter: grayscale(100%);
}
0
répondu swathi_sri 2018-05-03 12:58:44

Oui, il existe une API tierce pour Google maps qui fournit des niveaux de gris (snazzymaps).

C'est très simple. Vous pouvez utiliser ce site pour obtenir les différentes couleurs pour google maps.

Http://snazzymaps.com

-1
répondu Bastin Robin 2014-10-13 09:33:24

En plus d'écrire les bonnes personnes chez Google et de leur demander de créer des versions à échelle de gris de toutes leurs tuiles d'image et un paramètre API optionnel, non.

-13
répondu Stan Rogers 2010-10-23 10:51:36