[ Web Proxy ]
URL:
Viewing: https://developers.google.com/maps/documentation/javascript/examples/hiding-features [Back]  [Original]

Hiding Map Features With Styling  |  Maps JavaScript API  |  Google for Developers Skip to main content
Send feedback

Hiding Map Features With Styling Stay organized with collections Save and categorize content based on your preferences.

outlined_flag

You can use map styling to hide features on the map. Select an option in this example to hide or show business points of interest (POIs) and public transit icons on the map.

Note: A map's styles property can only be set on a raster map.

Read the documentation.

TypeScript

async function init() {
    // Request needed libraries.
    await google.maps.importLibrary('maps');

    // Get the gmp-map element.
    const mapElement = document.querySelector('gmp-map')!;

    // Get the inner map.
    const innerMap = mapElement.innerMap;

    innerMap.setOptions({
        mapTypeControl: false,
        // A map's styles property can only be set on a raster map.
        renderingType: 'RASTER',
    });

    // Apply new JSON when the user chooses to hide/show features.
    document.getElementById('hide-poi')!.addEventListener('click', () => {
        innerMap.setOptions({ styles: styles.hide });
    });
    document.getElementById('show-poi')!.addEventListener('click', () => {
        innerMap.setOptions({ styles: styles.default });
    });
}

const styles: Record<string, google.maps.MapTypeStyle[]> = {
    default: [],
    hide: [
        {
            featureType: 'poi.business',
            stylers: [{ visibility: 'off' }],
        },
        {
            featureType: 'transit',
            elementType: 'labels.icon',
            stylers: [{ visibility: 'off' }],
        },
    ],
};

void init();
Note: Read the guide on using TypeScript and Google Maps.

JavaScript

async function init() {
    // Request needed libraries.
    await google.maps.importLibrary('maps');

    // Get the gmp-map element.
    const mapElement = document.querySelector('gmp-map');

    // Get the inner map.
    const innerMap = mapElement.innerMap;

    innerMap.setOptions({
        mapTypeControl: false,
        // A map's styles property can only be set on a raster map.
        renderingType: 'RASTER',
    });

    // Apply new JSON when the user chooses to hide/show features.
    document.getElementById('hide-poi').addEventListener('click', () => {
        innerMap.setOptions({ styles: styles.hide });
    });
    document.getElementById('show-poi').addEventListener('click', () => {
        innerMap.setOptions({ styles: styles.default });
    });
}

const styles = {
    default: [],
    hide: [
        {
            featureType: 'poi.business',
            stylers: [{ visibility: 'off' }],
        },
        {
            featureType: 'transit',
            elementType: 'labels.icon',
            stylers: [{ visibility: 'off' }],
        },
    ],
};

void init();

CSS

/* 
 * Optional: Makes the sample page fill the window. 
 */
html,
body {
    height: 100%;
    margin: 0;
    padding: 0;
}

.map-control {
    background-color: #fff;
    border-radius: 5px;
    box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
    margin: 10px;
    padding: 5px;
    font-family: Roboto, sans-serif;
    font-size: small;
    display: block;
}

.selector-control {
    font-size: 14px;
    line-height: 30px;
    vertical-align: baseline;
}

HTML

<html>
    <head>
        <title>Hiding Map Features With Styling</title>

        <link rel="stylesheet" type="text/css" href="./style.css" />
        <script type="module" src="./index.js"></script>
        <script>
            // prettier-ignore
            (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
                key: "GOOGLE_MAPS_API_KEY"
            });
        </script>
    </head>
    <body>
        <gmp-map center="-33.86,151.209" zoom="13">
            <div
                id="style-selector-control"
                class="map-control"
                slot="control-block-start-inline-start">
                <input
                    type="radio"
                    name="show-hide"
                    id="hide-poi"
                    class="selector-control" />
                <label for="hide-poi">Hide</label>
                <input
                    type="radio"
                    name="show-hide"
                    id="show-poi"
                    class="selector-control"
                    checked="checked" />
                <label for="show-poi">Show</label>
            </div>
        </gmp-map>
    </body>
</html>

Clone Sample

Git and Node.js are required to run this sample locally. Follow these instructions to install Node.js and NPM. The following commands clone, install dependencies and start the sample application.

  git clone https://github.com/googlemaps-samples/js-api-samples.git
  cd samples/hiding-features
  npm i
  npm start
Send feedback

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-08-26 UTC.

Need to tell us more? [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-08-26 UTC."],[],["Map styling allows users to hide or show features. This is demonstrated by creating a map with controls to toggle the visibility of business points of interest (POIs) and public transit icons. Clicking \"hide\" applies styles to turn off visibility for `poi.business` and `transit` features. Clicking \"show\" reverts to default styles, showing these elements. The sample code uses JavaScript, HTML, and CSS, with a TypeScript version also provided.\n"]]

Web Proxy Viewer  |  New URL  |  Original Page