Create markers with HTML

You can use custom HTML and CSS to create markers with high visual impact, that can feature interactivity and animation. All Marker3DElement instances are added to the DOM as HTML elements, which you can access using the Marker3DElement property, and manipulate in the same way as any other DOM element.

Custom HTML markers offer lower performance than standard 3D markers. For applications with large datasets, standard markers are strongly encouraged to ensure optimal performance.

CSS

 @ 
 keyframes 
  
 marker-bounce 
  
 { 
  
 0 
 % 
  
 { 
  
 transform 
 : 
  
 translateY 
 ( 
 0 
 ); 
  
 } 
  
 30 
 % 
  
 { 
  
 transform 
 : 
  
 translateY 
 ( 
 -12 
 px 
 ); 
  
 } 
  
 55 
 % 
  
 { 
  
 transform 
 : 
  
 translateY 
 ( 
 -5 
 px 
 ); 
  
 } 
  
 75 
 % 
  
 { 
  
 transform 
 : 
  
 translateY 
 ( 
 -10 
 px 
 ); 
  
 } 
  
 100 
 % 
  
 { 
  
 transform 
 : 
  
 translateY 
 ( 
 -8 
 px 
 ); 
  
 } 
 } 
 html 
 , 
 gmp-map-3d 
  
 { 
  
 height 
 : 
  
 100 
 % 
 ; 
 } 
 html 
 , 
 body 
  
 { 
  
 height 
 : 
  
 100 
 % 
 ; 
  
 margin 
 : 
  
 0 
 ; 
  
 padding 
 : 
  
 0 
 ; 
 } 
 : 
 root 
  
 { 
  
 --google-blue 
 : 
  
 #1a73e8 
 ; 
  
 --google-gray 
 : 
  
 #3c4043 
 ; 
  
 --google-silver 
 : 
  
 #dadce0 
 ; 
  
 --google-white 
 : 
  
 #ffffff 
 ; 
 } 
 . 
 custom-marker 
  
 { 
  
 display 
 : 
  
 inline-flex 
 ; 
  
 align-items 
 : 
  
 center 
 ; 
  
 justify-content 
 : 
  
 center 
 ; 
  
 padding 
 : 
  
 8 
 px 
  
 16 
 px 
 ; 
  
 background-color 
 : 
  
 var 
 ( 
 --google-white 
 ); 
  
 color 
 : 
  
 var 
 ( 
 --google-blue 
 ); 
  
 border 
 : 
  
 1 
 px 
  
 solid 
  
 var 
 ( 
 --google-silver 
 ); 
  
 border-radius 
 : 
  
 20 
 px 
 ; 
  
 font-family 
 : 
  
 'Google Sans' 
 , 
  
 'Roboto' 
 , 
  
 Arial 
 , 
  
 sans-serif 
 ; 
  
 font-size 
 : 
  
 14 
 px 
 ; 
  
 font-weight 
 : 
  
 600 
 ; 
  
 box-shadow 
 : 
  
 0 
  
 4 
 px 
  
 6 
 px 
  
 rgba 
 ( 
 60 
 , 
  
 64 
 , 
  
 67 
 , 
  
 0.1 
 ), 
  
 0 
  
 1 
 px 
  
 3 
 px 
  
 rgba 
 ( 
 60 
 , 
  
 64 
 , 
  
 67 
 , 
  
 0.2 
 ); 
  
 white-space 
 : 
  
 nowrap 
 ; 
  
 position 
 : 
  
 relative 
 ; 
  
 cursor 
 : 
  
 default 
 ; 
  
 transition 
 : 
  
 background-color 
  
 0.3 
 s 
  
 ease-in-out 
 , 
  
 box-shadow 
  
 0.3 
 s 
  
 ease-in-out 
 ; 
  
 user-select 
 : 
  
 none 
 ; 
 } 
 . 
 custom-marker 
 : 
 hover 
  
 { 
  
 background-color 
 : 
  
 #f8f9fa 
 ; 
  
 box-shadow 
 : 
  
 0 
  
 8 
 px 
  
 16 
 px 
  
 rgba 
 ( 
 60 
 , 
  
 64 
 , 
  
 67 
 , 
  
 0.2 
 ), 
  
 0 
  
 2 
 px 
  
 4 
 px 
  
 rgba 
 ( 
 60 
 , 
  
 64 
 , 
  
 67 
 , 
  
 0.25 
 ); 
  
 animation 
 : 
  
 marker 
 - 
 bounce 
  
 0.5 
 s 
  
 ease-out 
  
 forwards 
 ; 
 } 
 . 
 custom-marker 
 :: 
 after 
  
 { 
  
 content 
 : 
  
 '' 
 ; 
  
 position 
 : 
  
 absolute 
 ; 
  
 top 
 : 
  
 100 
 % 
 ; 
  
 left 
 : 
  
 50 
 % 
 ; 
  
 transform 
 : 
  
 translateX 
 ( 
 -50 
 % 
 ); 
  
 width 
 : 
  
 0 
 ; 
  
 height 
 : 
  
 0 
 ; 
  
 border-left 
 : 
  
 8 
 px 
  
 solid 
  
 transparent 
 ; 
  
 border-right 
 : 
  
 8 
 px 
  
 solid 
  
 transparent 
 ; 
  
 border-top 
 : 
  
 8 
 px 
  
 solid 
  
 var 
 ( 
 --google-silver 
 ); 
  
 transition 
 : 
  
 border-top-color 
  
 0.2 
 s 
  
 ease-in-out 
 ; 
 } 
 . 
 custom-marker 
 :: 
 before 
  
 { 
  
 content 
 : 
  
 '' 
 ; 
  
 position 
 : 
  
 absolute 
 ; 
  
 top 
 : 
  
 99 
 % 
 ; 
  
 left 
 : 
  
 50 
 % 
 ; 
  
 transform 
 : 
  
 translateX 
 ( 
 -50 
 % 
 ); 
  
 width 
 : 
  
 0 
 ; 
  
 height 
 : 
  
 0 
 ; 
  
 border-left 
 : 
  
 7 
 px 
  
 solid 
  
 transparent 
 ; 
  
 border-right 
 : 
  
 7 
 px 
  
 solid 
  
 transparent 
 ; 
  
 border-top 
 : 
  
 7 
 px 
  
 solid 
  
 var 
 ( 
 --google-white 
 ); 
  
 z-index 
 : 
  
 1 
 ; 
  
 transition 
 : 
  
 border-top-color 
  
 0.2 
 s 
  
 ease-in-out 
 ; 
 } 
 . 
 custom-marker 
 : 
 hover 
 :: 
 after 
  
 { 
  
 border-top-color 
 : 
  
 #cacdd2 
 ; 
 } 
 . 
 custom-marker 
 : 
 hover 
 :: 
 before 
  
 { 
  
 border-top-color 
 : 
  
 #f8f9fa 
 ; 
 } 
  

