Comparando várias bibliotecas de mapeamento JavaScript?


138

Estou trabalhando em um sistema de mapeamento baseado na Web e estou tentando descobrir qual biblioteca usar.

Estes são links para comparações de bibliotecas disponíveis:

insira a descrição da imagem aqui

A lista de bibliotecas até agora:

  • Google Maps
  • Microsoft Virtual Earth
  • MapQuest
  • Folheto - "O comentário menor, mais rápido, mais novo e mais direto também pode ser lido como menos recursos e menos testado". -Geographika (veja abaixo)
  • API do ArcGIS para JavaScript - Funciona melhor com o ArcGIS Server (veja abaixo). As extensões de mapas do Google Maps e Bing também estão disponíveis, permitindo que você use a API ESRI com os mapas do Google / Bing (embora isso ocorra na maioria das bibliotecas).
  • APIs do Yahoo Map
  • Via Michelin
  • OpenLayers - documentação extensa e uma boa quantidade de funcionalidades, além da capacidade de usar diferentes provedores de mapas.
  • Mapquery - O MapQuery foi lançado e agora possui alguma documentação útil. Ele tem o objetivo muito interessante de combinar OpenLayers e jQuery. Se você está particularmente interessado na idéia do OpenLayers + jQuery, ou se deseja contribuir para uma Biblioteca de Mapeamento JavaScript, envolva-se e contribua com seus esforços. No entanto, se você deseja apenas ser um usuário final ou se é novo nessa área, talvez não seja o seu caso.
  • Mapstraction - Torna as coisas muito simples, especialmente trabalhando com vários provedores de mapas base. No entanto, ainda é um trabalho em andamento e a funcionalidade está faltando em alguns lugares, assim como a documentação. (Por exemplo, "Um objeto GeoJSON com o tipo" FeatureCollection "é um objeto de coleção de recursos." Não é muito informativo.) Parece que ele ainda está sendo desenvolvido ativamente, mas a partir de 04/04/11 não houve confirmação no Github desde janeiro.
  • deCarta - Possui javascript para dispositivos móveis e computadores - primeiro é compatível com HTML5 / CSS3 e o segundo tem mais compatibilidade com o navegador. Código fonte fornecido. Termos de desenvolvedor mais amigáveis ​​para uma API comercial. Você pode marcar o mapa e existem vários estilos de mapa diferentes. Você pode escolher dados NAVTEQ ou OSM. Eles também têm várias APIs para celular também. - editado por TheSteve0 - um funcionário da deCarta
  • Cloudmade
  • Polymaps - facilita muito a composição de dados de varredura e vetor de várias fontes diferentes. Permite adicionar facilmente sua própria coloração, agrupamento e interação. Executa rapidamente, gerencia bem o carregamento do bloco de plano de fundo e possui apenas 30k de Javascript. Uma desvantagem potencial: ele usa SVG, o que significa que não funciona e não funcionará no MSIE 7 ou 8. Ele funciona muito bem em qualquer outro navegador e deve funcionar no IE9
  • Jump - jump é uma biblioteca de mapas leve que funciona por si só, ou seja, não é um invólucro para a API OpenLayers ou GoogleMaps. Atualmente, ele está em desenvolvimento, mas muitos recursos essenciais funcionam bem.
  • ModestMaps - Outra biblioteca de mapeamento JS menor, mais rápida e mais recente, dos criadores do Mapbox e TileMill.
  • Mapiator

OpenLayers é o que eu estou usando atualmente. Você pode fazer muito com ele e ele suporta a maioria dos tipos de dados. No entanto, não é o melhor para tudo. Por exemplo, o Leaflet parece mais suave de várias maneiras, com desbotamento da imagem e outros ajustes visuais. Se você gosta do jQuery, pode conferir o MapQuery, que é como uma combinação de jQuery e OpenLayers.

Respostas:


93

Esta pergunta foi convertida em Wiki da Comunidade e a wiki bloqueada porque é um exemplo de pergunta que busca uma lista de respostas e parece ser popular o suficiente para protegê-la do fechamento. Deve ser tratado como um caso especial e não deve ser visto como o tipo de pergunta incentivada neste ou em qualquer site do Stack Exchange, mas se você deseja contribuir com mais conteúdo, sinta-se à vontade editando esta resposta .


