Actualmente estoy tratando de aprender más acerca de OpenLayers, y me voy contra de rendimiento o comportamiento de las cuestiones que yo no esperaría a ver. Para elaborar...
He combinado este ejemplo para generar un montón de puntos aleatorios con este ejemplo en resaltando / cambiar los iconos de funciones en la selección.
El resultado está disponible en este JSFiddle.
La (muy básico) de la aplicación prioriza el Lienzo representador, de modo que los puntos de la capa está definida de la siguiente forma:
var layer = new OpenLayers.Layer.Vector('points', {renderers: ['Canvas', 'SVG', 'VML'],
styleMap: new OpenLayers.StyleMap({
"default": new OpenLayers.Style(OpenLayers.Util.applyDefaults({
externalGraphic: "img/marker-green.png",
graphicOpacity: 1,
rotation: 0,
pointRadius: 10
}, OpenLayers.Feature.Vector.style["default"])),
"select": new OpenLayers.Style({
externalGraphic: "img/marker-blue.png"
})
})});
El Lienzo renderer es bueno porque el zoom y el encuadre funciona bien con miles de puntos (a diferencia de SVG) pero al hacer clic / la selección de características es mucho más lento que el formato SVG. Me sorprendió ver que cuentan con todos los iconos se vuelve a dibujar antes de la función seleccionada del icono de cambios (marcador azul.png). Esto es especialmente evidente en Firefox, pero es menos notable en Chrome y demasiado rápido para verlo en IE9.
Esta cuestión, por LO que sugiere que podría haber un problema con la forma en OpenLayers es la interacción con el Lienzo, pero por desgracia no sé lo suficiente acerca de HTML5 o OpenLayers (todavía) para estar seguro.
¿Alguien tiene experiencia con OpenLayers / Lienzo representador? Estoy interesado en alguna manera de acelerar la selección de características cuando hay un montón de características - si es que el tiempo necesario para averiguar qué función seleccionada o simplemente cambiar la función seleccionada icono de la misma.
Cualquier ayuda la agradezco mucho.