Javascript required
Skip to content Skip to sidebar Skip to footer

Google Maps Draw Text on Map

Is it possible to write custom text on Google Maps API v3?

To show custom text you need to create a custom overlay. Below is an example adapted from official Google documentation. You could also use this library for more "stylish" info windows

              <html>  <head>   <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">   </script>   <script>     //adapded from this example http://code.google.com/apis/maps/documentation/javascript/overlays.html#CustomOverlays      //text overlays     function TxtOverlay(pos, txt, cls, map) {        // Now initialize all properties.       this.pos = pos;       this.txt_ = txt;       this.cls_ = cls;       this.map_ = map;        // We define a property to hold the image's       // div. We'll actually create this div       // upon receipt of the add() method so we'll       // leave it null for now.       this.div_ = null;        // Explicitly call setMap() on this overlay       this.setMap(map);     }      TxtOverlay.prototype = new google.maps.OverlayView();        TxtOverlay.prototype.onAdd = function() {        // Note: an overlay's receipt of onAdd() indicates that       // the map's panes are now available for attaching       // the overlay to the map via the DOM.        // Create the DIV and set some basic attributes.       var div = document.createElement('DIV');       div.className = this.cls_;        div.innerHTML = this.txt_;        // Set the overlay's div_ property to this DIV       this.div_ = div;       var overlayProjection = this.getProjection();       var position = overlayProjection.fromLatLngToDivPixel(this.pos);       div.style.left = position.x + 'px';       div.style.top = position.y + 'px';       // We add an overlay to a map via one of the map's panes.        var panes = this.getPanes();       panes.floatPane.appendChild(div);     }     TxtOverlay.prototype.draw = function() {           var overlayProjection = this.getProjection();          // Retrieve the southwest and northeast coordinates of this overlay         // in latlngs and convert them to pixels coordinates.         // We'll use these coordinates to resize the DIV.         var position = overlayProjection.fromLatLngToDivPixel(this.pos);           var div = this.div_;         div.style.left = position.x + 'px';         div.style.top = position.y + 'px';          }       //Optional: helper methods for removing and toggling the text overlay.       TxtOverlay.prototype.onRemove = function() {       this.div_.parentNode.removeChild(this.div_);       this.div_ = null;     }     TxtOverlay.prototype.hide = function() {       if (this.div_) {         this.div_.style.visibility = "hidden";       }     }      TxtOverlay.prototype.show = function() {       if (this.div_) {         this.div_.style.visibility = "visible";       }     }      TxtOverlay.prototype.toggle = function() {       if (this.div_) {         if (this.div_.style.visibility == "hidden") {           this.show();         } else {           this.hide();         }       }     }      TxtOverlay.prototype.toggleDOM = function() {       if (this.getMap()) {         this.setMap(null);       } else {         this.setMap(this.map_);       }     }         var map;      function init() {       var latlng = new google.maps.LatLng(37.9069, -122.0792);       var myOptions = {         zoom: 4,         center: latlng,         mapTypeId: google.maps.MapTypeId.ROADMAP       };       map = new google.maps.Map(document.getElementById("map"), myOptions);        var marker = new google.maps.Marker({         position: latlng,         map: map,         title: "Hello World!"       });        customTxt = "<div>Blah blah sdfsddddddddddddddd ddddddddddddddddddddd<ul><li>Blah 1<li>blah 2 </ul></div>"       txt = new TxtOverlay(latlng, customTxt, "customBox", map)      }   </script>   <style>     .customBox {       background: yellow;       border: 1px solid black;       position: absolute;     }   </style> </head>  <body onload="init()">   <div id="map" style="width: 600px; height: 600px;">   </div> </body>  </html>            

By far the easiest way to add a Text Overlay is to use the MapLabel class from https://github.com/googlemaps/js-map-label

            var mapLabel = new MapLabel({   text: 'Test',   position: new google.maps.LatLng(50,50),   map: map,   fontSize: 20,   align: 'right' });                      

It the text is static, you can use a marker and an image :

            var label = new google.maps.Marker({     position: new google.maps.LatLng(50,50),     map: map,     icon: "/images/mytextasanimage.png" });                      

Google Maps Draw Text on Map

Source: https://newbedev.com/is-it-possible-to-write-custom-text-on-google-maps-api-v3