Para desenvolvedores de plano de fundo que não sejam de GIS, criando aplicativos de mapeamento de função única - eu provavelmente recomendaria o Leaflet (agora suportado pelo MapBox). Fácil de usar e pequeno. Mais funcionalidade depende de plugins de qualidade e suporte variados.

O aplicativo do tipo on-line GIS - use OpenLayers3 - possui o conjunto completo de fontes de dados, controles etc. em uma única biblioteca. Também pode ser usado para aplicativos de mapeamento simples, por isso, se você tiver uma mistura, eu usaria isso para tudo.

O Google ainda possui a combinação de biblioteca / dados (por exemplo, o StreetView não está disponível em nenhum outro lugar).

A Esri possui construtores de aplicativos da Web da GUI e, conforme observado abaixo, por que complicar as coisas se você já usa a pilha deles.

APIs comerciais (Google, Bing, Yahoo)

O uso de qualquer API comercial deixa você à mercê de quaisquer alterações que o provedor faça na API ou nos Termos de Serviço. O que acontece, por exemplo, se de repente o seu portal do governo local que usa o Google Maps repentinamente tem anúncios aparecendo em todo o site ? Deseja reutilizar seu código JavaScript do Google Maps em um site da Intranet? Você terá que pagar a taxa de licenciamento de US $ 10.000.

A Microsoft geralmente possui termos mais definidos e fixos para seus serviços (se pagar), portanto, pode haver menos riscos aqui.

A reação recente contra o Twitter é um bom exemplo de desenvolvedores com uma API que mudou abaixo deles. Se você não está pagando por um serviço, você (ou o seu sistema) é quem está sendo vendido.

O Google começou a cobrar pelo uso de seus mapas a partir de outubro de 2011.

Esri

Como outros já mencionaram, se você estiver usando uma pilha Esri, a API do ArcGIS para JavaScript, sem dúvida, funcionará bem em cima dela. Vindo de um histórico de GIS, a Esri provavelmente pensou mais nas tarefas e recursos tradicionais de GIS do que nos gigantes da web "neo-geografia" (embora isso seja apenas uma opinião / sentimento).

O OpenLayers tem suporte embutido para as camadas ArcGIS REST , e se você deseja reutilizar seu código em sites que não sejam baseados em ESRI, então uma API aberta é a melhor para você.

Use OpenLayers ...

Eu realmente não consigo pensar por que os desenvolvedores usariam uma API diferente do OpenLayers. Projetos Open Source levar a projetos de código aberto relacionados por isso há uma grande variedade de componentes reutilizáveis lá fora, como a biblioteca GeoExt , MapQuery e GeoPrisma .

Acrescentarei apenas que o fato de um projeto ser de código aberto não o torna automaticamente melhor do que equivalentes comerciais - mas a API do OpenLayers corresponde à concorrência comercial nesse caso e à capacidade de ver como a fonte funciona, os testes de unidade, o criar scripts etc. significa que você pode facilmente criar novos recursos sobre ele.

Houve algumas críticas recentes ao OpenLayers, principalmente relacionadas à complexidade, estilo e tamanho. Houve contra-argumentos feitos aqui e aqui por Christopher Schmidt, um dos principais desenvolvedores do OpenLayers.

Vale a pena notar que, se você precisar de uma simples API de mapeamento de código-fonte aberto, consulte o Leaflet do Cloudmade .

O comentário menor, mais rápido, mais novo e mais direto também pode ser lido como menos recursos e menos testado.

Digitalize a documentação da API para Leaflet e OpenLayers . O último inclui itens como camadas WFS, ferramentas de edição e suporte a SLD. Também foi testado em muitos ambientes diferentes e funciona no IE6 (permitindo usuários do governo e das autoridades locais).

Para uma exibição mais simples dos dados espaciais, o Leaflet parece ideal e mais fácil de começar. No entanto, continuarei com o OpenLayers para aplicativos GIS mais ricos em recursos.

Ressalvas

Uma possível desvantagem é que muitas vezes as inovações são vistas primeiro nos sistemas de fornecedores comerciais - no entanto, elas quase sempre passam para o OpenLayers a tempo.

