12 votos

¿Tutorial para OpenLayers?

Necesito crear un mapa web que muestre muchas capas raster. Estoy utilizando mapserver y quiero usar Openlayers, sin embargo no puedo encontrar ningún buen tutorial al respecto. Veo un par de preguntas antiguas (1 y 2) diciendo que no hay una buena documentación. ¿Han cambiado las cosas recientemente?

Me gustaría encontrar un tutorial que enseñe desde lo básico hasta cosas bastante complicadas con buenas explicaciones del código y imágenes/ejemplos de los resultados. Por ahora solo logré hacer el mapa web más simple con mi archivo .map, pero necesito personalizarlo (agregar leyendas, agrupar capas, añadir más controles, incrustar, etc).

13voto

Paul Puntos 21

Además de las excelentes respuestas anteriores, permítanme agregar mi propia experiencia. Hace un año y medio decidí utilizar OpenLayers (OL) en mi proyecto de maestría y me propuse aprenderlo. He estado programando y haciendo mapas digitales como parte de mi trabajo como arqueólogo desde principios de los años 80, y he sido usuario de ArcGIS durante 15 años. Estoy contento de haber elegido OL para mi proyecto, pero no siempre fue un camino fácil aprenderlo. Algunas cosas no eran obvias y las aprendí solo mediante ensayo y error. Así que tengo algunos consejos para principiantes.

Mi aprendizaje de OL realmente comenzó cuando me registré en una cuenta de 5 slots en Safari Books Online por $10 al mes USD. Quería revisar libros antes de comprar, y pocas tiendas a las que se puede visitar tienen libros de computación relacionados con GIS. Actualmente hay tres libros sobre OL 2. Una guía para principiantes de OpenLayers 2.10 de Erik Hazzard (marzo de 2011) y el Cookbook de OpenLayers de Antonio Santiago Pérez (agosto de 2012) fueron buenos recursos:

  • OpenLayers 2.10: Guía para principiantes de Erik Hazzard (marzo de 2011)
  • Cookbook de OpenLayers de Antonio Santiago Pérez (agosto de 2012)

Debido a las frustraciones ocasionales por el css y la compatibilidad con el navegador, terminé aprendiendo un framework de JavaScript también. Elegí Dojo porque esto es lo que Pérez usó en su libro. El Dojo moderno (Dojo 1.7 +) es un enfoque significativamente diferente de las versiones anteriores, utilizando un formato de Definición Asíncrona de Módulos (AMD). La forma de hacer todo cambió. No entendí que este libro por lo demás excelente usa una versión anterior a la 1.7 de Dojo que quedó obsoleta 9 meses antes de la publicación del libro en agosto de 2012. Esri continuó usando el Dojo anterior a la 1.7 en su API de JavaScript ArcGIS hasta la modernización en junio de 2012, y este fue un cambio doloroso para muchos desarrolladores de JavaScript de ArcGIS.

Para entender la poca ayuda que ofrece 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 Dojo Moderno: debes aprender de recursos en línea, la mayoría de los cuales están en su sitio web. Básicamente, para trabajar con los ejemplos del libro de Pérez, necesitas saber lo suficiente sobre JavaScript como para ignorar las partes de Dojo y trasladar los ejemplos a JavaScript puro o a tu framework de preferencia.

En retrospectiva, me hubiera gustado haber optado por el framework de ExtJS y GeoExt. ExtJS es gratuito si tu proyecto es de código abierto, y como muchas empresas pagan felizmente por una versión compatible, pueden permitirse dedicar tiempo a una documentación completa del sitio web y tutoriales.

Aprendo mejor trabajando con / modificando ejemplos. Los desarrolladores de OpenLayers tienen la misma filosofía, ya que la documentación principal que señalan para aprender es examinando los ejemplos. Sin embargo, algunos ejemplos en su sitio web y en otros lugares pueden tener problemas que pueden hacer que los principiantes tropiecen. (Ver más abajo).

La dependencia de ejemplos como documentación también significa que el usuario no tiene una idea clara del flujo de trabajo para desarrollar un mapa web. Esto puede llevar a la creación de mapas que se sienten incompletos, por ejemplo, pueden carecer de personalizaciones de css en la interfaz de usuario del mapa y en su "aspecto y sensación". Sustituir el css de OL con personalizaciones puede parecer abrumador para el principiante, pero Firebug puede ayudarte a encontrar los nombres de los elementos que necesitas modificar. La falta de un sentido de un flujo de trabajo aceptado también puede llevar a la creación de Frankencode, ya que los usuarios ajustan características en su código según lo necesitan.

Esto me lleva al último elemento que siento que falta en la documentación del sitio de OL, un sentido de "mejores prácticas" para los mapas de OL. ¿Existe una mejor manera de organizar mi código para que sea modular y sólido? ¿Cuáles son los riesgos con los cierres de JavaScript y los objetos de OL? ¿Dónde debo declarar mis estilos? Y así sucesivamente.