HTML

<html>
    <head>
        <title>3D Marker HTML</title>
        <link rel="stylesheet" type="text/css" href="./style.css" />
    </head>
    <body>
        <gmp-map-3d center="40.7489,-73.9680,0" heading="315" tilt="65" range="800" mode="SATELLITE">
            <gmp-marker position="40.7489,-73.9680" title="UN Headquarters">
                <div class="custom-marker">United Nations Secretariat Building</div>
            </gmp-marker>
        </gmp-map-3d>

        <script
            async
            src="https://maps.googleapis.com/maps/api/js?key=AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8&v=beta&libraries=maps3d"></script>
    </body>
</html>  

Try Sample

Simple HTML marker

The following sample shows how to create a basic, custom marker:

 < html 
>
< head 
>  
< title>3D 
  
 Map 
  
 - 
  
 Declarative 
< / 
 title 
>  
< style 
>  
 html 
 , 
  
 body 
  
 { 
  
 height 
 : 
  
 100 
 % 
 ; 
  
 margin 
 : 
  
 0 
 ; 
  
 padding 
 : 
  
 0 
 ; 
  
 } 
  
 gmp 
 - 
 map 
 - 
 3 
 d 
  
 { 
  
 height 
 : 
  
 100 
 % 
 ; 
  
 } 
  
< / 
 style 
>
< /head 
>
< body 
>  
< gmp 
 - 
 map 
 - 
 3 
 d 
  
 center 
 = 
 "37.4239163, -122.0947209, 0" 
  
 tilt 
 = 
 "67.5" 
  
 range 
 = 
 "1000" 
  
 mode 
 = 
 "hybrid" 
>  
< gmp 
 - 
 marker 
 - 
 3 
 d 
  
 position 
 = 
 "37.4239163, -122.0947209,50" 
  
 altitude 
 - 
 mode 
 = 
 "absolute" 
  
 extruded 
 = 
 "true" 
  
 label 
 = 
 "Basic Marker" 
>< / 
 gmp 
 - 
 marker 
 - 
 3 
 d 
>  
< / 
 gmp 
 - 
 map 
 - 
 3 
 d 
>  
< script 
  
 async 
  
 src 
 = 
 "https://maps.googleapis.com/maps/api/js?key=YOUR_KEY&v=beta&libraries=maps3d" 
>< / 
 script 
>
< /body 
>
< /html 
> 

Interactive marker

This example shows creating an interactive marker using HTML.

 < html 
>  
< head 
>  
< title>Pure 
  
 HTML 
  
 Interactive 
  
 Marker 
  
 Demo 
< / 
 title 
>  
< style 
>  
 html 
 , 
  
 body 
  
 { 
  
 height 
 : 
 100 
 % 
 ; 
  
 margin 
 : 
  
 0 
 ; 
  
 padding 
 : 
  
 0 
 ; 
  
 } 
  
 gmp 
 - 
 map 
 - 
 3 
 d 
  
 { 
  
 height 
 : 
  
 400 
 px 
 ; 
  
 width 
 : 
  
 800 
 px 
 ; 
  
 } 
  
< / 
 style 
>  
< / 
 head 
>  
< body 
>  
< gmp 
 - 
 map 
 - 
 3 
 d 
  
 center 
 = 
 "37.819852,-122.478549" 
  
 tilt 
 = 
 "75" 
  
 range 
 = 
 "2000" 
  
 heading 
 = 
 "330" 
  
 mode 
 = 
 "hybrid" 
>  
< gmp 
 - 
 marker 
 - 
 3 
 d 
 - 
 interactive 
  
 position 
 = 
 "37.819852,-122.478549,100" 
>< / 
 gmp 
 - 
 marker 
 - 
 3 
 d 
 - 
 interactive 
>  
< / 
 gmp 
 - 
 map 
 - 
 3 
 d 
>  
< script 
  
 async 
  
 src 
 = 
 "https://maps.googleapis.com/maps/api/js?key=YOUR_KEY&v=alpha&libraries=maps3d" 
>  
< / 
 script 
>  
< / 
 body 
>
< /html 
> 
Create a Mobile Website
View Site in Mobile | Classic
Share by: