2012-06-16 23 views
5

Me enfrenta a un comportamiento extraño de google maps infobox. Ajusté maxWidth en 0 para permitir que el tamaño del cuadro de información se ajuste al contenido, pero siempre obtengo un cuadro de información de 236px.Google maps infobox - maxWidth

var infobox = new InfoBox({ 
    maxWidth:0 
    ,pixelOffset: new google.maps.Size(5, 10) 
    ,isHidden:false 
    ,closeBoxURL:"" 
    ,pane: "floatPane" 
    ,enableEventPropagation: false 
    ,Zindex: null 
}); 

Si ajusto el ancho del cuadro de información en el archivo css como se muestra a continuación, obtengo el mismo tamaño en cada cuadro de información.

.infobox {width: 500px;} 

Lo que estoy haciendo mal? ¿Alguna idea de cómo resolver esto?

+4

Resuelto usando (white-space: nowrap;) en el archivo css. – user1460038

Respuesta

2

También puede utilizar el objeto boxStyle en el InfoBoxOptions

boxStyle: { 
     whiteSpace: "nowrap" 
} 
1

me enfrentaba a un problema similar, por lo que recuperada la anchura y la altura óptima dinámicamente y luego configurar mis dimensiones cuadro de información en consecuencia. Aquí hay una función jQuery y la aplicación de la función que debería resolver este problema. Siento que el API es realmente decepcionante en esto.

getInfoBoxDimensions: function(content) { 
    var sensor = $("<div>").html(content); 
    $(sensor).appendTo("body").css({"position" : "absolute", "left" : "-900px"}); 
    var width = $(sensor).width(); 
    var height = $(sensor).height(); 
    $(sensor).remove(); 
    return new Array(width, height); 
}, 

Ahora se puede agarrar la altura y la anchura del contenido html con la siguiente:

var infoBoxDimensions = getInfoBoxDimensions(info_box_html); 

y establecer su caja de información utilizando la siguiente:

var ib = new InfoBox({ 
    content : info_box_html, 
    boxStyle : { 
      width : infoBoxDimensions[0] + "px", 
      height : infoBoxDimensions[1] + "px" 
    }, 
    .... 
    .... 
}); 

Su info_box_html debe tener su estilo establecer en "bloque en línea". De forma predeterminada, un elemento de bloque tendrá un ancho del 100%, solo queremos el ancho exacto de nuestro contenido, y inline-block lo hará por nosotros.

la esperanza de que le ayude,

+0

Agregar el div a la ventana solo para obtener el ancho y luego eliminar es una mala idea – fridgerator

+0

Para obtener información completa de html, ¿tiene una mejor manera? Establecer whitespace nowrap no es una solución, todo para contenido más elaborado, especialmente contenido con imágenes, html y contenido de varias líneas. Google Maps, AFAIK, debe tener un ancho y un alto, o lo configura automáticamente, que no es lo que queremos aquí. –

0

no saben cómo "correcta" esta solución, pero aquí va:

acaba de establecer la anchura y la altura de la caja de información envoltorio de Google en Auto y añade importantes para prevenir Google JS de cambiar su tamaño:

.gm-style-iw { 
    width: auto !important; 
    height: auto !important; 
    div { 
     width: auto !important; 
     height: auto !important; 
    } 
}