4 votos

OpenLayers renderer en IE8 - etiquetas no visible

He copiado el código fuente de http://openlayers.org/dev/examples/vector-features-with-text.html. Esta dirección funciona bien en IE8.

Pongo el código html de la página como en el webfolder en nuestra red. Abrí esta página desde el sitio local, Pero lo que encontró fue que las etiquetas no eran visibles en IE pero en chrome que parecían buenos.

¿Qué debo hacer para que funcione en IE también? ¿Qué es la prevención de las etiquetas para representar en el IE pero el mismo código funciona desde el sitio web público de arriba. Si usted haga clic derecho y ver el código se puede ver el código de la siguiente manera:

 renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;

        var vectorLayer = new OpenLayers.Layer.Vector("Simple Geometry", {
            styleMap: new OpenLayers.StyleMap({'default':{
                strokeColor: "#00FF00",
                strokeOpacity: 1,
                strokeWidth: 3,
                fillColor: "#FF5500",
                fillOpacity: 0.5,
                pointRadius: 6,
                pointerEvents: "visiblePainted",
                // label with \n linebreaks
                label : "name: ${name}\n\nage: ${age}",

                fontColor: "${favColor}",
                fontSize: "12px",
                fontFamily: "Courier New, monospace",
                fontWeight: "bold",
                labelAlign: "${align}",
                labelXOffset: "${xOffset}",
                labelYOffset: "${yOffset}",
                labelOutlineColor: "white",
                labelOutlineWidth: 3
            }}),
            renderers: renderer
        });

Gracias

Vijay

5voto

Cameron Wright Puntos 21

Me encontré con el tipo de problema. Parece está en VML.js en el método drawText:

la condición no se cumple y así que la etiqueta no se agrega. Sospecho que algunos interfieren de la biblioteca de javascript. de todos modos mi solución sucia es reemplazar el método a través de:

Para el problema no aparece en el ejemplo anterior, creo que no es error de OpenLayers.

3voto

goose1 Puntos 13

Parece que está en VML.js en drawText método

Estoy de acuerdo con eso. Pero como para mí, traté de

if(!label.parentNode) {
    label.appendChild(textbox);
    this.textRoot.appendChild(label);
}

y no ayuda. Así que he cambiado esta línea

textbox.inset = "1px,0px,0px,0px"; 

a este

textbox.inset = "2px,0px,0px,0px"; 

Y los carteles que le hizo visible en IE7, pero un poco desplazado hacia la izquierda, así que he cambiado 2px a 3px en esta línea.

Así que, como se dijo por zamorem:

De todos modos mi sucio solución es reemplazar el método a través de:

OpenLayers.Renderer.VML.prototype.drawText = function() {
    ..copied code with changed textbox.inset ..
}

0voto

Jarrett Meyer Puntos 11147

Vijay,

probablemente "olvidó copiar" estas líneas:

Reemplazar '... /' con la ruta de acceso absoluta (una estimación rápida: 'http://openlayers.org/dev/') y ver si se pone mejor.

0voto

Imp Puntos 375

OpenLayers utiliza SVG para representar las capas. Sin embargo, esto no funciona en IE 8 y mayores. Siempre que se intenta establecer una capa que contiene las etiquetas visibles, me sale un error desconocido en mi JS console. Así que probablemente, esto no es tu culpa (o a ambos nos hizo el mismo error en alguna parte).

Ahora, no estoy seguro de si OpenLayers ofrece otras tecnologías de SVG para dibujar las etiquetas. Sin embargo, SVG funciona bien en IE 9 y las etiquetas se procesan correctamente. Por lo tanto, su aplicación podría aconsejar al usuario actualizar a IE 9. El problema es que IE 9 no está disponible hasta que la Vista y creo que todavía hay muchos usuarios de XP por ahí que no será capaz de hacer la actualización...

Así que mi solución es un hack es decir. Comprobar si el navegador es IE 8 o menos. Si sí, establecer el estilo.etiqueta a null. Entonces, el más feo es la utilización de ventanas emergentes para mostrar el texto. La mejor solución es crear otro superposición - marcadores de capa, donde cada icono de marcador sería un pre-texto representado.

0voto

texai Puntos 178

trate de usar a procesador de vml para este problema... Espero que funciona sin problemas.

Espero te ayuda a...

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X