是否可以在Google Maps API v3上编写自定义文本?

是否可以在标记旁边的Google Maps API v3上编写自定义文本? 或者我可以只使用信息窗口来做到这一点?

要显示自定义文本,您需要创build一个自定义覆盖。 以下是根据官方Google文档修改的示例。 你也可以使用这个库来获得更多“时尚”的信息窗口

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

到目前为止,添加文本覆盖最简单的方法是使用https://github.com/googlemaps/js-map-label中的;MapLabel

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

它的文本是静态的,你可以使用标记和图像:

 var label = new google.maps.Marker({ position: new google.maps.LatLng(50,50), map: map, icon: "http://img.dovov.commytextasanimage.png" });