2009-06-29 31 views
22

Me gustaría mostrar una etiqueta de texto al lado de los marcadores en los mapas de Google. He usado Virtual Earth antes y estoy empezando a usar Google Maps. Intenté configurar la propiedad del Título, pero eso solo cambia el texto del giro.¿Cómo mostrar una etiqueta al lado de un marcador para Google Maps?

¿Hay alguna manera de mostrar una pequeña línea de texto debajo de un marcador que permanecerá allí mientras el usuario amplía, desplaza y usa el mapa?

¡Gracias de antemano!

+0

Creo que puedo haber encontrado una respuesta ... el sitio parece estar caído pero Google tiene un caché. Voy a probar esto y ver cómo funciona. http://74.125.95.132/search?q=cache:http://googlemapsbook.com/2007/01/22/extending-gmarker/ –

Respuesta

13

Hay una buena clase de etiqueta here, aunque deberá agregarla junto con los marcadores.

+0

Este tipo tiene algunas cosas buenas :) – RedBlueThing

+0

La clase de ELabel a la que me apuntó funciona bastante bien Increíble sitio de Google Maps por cierto, no sé cómo no lo encontré en mis búsquedas originales. ¡Gracias! –

+4

Eso es práctico, aunque no funciona con v3 de la API JavaScript de Google Maps. Además, si aleja lo suficiente, las etiquetas se superponen en una sopa ilegible. Aún así, la mejor oferta que he encontrado hasta ahora. –

25

Para Google Maps JavaScript API v3, echa un vistazo a the examples here.

Source code available in normal and minimised forms.

+1

Versión 1.1.1 de MarkerWithLabel ha sido lanzado con algunas correcciones. –

+1

Para ver un ejemplo de esta API en uso, consulte un sitio web que desarrollé (siga haciendo zoom en el mapa y verá primero los marcadores, luego las etiquetas a medida que se acerca): http://diveseven.com/atlas –

+0

Buena ..Pero es muy lento en comparación con los marcadores normales, cuando el número de marcadores en algunos miles ... ¿Hay alguna alternativa a este problema? @Drew Noakes. –

0

Incluso esta pregunta ha sido respondida He encontrado this resource, que creo que es una buena solución para este problema y podría ser útil. Además, se puede encontrar una solución similar here.

+0

Los enlaces que compartió son para Android MapView, no para Google Maps. – draconis

0

Una alternativa al uso de la biblioteca js es simplemente crear un icono .png que incluirá su texto. Suena tonto, pero puede usar algún servicio externo para esto (como this one).

Cargue su icono y obtenga un enlace a cambio. Si agrega un poco de texto a la URL de los enlaces, devolverá su ícono con ese texto procesado en él.

6

Si lo que desea es mostrar la etiqueta debajo del marcador, a continuación, puede ampliar los mapas de Google Marcador para agregar un método de selección para la etiqueta y se puede definir el objeto de etiqueta mediante la extensión de los mapas de Google OverlayView como esto ..

demostración: jsFiddle

<script type="text/javascript"> 
    var point = { lat: 22.5667, lng: 88.3667 }; 
    var markerSize = { x: 22, y: 40 }; 


    google.maps.Marker.prototype.setLabel = function(label){ 
     this.label = new MarkerLabel({ 
      map: this.map, 
      marker: this, 
      text: label 
     }); 
     this.label.bindTo('position', this, 'position'); 
    }; 

    var MarkerLabel = function(options) { 
     this.setValues(options); 
     this.span = document.createElement('span'); 
     this.span.className = 'map-marker-label'; 
    }; 

    MarkerLabel.prototype = $.extend(new google.maps.OverlayView(), { 
     onAdd: function() { 
      this.getPanes().overlayImage.appendChild(this.span); 
      var self = this; 
      this.listeners = [ 
      google.maps.event.addListener(this, 'position_changed', function() { self.draw(); })]; 
     }, 
     draw: function() { 
      var text = String(this.get('text')); 
      var position = this.getProjection().fromLatLngToDivPixel(this.get('position')); 
      this.span.innerHTML = text; 
      this.span.style.left = (position.x - (markerSize.x/2)) - (text.length * 3) + 10 + 'px'; 
      this.span.style.top = (position.y - markerSize.y + 40) + 'px'; 
     } 
    }); 
    function initialize(){ 
     var myLatLng = new google.maps.LatLng(point.lat, point.lng); 
     var gmap = new google.maps.Map(document.getElementById('map_canvas'), { 
      zoom: 5, 
      center: myLatLng, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }); 
     var myMarker = new google.maps.Marker({ 
      map: gmap, 
      position: myLatLng, 
      label: 'Hello World!', 
      draggable: true 
     }); 
    } 
</script> 
<style> 
    .map-marker-label{ 
     position: absolute; 
    color: blue; 
    font-size: 16px; 
    font-weight: bold; 
    } 
</style> 

Esto funcionará.

+1

¿Cómo eliminamos esta etiqueta del mapa? La eliminación del marcador no elimina la etiqueta del mapa. – YashG99

+0

Para eliminar la etiqueta del marcador, use este 'marcador.label.span.remove()' – shana

+0

¡gracias, trabaje como un amuleto! –

Cuestiones relacionadas