Além das excelentes respostas acima, deixe-me adicionar minha própria experiência. Há um ano e meio, decidi que queria usar o OpenLayers (OL) no projeto do meu mestre e parti para aprendê-lo. Faço programação e criação de mapas digitais como parte de meu trabalho como arqueólogo desde o início dos anos 80 e sou usuário do ArcGIS há 15 anos. Estou feliz por ter escolhido OL para o meu projeto, mas nem sempre foi um caminho tranquilo para aprendê-lo. Algumas coisas não eram óbvias e aprendidas apenas por tentativa e erro. Então, eu tenho alguns conselhos para iniciantes.
Minha jornada para aprender OL realmente começou quando me inscrevi em uma conta de estante de cinco slots no Safari Books Online por US $ 10 / mês. Eu queria revisar livros antes de comprar, e poucas lojas que podemos visitar levam livros de computador relacionados ao GIS. Atualmente, existem três livros no OL 2. Um livro mais recente de 58 páginas chamado Instant OpenLayers Starter de Di Lorenzo e Allegri (abril de 2013) é um bom começo rápido, mas os dois primeiros livros e suas amostras de código (disponíveis na web do editor site, juntamente com um capítulo de amostra grátis de cada livro) foram bons recursos:
- OpenLayers 2.10: Guia do Iniciante por Erik Hazzard (março de 2011)
- Livro de receitas OpenLayers de Antonio Santiago Perez (agosto de 2012)
Devido a frustrações ocasionais sobre a compatibilidade com o CSS e o navegador, acabei aprendendo uma estrutura JavaScript também. Eu escolhi Dojo porque é isso que Perez usou em seu livro. O Dojo moderno (Dojo 1.7 +) é uma abordagem significativamente diferente das versões anteriores, usando um formato Asynchronous Module Definition (AMD). A maneira de fazer tudo mudou. Não entendi que este livro excelente, de outra forma, usa uma versão pré-1.7 do Dojo que ficou obsoleta 9 meses antes da publicação do livro em agosto de 2012. Esri continuou usando o Dojo pré-1.7 em sua API ArcGIS JavaScript até a modernização em junho de 2012 , e essa foi uma mudança dolorosa para muitos desenvolvedores do ArcGIS Javascript.
Para entender como o Dojo é pouco suportado, além de um livro escrito em 2010 sobre o Dojo 1.3, a maioria dos livros foi escrita em 2007 e 2008. Não há livros publicados para o Modern Dojo - você deve aprender com recursos on-line, quase todos os que estão no site deles. Basicamente, para trabalhar com os exemplos no livro de Perez, você precisa saber o suficiente sobre JavaScript para ignorar os bits do Dojo e mover os exemplos para JavaScript simples ou sua estrutura de escolha.
Em retrospecto, eu gostaria de ter ido com a estrutura ExtJS e GeoExt. O ExtJS é gratuito se o seu projeto for de código aberto e, como muitas empresas pagam com prazer por uma versão suportada, elas podem gastar tempo com documentação e tutoriais abrangentes do site.
Aprendo melhor trabalhando com exemplos / hacking separados. Os desenvolvedores do OpenLayers têm essa mesma filosofia que a documentação principal que eles apontam para o aprendizado está examinando os exemplos. No entanto, alguns exemplos de OL em seu site e em outros lugares têm problemas que podem fazer os iniciantes tropeçarem. (Ver abaixo.)
A dependência de exemplos como documentação também significa que o usuário não tem um bom fluxo de trabalho para desenvolver um mapa da web. Isso pode levar à criação de mapas incompletos - por exemplo, eles podem não ter personalizações de css na interface do usuário dos mapas e "aparência e comportamento". Substituir o css OL com personalizações parece assustador para o iniciante, mas o Firebug pode ajudá-lo a encontrar os nomes dos elementos que você precisa substituir. A falta de uma sensação de um fluxo de trabalho aceito também pode levar à criação do Frankencode, pois os usuários calçam os recursos em seu código conforme acham que desejam.
Isso me leva ao último item que sinto falta na documentação do site OL, uma sensação de "práticas recomendadas" para mapas OL. Existe uma maneira melhor de organizar meu código para torná-lo modular e robusto? Quais são as armadilhas dos fechamentos JavaScript e dos objetos OL? Onde devo declarar meus estilos? E assim por diante.
Além dos vários arquivos desatualizados no Wiki, há dois problemas gerais que um iniciante deve estar ciente ao aprender com os exemplos oficiais de OL e os documentos da API. Primeiro, não há organização na página dos exemplos de desenvolvimento de OL no site da OL. É simplesmente apresentar o feed do arquivo xml nesse diretório (exemplo-list.xml) dos exemplos (207 deles em 13 de fevereiro de 2014) e classificar as linhas em ordem alfabética por nome de arquivo em uma grade. Exemplos mais avançados são misturados com os básicos. Você pode pesquisar os exemplos por palavra-chave, mas muitos dos exemplos não possuem palavras-chave e o recurso de pesquisa inclui conteúdo e título da página na pesquisa, não apenas palavras-chave. Os resultados são retornados com o maior número de termos de pesquisa correspondidos primeiro, seguidos pela frequência das palavras. Apenas um dos termos de pesquisa precisa ser uma correspondência para aparecer nos resultados. A página UserRecipes no OL Wiki lista cerca de 90 exemplos organizados por categoria, e essa categorização é uma ajuda. Desses, 66 são links ao vivo para os exemplos na página de exemplos e o restante são links ruins para exemplos removidos.
Segundo, existem basicamente duas versões da documentação da API que parecem ser as mesmas à primeira vista. A API oficial está em um diretório chamado / apidocs e a biblioteca de desenvolvedores mais avançada, porém volátil, em um diretório chamado / docs. Os URLs são os mesmos. (Também existem versões de tronco.) Apenas edite o endereço da página para ver a outra versão. O Wiki observa que a biblioteca do desenvolvedor não deve ser invocada, pois propriedades, funções etc. podem ser removidas da biblioteca a qualquer momento. Com o OpenLayers 3 próximo da realidade (ele está disponível na versão beta e já existe um livro), eu suspeito que pouco mudará no OL 2 no futuro. O foco agora está no OL 3.
Em geral, acho que as páginas da API OL são excessivamente esqueléticas, geralmente sem explicações ou exemplos ilustrativos, especialmente para alguém usado para bibliotecas com documentação API mais completa. Da maneira como é apresentado, você não obtém uma imagem clara do objeto que está herdando.
Dos exemplos de OL na Web em geral, muitos usam objetos ou sintaxe que foram descontinuados porque foram substituídos por versões aprimoradas. Por exemplo, o Layer.Vector agora é a maneira preferida de desenhar marcadores, pois o Layer.Marker está obsoleto na versão 3. Examine o arquivo deprecated.js para garantir que você não esteja usando objetos que estão saindo. Ou, pelo menos, esteja ciente de que, se você atualizar seu código para OL 3, precisará alterar isso.
Além do workshop Boundless OpenLayers vinculado por Julien-Samuel Lacroix acima, a IBM possui um tutorial interessante, embora com três anos de idade, que usa OpenLayers, MapServer, Google Gears e jQuery para criar um aplicativo Web GIS completo: reunir dados com o OpenLayers : Usando dados de várias fontes divergentes em mapas da web
Além disso, confira este post útil sobre o estilo do switcher de camada
Pesquise no Google as palavras OpenLayers e jsFiddle para obter alguns exemplos de violações de OL. O resultado do site techslides é uma página listando alguns deles.
Por fim, lembre-se de que as imagens do mapa na maioria dos exemplos são de servidores OpenStreetMap (OSM) e estas caem de vez em quando, planejadas ou não, e você terá blocos cor-de-rosa no lugar. Às vezes, você pensa que estragou o seu código. Você pode verificar o status da plataforma no wiki do OpenStreetMap.