Finalmente, tenho certeza de que existem certos cenários em que outras APIs são mais adequadas - em hardware personalizado, para se encaixar em outras organizações de outros sistemas de TI ou se você já conhece uma API de dentro para fora e pode desenvolver um sistema na metade do tempo .

Todas as APIs que você mencionou são capazes de produzir ótimos sistemas de mapeamento on-line, mas sua escolha também deve se encaixar nas suas necessidades futuras de desenvolvimento da sua empresa.


50

Há um novo player na frente do mapeamento javascript - Leaflet . Desenvolvido por CloudMade sob licença BSD.

Parece realmente promissor.

insira a descrição da imagem aqui

( Fonte )


3
Uau, isso parece ser uma biblioteca impressionante. Estou surpreso por não estar ciente disso.
dkroy

2
Aqui está uma comparação do comportamento de navegação do folheto e dos openlayers.
dkroy

2
Bom fluxograma. Folheto é realmente muito bom.
Mr_Chimp

7
Depois de tentar usar o Leaflet para coisas mais complexas, devo admitir que é bastante limitado em comparação com o OpenLayers ou o GeoExt. É muito fácil de configurar e parece muito bom, mas há um limite para o que você pode fazer em termos de interações. Mais uma vez, porém, cada um tem seu lugar.
22412 Mr_Chimp

3
Cópia atualizada do gráfico (de janeiro de 2012) está disponível em: geotux.tuxfamily.org/index.php/en/geo-blogs/item/…
Will.

35

Eu tinha um projeto API do Google Maps / arcgis e, há um ano, decidi experimentar o OpenLayers. Quanto mais eu trabalhava com ele, mais eu gostava, então decidi migrar. Cortei de 30 a 100 linhas do código do Google em 1 a 3 linhas repetidas vezes ao longo do meu código. Simplesmente porque o OpenLayers tinha funções para o que eu queria fazer e estava tendo que codificá-lo manualmente para o Google Maps.


2
É tudo de bom. Obrigado pela sua contribuição! Não sei se há uma resposta certa para isso, então opiniões e anedotas são úteis.
Mr_Chimp

2
+1 Eu sempre escolhi o OpenLayers sobre o Google Maps se a tarefa é exibir mais de uma mão cheia de marcadores.
Underdark

20

O CartoDB é uma ferramenta para analisar, visualizar e compartilhar seus dados geoespaciais no PostGIS. É umaplataforma de banco de dados geoespacial de código aberto que fornece uma camada de API SQL. Ele permite que os desenvolvedores façam consultas para um banco de dados PostrgreSQL + OpenGIS na nuvem otimizado para fins geoespaciais.

insira a descrição da imagem aqui



12

Comparo (com destaques e notas) o código necessário para executar uma tarefa simples, específica e comum em:

  • MapQuest
  • Google Maps
  • bing
  • Ovi
  • Esri
  • OpenLayers
  • jQuery Geo

aqui: http://trippingthebits.com/geopres/

O post é para uma apresentação que fiz no jQuery Geo, que infelizmente está ausente da sua lista.


Esse é um bom artigo. Eu gosto do seu código de cores! Muito boa ideia.
Mr_Chimp

jQuery Geo FTW!
Sameer

11
Obrigado @SameerAlibhai! Fique ligado, publicaremos o Release Candidate 1 em breve.
ryanttb

11

Você deseja visualizar um globo dentro do navegador O Cesium é bom. (Funciona sem plug-in, mas o navegador precisa de suporte WebGL)

Pode exibir visualização em 3D, 2D e 2.5D

O césio suporta 3D, 2D e 2.5D

Suporte para diferentes formatos de varredura / vetor (KML etc.)

Suporte para dados raster / vetor differnet

Controle livre os voos da câmera e da câmera

Controlar a câmera

... e tudo dentro de navegadores (modernos).


2
uau, este é realmente um projeto muito bom! :)
Krystian

11
OK, mas você pode nos explicar por que o Cesium não suporta (e muitos outros) o WFS (serviço de recursos da Web) padrão? Parece-me que é um visualizador muito poderoso, mas não um sistema GIS.
Web-GIS empreendedor

11

