¿Es posible escribir texto personalizado en Google Maps API v3, al lado del marcador? o solo puedo usar la ventana de información para hacer eso?¿Es posible escribir texto personalizado en Google Maps API v3?
Respuesta
Para mostrar texto personalizado que necesita para crear una plantilla personalizada. A continuación se muestra un ejemplo adaptado de la documentación oficial de Google. También es posible usar this library para más "elegantes" ventanas de información
<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>
Esto es asombroso. Me rasco la cabeza, preguntándome por qué Google no incluyó esto por defecto. –
¿Hay alguna forma de cambiar el tamaño del texto de la etiqueta? Agregar 'font-size: 30px' al bloque de estilos no parece funcionar. –
¡Funciona como un encanto! Excelente respuesta! –
Con mucho, la forma más fácil de agregar una superposición de texto es utilizar la clase MapLabel
de 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'
});
es el texto es estático, puede utilizar un marcador y una imagen:
var label = new google.maps.Marker({
position: new google.maps.LatLng(50,50),
map: map,
icon: "/images/mytextasanimage.png"
});
De hecho, esto funciona. Muy bien ! – Zl3n
- 1. Google Maps API v3 BrowserIsCompatible
- 2. Google maps API V3 - DirectionsRendererOpciones y contenido personalizado en InfoWindow
- 3. Google Maps API v2 vs Google Maps API v3?
- 4. Google Maps Api v3, icono del clúster personalizado
- 5. Google maps Límite municipal API v3
- 6. Quitar marcador en Google Maps Api v3
- 7. google maps api v3 - streetview más cercano
- 8. Google Maps api V3 marcador de actualización
- 9. jQTouch/google maps tema API v3
- 10. GWT + API de Google Maps v3
- 11. Google maps api v3 iconos predeterminados?
- 12. Google maps api v3 cursores estándar
- 13. google maps v3 API mouseover con polígonos?
- 14. Google Maps Javascript API V3 - ¿Cómo eliminar Custom Control?
- 15. Google Maps API V3 Gray Áreas
- 16. Google Maps API v3: Administrador de dibujos
- 17. Google Maps v3 API - Autocompletar (dirección)
- 18. google maps api v3 no hay etiquetas?
- 19. Google Maps API de JavaScript v3
- 20. Google maps API V3 método fitBounds()
- 21. caja de infowindow personalizada con google maps api v3?
- 22. Google Maps API V3 fromDivPixelToLatLng no es coherente
- 23. ¿Puedo obtener mapas estáticos en Google Maps API V3?
- 24. Mostrar mi ubicación en Google Maps API v3
- 25. marcador animoso en Google Maps v3
- 26. Google Maps Api v3 personalizado InfoWindow - error "google no está definido"
- 27. Google Earth integrado con Google Maps API v3?
- 28. Estilo Google Maps - API Javascript v3 - ¿Esquema en costas?
- 29. Google Maps v3 OverlayView.getProjection()
- 30. ¿Cómo crear una superposición de texto en Google Maps API v3 que no funciona?
parece que no es posible ... como que la única forma es crear una ventana transparente de InfoBox y escribir texto en él ... dime si estoy equivocado. – user198003
¿Puedo agregar texto personalizado (una palabra muy probablemente) en el marcador en la API del mapa estático de google map ..? – Jay