Además de las excelentes respuestas anteriores, permítanme agregar mi propia experiencia. Hace un año y medio decidí que quería usar OpenLayers (OL) en mi proyecto de maestría y me propuse aprenderlo. He estado haciendo programación y elaboración de mapas digitales como parte de mi trabajo como arqueólogo desde principios de la década de 1980, y he sido usuario de ArcGIS durante 15 años. Estoy feliz de haber elegido OL para mi proyecto, pero no siempre fue fácil aprenderlo. Algunas cosas no eran obvias y se aprendían solo por ensayo y error. Entonces, tengo algunos consejos para principiantes.
Mi viaje aprendiendo OL realmente comenzó cuando me inscribí en una cuenta de estantería de 5 ranuras en Safari Books Online por $ 10 / mes USD. Quería revisar libros antes de comprar, y pocas tiendas que uno puede visitar tienen libros de computadora relacionados con SIG. Ahora hay tres libros en OL 2. Un libro nuevo de 58 páginas llamado Instant OpenLayers Starter por Di Lorenzo y Allegri (abril de 2013) es un buen comienzo rápido, pero los dos primeros libros y sus ejemplos de código (disponibles en la web del editor sitio, junto con un capítulo de muestra gratis de cada libro) fueron buenos recursos:
- OpenLayers 2.10: Guía para principiantes por Erik Hazzard (marzo de 2011)
- OpenLayers Cookbook por Antonio Santiago Perez (agosto de 2012)
Debido a frustraciones ocasionales sobre css y la compatibilidad del navegador, también terminé aprendiendo un framework JavaScript. Elijo Dojo porque esto es lo que Pérez usó en su libro. Modern Dojo (Dojo 1.7+) es un enfoque significativamente diferente de las versiones anteriores, utilizando un formato de definición de módulo asíncrono (AMD). La forma de hacer todo cambió. No entendí que este excelente libro utiliza una versión anterior a 1.7 de Dojo que quedó obsoleta 9 meses antes de que el libro fuera publicado en agosto de 2012. Esri continuó usando el Dojo anterior a 1.7 en su API JavaScript ArcGIS hasta que se modernizó en junio de 2012 , y este fue un cambio doloroso para muchos desarrolladores de ArcGIS Javascript.
Para comprender cuán mal respaldado está Dojo, aparte de un libro escrito en 2010 sobre Dojo 1.3, la mayoría de los libros se escribieron en 2007 y 2008. No hay libros publicados para Modern Dojo: debe aprender de los recursos en línea, casi todos que están en su sitio web. Básicamente, para trabajar con los ejemplos en el libro de Pérez, debe saber lo suficiente sobre JavaScript para ignorar los bits de Dojo y mover los ejemplos a JavaScript simple o al marco de su elección.
En retrospectiva, desearía haber ido con el marco ExtJS y GeoExt. ExtJS es gratuito si su proyecto es de código abierto, y dado que muchas empresas pagan felizmente por una versión compatible, pueden permitirse el lujo de pasar tiempo en tutoriales y documentación completa del sitio web.
Aprendo mejor trabajando con / hackeando ejemplos. Los desarrolladores de OpenLayers tienen esta misma filosofía, ya que la documentación principal a la que apuntan para aprender es examinar los ejemplos. Sin embargo, algunos ejemplos OL en su sitio web y en otros lugares tienen problemas que pueden hacer tropezar a los principiantes. (Vea abajo.)
La dependencia de ejemplos como documentación también significa que el usuario no tiene la sensación de un buen flujo de trabajo para desarrollar un mapa web. Esto puede llevar a que los mapas se sientan incompletos; por ejemplo, pueden carecer de personalizaciones CSS para la interfaz de usuario de los mapas y "verse y sentirse". Anular el css OL con personalizaciones se siente desalentador para el principiante, pero Firebug puede ayudarlo a encontrar los nombres de elementos que necesita anular. La falta de una sensación de un flujo de trabajo aceptado también puede conducir a la creación de Frankencode, ya que los usuarios calzan las características de su código cuando encuentran que lo quieren.
Esto me lleva al último elemento que siento que falta en la documentación del sitio OL, una sensación de "mejores prácticas" para los mapas OL. ¿Hay una mejor manera de organizar mi código para que sea modular y robusto? ¿Cuáles son las dificultades con los cierres de JavaScript y los objetos OL? ¿Dónde debo declarar mis estilos? Y así.
Además de los diversos archivos obsoletos en el Wiki, hay dos problemas generales que un principiante debe tener en cuenta al aprender de los ejemplos OL oficiales y los documentos API. Primero, no hay una organización para la página de ejemplos de desarrollo OL en el sitio web OL. Simplemente presenta el feed del archivo xml en ese directorio (example-list.xml) de los ejemplos (207 de ellos al 13 de febrero de 2014) y ordena las filas alfabéticamente por nombre de archivo en una cuadrícula. Los ejemplos más avanzados se mezclan con los básicos. Puede buscar los ejemplos por palabra clave, pero muchos de los ejemplos carecen de palabras clave y la función de búsqueda incluye contenido y título de página en la búsqueda, no solo palabras clave. Los resultados se devuelven con el mayor número de términos de búsqueda que coinciden primero seguidos de la frecuencia de palabras. Solo uno de los términos de búsqueda debe coincidir para aparecer en los resultados. La página UserRecipes en OL Wiki enumera alrededor de 90 ejemplos organizados por categoría, y esta categorización es una ayuda. De estos, 66 son enlaces en vivo a los ejemplos en la página de ejemplos y el resto son enlaces malos a ejemplos eliminados.
En segundo lugar, existen básicamente dos versiones de la documentación de la API que parecen ser las mismas a primera vista. La API oficial se encuentra en un directorio llamado / apidocs y la biblioteca de desarrolladores, pero volátil, está en un directorio llamado / docs. Las URL son iguales de lo contrario. (También hay versiones troncales). Simplemente edite la dirección de la página para ver la otra versión. El Wiki señala que no se debe confiar en la biblioteca del desarrollador ya que las propiedades, funciones, etc. podrían eliminarse de la biblioteca en cualquier momento. Con OpenLayers 3 cerca de la realidad (está disponible en versión beta y hay un libro publicado ahora), sospecho que no cambiará demasiado en OL 2 en el futuro. El foco ahora está en OL 3.
En general, considero que las páginas de la API OL son demasiado esqueléticas, a menudo carecen de explicaciones o ejemplos ilustrativos, especialmente para alguien acostumbrado a bibliotecas con documentación API más completa. La forma en que se presenta no permite obtener una imagen clara del objeto del que hereda.
De los ejemplos OL en la web en general, muchos usan objetos o sintaxis que han quedado en desuso porque han sido reemplazados por versiones mejoradas. Por ejemplo, Layer.Vector es ahora la forma preferida de dibujar marcadores, ya que Layer.Marker está en desuso en la versión 3. Examine el archivo deprecated.js para asegurarse de que no está utilizando objetos que están saliendo. O, al menos, tenga en cuenta que si actualiza su código a OL 3, deberá cambiar esto.
Además del taller Boundless OpenLayers vinculado por Julien-Samuel Lacroix arriba, IBM tiene un tutorial genial, aunque de tres años, que usa OpenLayers, MapServer, Google Gears y jQuery para construir una aplicación web completa de SIG: reunir datos con OpenLayers : Uso de datos de múltiples fuentes divergentes en mapas web
Además, echa un vistazo a esta publicación útil sobre el estilo del conmutador de capas
Busca en Google las palabras OpenLayers y jsFiddle para obtener algunos ejemplos de violines OL. El resultado del sitio techslides es una página que enumera algunos de estos.
Por último, tenga en cuenta que las imágenes del mapa en la mayoría de los ejemplos provienen de servidores OpenStreetMap (OSM) y estas se desactivan de vez en cuando, planificadas o no, y obtendrá mosaicos de color rosa en su lugar. A veces pensarás que arruinaste tu código. Puede verificar el estado de la plataforma en el wiki de OpenStreetMap.