Además de los varios archivos desactualizados en la Wiki, hay dos problemas generales de los que un principiantes debe ser consciente al aprender de los ejemplos oficiales de OpenLayers y de los documentos de la API. En primer lugar, no hay organización en la página de ejemplos de desarrollo de OL en el sitio web de OL. Simplemente presenta la alimentación del archivo xml en ese directorio (ejemplo-list.xml) de los ejemplos (207 de estos hasta el 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. Puedes 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 coincidentes primero, seguido 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 la Wiki de OL lista alrededor de 90 ejemplos organizados por categoría, y esta categorización es útil. De estos, 66 son enlaces activos a los ejemplos en la página de ejemplos y el resto son enlaces rotos a ejemplos eliminados.

En segundo lugar, hay básicamente dos versiones de la documentación de la API que parecen ser iguales a primera vista. La API oficial está en un directorio llamado /apidocs y la biblioteca de desarrollador de punta, pero volátil, está en un directorio llamado /docs. Las URLs son iguales de otra manera. (También hay versiones de troncales). Simplemente edita la dirección de la página para ver la otra versión. La Wiki señala que no se debe confiar en la biblioteca de desarrollador ya que las propiedades, funciones, etc. podrían eliminarse de la biblioteca en cualquier momento. Con OpenLayers 3 cerca de ser una realidad (ya está disponible en beta y hay un libro al respecto ahora), sospecho que no habrá muchos cambios en OL 2 en el futuro. El enfoque ahora está en OL 3.

En general, encuentro que las páginas de la API de OL son demasiado esqueléticas, a menudo carecen de explicaciones o ejemplos ilustrativos, especialmente para alguien acostumbrado a bibliotecas con documentación de API más completa. La forma en que se presenta no te da una imagen clara del objeto del que está heredando.

De los ejemplos de OL en la web en general, muchos usan objetos o sintaxis que han quedado obsoletos porque han sido reemplazados por versiones mejoradas. Por ejemplo, Layer.Vector es ahora la forma preferida de dibujar marcadores, ya que Layer.Marker está obsoleto en la versión 3. Examina el archivo deprecated.js para asegurarte de que no estás usando objetos que están en desuso. O, al menos, sé consciente de que si actualizas tu código a OL 3, necesitarás hacer este cambio.

Además del taller de Boundless OpenLayers vinculado por Julien-Samuel Lacroix arriba, IBM tiene un tutorial interesante, aunque tiene tres años de antigüedad, que utiliza OpenLayers, MapServer, Google Gears y jQuery para construir una aplicación web de SIG completa: Uniendo datos con OpenLayers: Usando datos de múltiples fuentes divergentes en mapas web

También, echa un vistazo a este útil post sobre cómo estilizar el selector de capas

Busca las palabras OpenLayers y jsFiddle para obtener ejemplos de OpenLayers. El resultado del sitio techslides es una página que lista bastantes de estos.

Por último, ten en cuenta que las imágenes del mapa en la mayoría de los ejemplos son de los servidores de OpenStreetMap (OSM) y estos se caen de vez en cuando, ya sea planificado o no, y obtendrás baldosas rosas en su lugar. A veces pensarás que arruinaste tu código. Puedes verificar el estado de la plataforma en la wiki de OpenStreetMap.

2 votos

Esta es una respuesta detallada agradable. Es una lástima que no tengamos tantas respuestas de este tipo en el sitio.

0 votos

Leta, ¡gracias por la respuesta detallada! Ahora estoy luchando con GeoExt (y ExtJS), y tienen aún más problemas con los tutoriales que OL, sus ejemplos se ven bastante así :)

7voto

Anthony Cramp Puntos 126

Mientras que otros han sugerido buenos tutoriales en línea, permíteme hablarte sobre el libro que me proporcionó una base sólida tan necesaria en OpenLayers.

El libro es: OpenLayers 2.10 Beginner's Guide de Erik Hazzard. Está disponible en Packt Publishers.

Recomendaría mucho este libro, porque trata todas las partes principales de la biblioteca. Comienza desde lo básico y te ayuda lentamente a avanzar hacia las partes complicadas de la API.

2 votos

Está disponible como un libro electrónico aquí por £14.44 se ve excelente.

0 votos

El precio depende del país desde el que accedas. Me está mostrando un precio de aproximadamente $3;

0 votos

Wow, supongo que en Filipinas nos están penalizando. ¡Deberías comprármelo! :-)

6voto

C. Ross Puntos 126

Consulta el taller de OpenLayers de Boundless. Cubre mucho material. El taller está utilizando GeoServer en lugar de MapServer, pero simplemente puedes cambiar la URL del ejemplo a tu servicio WMS de MapServer.

4voto

Athena Puntos 2149

Open Layers es un paquete fantástico, increíblemente flexible, pero le falta documentación para principiantes, aunque tiene mucha documentación detallada para desarrolladores.

Lo que hice cuando comencé fue mirar todos los Ejemplos, elegir los que tenían la funcionalidad que quería, analizar el código y construir la funcionalidad paso a paso, probando a medida que avanzaba. Descubrí que intentar demasiada funcionalidad de una sola vez hacía que fuera más difícil entender los conceptos y resolver problemas.

Luego encontré GIS@SE, que ha sido de gran ayuda en cuestiones específicas, ya sea investigando las preguntas de otras personas o haciendo las mías.

Además, @Julian probablemente te haya dado la mejor opción en términos de tutoriales, son bastante buenos.

0 votos

Gracias por la respuesta, ya he visto estos ejemplos pero no pude encontrar lo que necesito. Así que tendré que programar...

2voto

Konrad Garus Puntos 166

Solo para mencionar, esta página de OpenGeo también fue útil para mí. Comienzan desde lo básico y tienen un buen ejemplo de eventos de GetFeatureInfo con la eliminación de ventanas emergentes.

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