Não sou competente para fazer uma comparação completa, mas já fiz três pequenos projetos diferentes com o Polymaps e posso comentar sobre isso. Seu principal ponto forte é que facilita a composição de dados de varredura e vetor de várias fontes diferentes. Ele pode atender a todos os seus requisitos, principalmente ao permitir adicionar facilmente sua própria coloração, agrupamento e interação. O Polymaps também é bastante eficiente: roda rapidamente, gerencia bem o carregamento do bloco de plano de fundo e possui apenas 30k de Javascript.

A principal desvantagem do Polymaps é que ele usa SVG, o que significa que não funciona e não funcionará no MSIE 7 ou 8. Ele funciona muito bem em qualquer outro navegador e deve funcionar no IE9, mas não tenho certeza de quão bem testado ele é. O SVG também é um ponto forte: é fácil programar e a renderização é ótima, principalmente dimensionando recursos de vetor e raster em pequenos incrementos.

Uma ressalva sobre as bibliotecas: se você deseja usar os blocos de varredura do Google como um mapa base, deve usar as bibliotecas Javascript. O OpenStreetMap, etc, tem licenças muito mais permissivas que permitem a sua escolha de bibliotecas.

(Esta resposta é de 2011 e muita coisa mudou. O Polymaps não é mais mantido. Nesse momento, o Leaflet é a biblioteca de código-fonte aberto preferida.)


4
Apenas uma atualização na minha resposta; Polymaps não teve nenhum desenvolvimento em alguns anos. Ainda é uma biblioteca interessante com algumas habilidades únicas, mas eu não a usaria para um novo projeto. Hoje estou usando o Leaflet.
Nelson

9

Eu sou um estudante de graduação em cartografia e um novato em mapeamento na web, mas estou trabalhando em um projeto para comparar as diferentes tecnologias existentes e montar um guia básico de "como fazer" para começar a usar o mapeamento na web. Minha análise não é de forma alguma abrangente, e eu tenho tentado entender cada biblioteca brincando com eles e com postagens como essas de programadores mais experientes. Eu ficaria feliz em receber algum feedback.


(+1) Obrigado por sua contribuição - bem-vindo à nossa comunidade!
whuber


7

Mapfluence do Urban Mapping também está na mistura. Plataforma de mapeamento hospedado que oferece serviços geográficos baseados na Web, acessíveis RESTfully e com API JavaScript (documentos / tutoriais aprimorados em andamento). Ou OL, se você quiser. Nós renderizamos nossos próprios blocos base , temos um catálogo enorme de dados sob demanda e suportamos dados e outras consultas de visualização.

Confira o seminário on-line da O'Reilly no Wed sobre serviços geográficos + big data para obter uma visão geral do que é geográfico.


7

Você também pode dar uma olhada no Geomajas . Essa é uma estrutura GIS escrita em Java (incluindo um cliente Java usando GWT). No entanto, atualmente há um plug-in em andamento para fornecer uma API completa do lado do cliente em JavaScript. Ainda não é estável, mas vale a pena dar uma olhada. A vantagem de usar o Geomajas é a forte integração entre o back-end e o cliente, que possui algumas vantagens, incluindo a capacidade de transferir facilmente o trabalho para o servidor e adicionadas especialmente por segurança.


6

Eu recomendaria o ammap: http://www.ammap.com Eles costumavam ter mapas em flash, mas recentemente introduziram mapas JavaScript com muitos recursos excelentes.


4

Se você está procurando uma biblioteca de visualização de dados, consulte Highmaps , das pessoas por trás do Highcharts (inclusive eu - atualmente empregado como desenvolvedor de software). É gratuito para uso não comercial, funciona muito bem com navegadores móveis (suporte total ao toque) e no IE antigo até o IE6. Oferece suporte a recursos dinâmicos avançados, como detalhamento e dicas de ferramentas avançadas.

insira a descrição da imagem aqui insira a descrição da imagem aqui



11
Justo, editado.
Oystein

3

Uma metodologia interessante pode ser encontrada para comparar os recursos que você deseja das bibliotecas de mapeamento JavaScript (não restritas a esse caso de uso). Foi apresentada no evento NACIS 2012 por Richard Donohue & al. . A parte interessante é sobre como eles faz de classificação dependendo da finalidade e recursos necessários.



2

Pode ser que você também possa considerar Heron . Ele é construído em Ext e em camadas abertas, elas possuem muitos modelos que você pode personalizar.

Outro candidato em potencial é o GeoJS .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.