2011-07-05 12 views
16

¿Hay una manera de añadir un infoWindow a un círculo creado por google.maps.CircleGoogle Maps v3 adición de una ventana de información a un círculo

algo como esto

var circ = new google.maps.Circle({ 
      center:latlng, 
      clickable:false, 
      fillColor:colors[count], 
      fillOpacity:0.3, 
      map:map, 
      radius:radius, 
      strokeColor:colors[count], 
      strokeOpacity:0.3}); 

y

//create info window 
var infoWindow= new google.maps.InfoWindow({ 
    content: "Your info here" 
    }); 

//add a click event to the circle 
google.maps.event.addListener(circ, 'click', function(){ 
//call the infoWindow 
infoWindow.open(map, circ); 
}); 

o alternativamente, hay una manera de crear un marcador invisible en el centro del círculo que se puede hacer clic para acceder a una ventana de información

+0

o, alternativamente, ¿hay una manera de crear un marcador invisible en el centro del círculo que se puede hacer clic para acceder a una infoWindow – trs

Respuesta

37

puede tener una ventana de información para la superposición de su círculo. Pero tienes que ajustar ligeramente tu código.

En primer lugar, es necesario establecer clickable=true para su superposición circular (de lo contrario, los eventos del círculo no se procesan).

Luego tiene que cambiar el código del oyente de clic. Poner el círculo como un parámetro para la función abrir() no tiene ningún efecto (el círculo no es el tipo correcto de MVCObject, para la explicación lee la documentación de la función InfoWindow .open()). Para mostrar la ventana de información, debe indicar su posición, p. Ej. posición del evento clic, centro del círculo, ....

El código es entonces

google.maps.event.addListener(circ, 'click', function(ev){ 
    infoWindow.setPosition(ev.latLng); 
    infoWindow.open(map); 
}); 

o

google.maps.event.addListener(circ, 'click', function(ev){ 
    infoWindow.setPosition(circ.getCenter()); 
    infoWindow.open(map); 
}); 

respuesta a tu comentario: Se puede crear una truco con un marcador invisible (simplemente coloque una imagen totalmente transparente como el icono del marcador), pero preferiría la solución con la superposición de Círculo.

+0

¿qué representa ev? y ¿hay alguna manera de que un indicador haga clic en el círculo como la opción "título" en un marcador? – trs

+0

ev es MouseEvent (http://code.google.com/apis/maps/documentation/javascript/reference.html #MouseEvent). La superposición de círculos no tiene ningún indicador de texto. Pero cuando se puede hacer clic es verdadero, el cursor cambia cuando se coloca sobre el círculo. Crear un indicador de texto no es tan simple: lo haría con una superposición personalizada y el detector de eventos con mouseover de círculo. – Tomik

+0

He intentado este método pero no funcionó. ¡Recibo el evento click pero no puedo abrir la ventana InfoWindow! ¿Tienes alguna otra pista? – Future2020

2

para ajustar la ventana de información en donde ratón hace clic

google.maps.event.addListener(circ, 'click', function(ev){ 
    infoWindow.setPosition(ev.latLng); //<-- ev matches what you put^(mouse event) 
    infoWindow.open(map); 
}); 
Cuestiones relacionadas