Assistance

Cette page liste les problèmes connus et les solutions de contournement pour les cartes vectorielles et les éléments géographiques WebGL.

Compatibilité avec les navigateurs et appareils

L'aperçu des fonctionnalités WebGL est compatible avec les mêmes navigateurs et appareils que l'API Maps JavaScript. Pour vérifier si le navigateur d'un appareil est compatible avec WebGL, consultez https://get.webgl.org/ ou caniuse.com. Vérifiez également que l'accélération matérielle est activée dans les paramètres du navigateur, sans quoi une carte matricielle s'affichera à la place de la carte vectorielle.

Carte matricielle et carte vectorielle

Parfois, une carte matricielle peut s'afficher à la place d'une carte vectorielle. Dans ce cas, les éléments géographiques dépendant de la carte vectorielle ne sont pas disponibles. L'affichage d'une carte matricielle peut se produire pour diverses raisons. Cette section vous explique comment configurer correctement votre navigateur Web et vérifier de manière programmatique si les cartes vectorielles sont fonctionnelles.

Vérifier les fonctionnalités du navigateur Chrome

Pour déterminer quelles fonctionnalités d'accélération matérielle sont activées dans une installation spécifique de Chrome, accédez à chrome://gpu/ et assurez-vous que les éléments suivants sont activés (en vert) :

  • "OpenGL : activé"
  • "WebGL : accélération matérielle"
  • "WebGL2 : accélération matérielle"

Activer l'accélération matérielle

Pour que les cartes vectorielles soient compatibles, l'accélération matérielle doit être activée dans la plupart des navigateurs. Pour activer l'accélération matérielle dans Chrome et Microsoft Edge, accédez aux Paramètres, sélectionnez Système et assurez-vous que l'option Utiliser l'accélération matérielle est activée, si elle est disponible.

Vérification programmatique des cartes matricielles et vectorielles

Vous pouvez vérifier si une carte est matricielle ou vectorielle de manière programmatique, en appelant map.getRenderingType(). L'exemple de code permet de surveiller l'événement renderingtype_changed et d'afficher fenêtre d'informations indiquant si une carte matricielle ou vectorielle est utilisée.

TypeScript

/**
 * This example creates a map with an info window that shows whether
 * the map render type is raster or vector.
 */

 function initMap() {
    const center = {lat: 0, lng: 0};
    const map = new google.maps.Map(document.getElementById('map') as HTMLElement, {
      center,
      zoom: 10,
      heading: 0.0,
      tilt: 0.0,
      // Map ID for a vector map.
      mapId: '6ff586e93e18149f',
    });
    const canvas = document.createElement("canvas");
    const infoWindow = new google.maps.InfoWindow({
      content: '',
      ariaLabel: 'Raster/Vector',
      position: center,
    });
    infoWindow.open({
      map,
    });

    map.addListener('renderingtype_changed', () => {
      infoWindow.setContent(`${map.getRenderingType()}`);
    });
  }

  declare global {
    interface Window {
      initMap: () => void;
    }
  }
  window.initMap = initMap;

JavaScript

/**
 * This example creates a map with an info window that shows whether
 * the map render type is raster or vector.
 */
function initMap() {
  const center = { lat: 0, lng: 0 };
  const map = new google.maps.Map(document.getElementById("map"), {
    center,
    zoom: 10,
    heading: 0.0,
    tilt: 0.0,
    // Map ID for a vector map.
    mapId: "6ff586e93e18149f",
  });
  const canvas = document.createElement("canvas");
  const infoWindow = new google.maps.InfoWindow({
    content: "",
    ariaLabel: "Raster/Vector",
    position: center,
  });

  infoWindow.open({
    map,
  });
  map.addListener("renderingtype_changed", () => {
    infoWindow.setContent(`${map.getRenderingType()}`);
  });
}

window.initMap = initMap;

Vous pouvez également utiliser le contexte de rendu WebGL pour vérifier la compatibilité avec WebGL 2 :

const canvas = document.createElement("canvas");
canvas.getContext("webgl2") ? console.log("WebGL 2 is supported") : console.log("WebGL 2 is NOT supported");

Découvrez d'autres manières de détecter de manière programmatique le contexte de rendu WebGL.

Compatibilité avec le Web mobile

La compatibilité des cartes vectorielles avec le Web mobile est encore au stade expérimental. Les développeurs peuvent utiliser des API clientes pour détecter les navigateurs Web mobiles et utiliser un ID de carte associé à une carte matricielle plutôt qu'à une carte vectorielle. Nous estimons que l'affichage sera plus lent sur certains appareils mobiles. Si vous choisissez d'utiliser des cartes vectorielles sur le Web mobile, n'hésitez pas à nous faire part de vos commentaires et de vos statistiques sur les performances. Comme indiqué ci-dessus, l'ID de carte vectorielle basculera automatiquement vers une carte matricielle en cas d'incompatibilité.

Signaler des bugs

  • Veuillez installer les dernières mises à jour du navigateur et du pilote du GPU avant de signaler le bug.
  • Vérifiez que le paramètre d'accélération matérielle chrome://settings/system (Chrome), about:preferences#general (Firefox), ou edge://settings/system (Microsoft Edge) est activé. Dans Safari, ce paramètre est activé automatiquement dans macOS 10.15 ou version ultérieure. Pour les versions antérieures de MacOS, accédez aux paramètres avancés de Safari et vérifiez que l'option "Utiliser l'accélération matérielle" est activée.
  • Incluez un lien vers l'exemple de code jsfiddle dans le rapport de bug.
  • Veuillez également prendre une capture d'écran de chrome://gpu (Chrome), de about:support (Firefox) ou de edge://gpu (Microsoft Edge), ou joindre des informations du GPU dans le rapport de bug si vous rencontrez des problèmes d'affichage.

Donnez-nous votre avis !

Vos commentaires nous sont très utiles, car ils nous permettent de proposer la meilleure expérience de cartographie vectorielle possible pour vous et vos utilisateurs finaux. Contactez-nous si :

  • vous détectez de nouvelles erreurs JavaScript ou de nouveaux bugs ou plantages dans vos applications Web ;
  • la latence de démarrage pour les cartes vectorielles est bien plus faible que pour les cartes matricielles (dans ce cas, les métriques de régression de la latence du démarrage sont très utiles. En général, nous souhaitons savoir si la latence au démarrage dépasse le seuil acceptable) ;
  • l'expérience des cartes vectorielles n'est pas aussi fluide qu'elle pourrait l'être (si vous consignez des métriques concernant les FPS ou les à-coups, comparez celles des cartes vectorielles à celles des cartes matricielles) ;
  • les performances varient considérablement d'un navigateur à l'autre.

Si vous avez configuré des tests A/B pour comparer les cartes vectorielles et les cartes matricielles, veuillez nous envoyer vos commentaires sur les performances. Ils nous aideront à améliorer le produit.