OpenLayers vs Google Maps? [fechadas]


169

Eu usei o Google Maps algumas vezes, mas o que eu quero saber sobre o OpenLayers .
Antes de iniciar qualquer tipo de codificação, aqui estão algumas perguntas que vêm à minha mente,

  • Por que eu usaria o OpenLayers em vez do Google Maps?
    • Exceto por sua licença OSS, de qualquer maneira
    • Você encontrou alguma situação em que recomendaria absolutamente não usar o OpenLayers?
    • Eu fiz uma pesquisa sobre "OpenLayers" no Stack Overflow ; não há muitas respostas. Isso significa que esta solução não é muito usada? Poderia ser um problema para a viabilidade a longo prazo do projeto?
  • Para aqueles que já usaram o OpenLayers: existem armadilhas / problemas comuns que posso encontrar?
    • Que tal usar um Framework JavaScript com ele? Eu já vi ele usando Prototype , e eu sei Prototype, então tudo bem. Mas e quanto a usar outra coisa como o MooTools ? (Que não é compatível com Prototype, BTW)
    • Existe algum tipo de problemas relacionados à velocidade e desempenho? Preciso que meu aplicativo seja responsivo e não posso esperar horas para exibir um mapa.
  • Existem mapas disponíveis para muitos lugares ou faltam muitos?
    • Ou seja, estou na França e preciso que meu aplicativo funcione pelo menos para grandes cidades ... Tudo bem?
    • caso contrário, é fácil encontrar camadas e visualizações para o OpenLayers e integrá-las?
  • Existe algum tipo de API para exibir estradas?
    • Por exemplo, para mostrar estradas que são apenas de sentido único.
    • Se sim, como posso fazer isso? Preciso ter algum tipo de arquivo que contenha essas informações de estradas e, então, exibi-las no mapa sozinho?
  • Você conhece algum bom tutorial para o OpenLayers?

Eu ainda não tentei, essas são perguntas fora do comum ...


Por curiosidade, por que a "licença OSS" seria um ponto a favor dos OpenLayers, exceto por razões filosóficas? Supondo que a licença do Google permita que você faça o que deseja de graça, por que isso influenciaria sua decisão de qualquer maneira?
Mark

7
@ Mark Há problemas com a licença do Google. IANAL, mas entendo que a exibição de dados no Google Maps concede ao Google uma licença ilimitada para copiar, modificar, transformar e redistribuir seus dados. Por exemplo , é ilegal exibir dados derivados dos produtos GIS do UK Ordnance Survey no Google Maps. Outra vantagem do OSS é que o OpenLayers não está sujeito aos caprichos de uma organização. Embora, na prática, provavelmente você pode confiar sentido do Google bom (e dinheiro, e razões comerciais) para apoiar o Google Maps para o futuro
MarkJ

1
Esses artigos podem ser úteis: EveryBlock - Sobre nossos mapas: blog.everyblock.com/2008/feb/18/maps Uma lista à parte - Assuma o controle de seus mapas (também de EveryBlock) alistapart.com/articles/takecontrolofyourmaps
mg1075

8
O Google Maps não é totalmente gratuito ( google.com/support/forum/p/maps/… ). A licença depende de como você a usa.
Mo.

Vale a pena conferir no site GIS.SE todas as informações geográficas se você não encontrar uma resposta no SO.
196 Roy Roy

Respostas:


158

Essas são realmente ótimas perguntas! Sou um desenvolvedor e fã profissional de OpenLayers, portanto, abordarei suas perguntas dessa perspectiva.

Por que eu usaria o OpenLayers em vez do Google Maps?

  • Flexibilidade: você não está vinculado a nenhum fornecedor ou tecnologia de mapas em particular. Você pode alterar a qualquer momento e não precisar reescrever seu código inteiro. Google, Yahoo, Microsoft, WMS, ArcGIS Server, MapServer, etc. são todos suportados imediatamente.
  • Suporte de vetor: Melhor suporte para pontos, polilinhas e polígonos.
  • Controle: você pode adicionar novos recursos que possa ser necessário. Eu escrevi pessoalmente três plugins para o OpenLayers, dois dos quais são ou farão parte da fonte.
  • Depuração: Muito mais fácil para depurar quando você pode percorrer o código fonte!

Eu não me preocuparia com a viabilidade a longo prazo do projeto. É a principal biblioteca de mapeamento de código aberto do lado do cliente.

Existem armadilhas / problemas comuns que posso encontrar?

  • A maior armadilha em que me deparei é trabalhar com a projeção Web Mercator (Google). Pode ser difícil exibir dados vetoriais que estão em uma projeção comum e real, como o WGS 84, em um mapa do OpenLayers usando os mapas base do Google, Yahoo e Microsoft. Os exemplos são seus amigos.

Compatibilidade com JavaScript Framework

  • Eu uso a estrutura jQuery para todo o meu trabalho, e o único problema que tive foi fazer referência ao jQuery após o OpenLayers. Fora isso, tem sido bom velejar.
  • O desempenho é ótimo! Os únicos problemas serão com o servidor de mapas ou adicionar muitos vetores ao seu mapa.

Existem mapas disponíveis para muitos lugares?

  • Como eu disse, você pode usar mapas base de praticamente qualquer fonte para qualquer lugar do mundo.

Existe algum tipo de API para exibir estradas?

  • Eu verificaria o CloudMade! Eles converteram o projeto OpenStreetMap em um serviço de bloco de mapa e permitem um estilo personalizado. Eu acredito que você pode estilizar ruas de mão única (por seu exemplo) de uma maneira específica. A Zona de desenvolvedor do CloudMade .

Você conhece algum bom tutorial para o OpenLayers?

Espero que isso seja útil. E estou perto do Stack Overflow, se você tiver alguma dúvida!


5
Oi! Muito obrigado por esta resposta, que é realmente útil! Definitivamente, existem alguns pontos interessantes (melhor suporte a vetores provavelmente será útil para o projeto em que estou pensando; e não é a única coisa que você está dizendo que é interessante!); Talvez eu faça algumas outras perguntas em algum momento: ainda não comecei a trabalhar com OL (essa pergunta foi bastante "prelimar" ^ ^)), mas suponho que chegará a hora, considerando as respostas que obtive!
288 Pascal MARTIN

5
+1. Tentei não digitar esse comentário, mas não consigo evitar. WGS84 não é uma projeção. (Vale a pena tentar aprender essas coisas - Estou dolorosamente pegar um pouco de GIS, e isso realmente ajuda com o material do mapa.)
MarkJ

1
WGS84 é um sistema de coordenadas geográficas (usado para exibir pontos de latitude / longitude em um elipsóide). Web mercator é praticamente a projeção da web.
196 Roy Roy

35

Não é necessariamente uma questão de OpenLayers OU Google Maps. Afinal, você pode usar o Google Maps para o fundo do seu mapa no OpenLayers. Algumas respostas mais específicas:

Por que OpenLayers?

  • O OpenLayers pode combinar mapas de diferentes fontes (plano de fundo do Google Maps, sobreposições WMS, dados vetoriais de arquivos KML ou GML ou WFS etc.)
  • Você pode estilizar o OpenLayers muito mais do que o Google Maps
  • Código aberto, você pode verificar o código-fonte ao depurar
  • Se você precisar de alta precisão nos mapas, use o OpenLayers com um servidor de mapas adequado em vez do Google Maps para obter uma melhor projeção do mapa (o Google Maps assume que a Terra é uma esfera perfeita)

Armadilhas

  • Se você quiser usar dados vetoriais (WFS) de outro servidor, precisará de um proxy, devido a limitações de script entre sites

atuação

  • Depende principalmente da velocidade do back-end do mapa
  • A exibição de muitos recursos vetoriais (o limite depende do navegador, mas digamos> 200 em uma visualização) leva tempo, mas isso é mais uma coisa do navegador do que um problema com o OpenLayers

Estruturas JavaScript

  • Dê uma olhada no GeoExt , que é ExtJS + OpenLayers, por exemplo

Mapas disponíveis

  • O OpenLayers não vem com um backend de mapa. Você pode usar o Google Maps, Yahoo Maps, MS Virtual Earth etc. ou qualquer serviço WMS e WFS para ter acesso a

Boas respostas; obrigado por todas essas informações! Ainda não conheço os detalhes, mas talvez eu precise usar alguns dados do meu próprio servidor, então tudo deve ficar bem, principalmente com a capacidade de integrar vários back-end (se eu entendi corretamente ^ ^, terei chances de testar que em um par de dias, espero ;-))
Pascal MARTIN

1
@ Pascal, fico feliz que a resposta tenha sido útil. Posso acrescentar que a comunidade OpenLayers é muito ativa e as listas de discussão bastante úteis.
Nils Weinander

Se houver algo que você queira fazer que não seja abordado na página de exemplos de desenvolvimento, provavelmente você não poderá fazê-lo no google maps. por exemplo, mesmo o script entre sites não precisa ser coberto por um proxy: openlayers.org/dev/examples/cross-origin.html
Glenn Plas

23

Eu não vi muita presença de usuários OpenLayers no SO, mas eles estão por aí. As listas de discussão do OpenLayers são bastante ativas (estou no Users e Dev e vejo de 50 a 100 e-mails por dia discutindo várias coisas. Você também pode pesquisar nas listas nesses links.).

Não posso responder a todas as suas perguntas, mas uma coisa que vou colocar lá é que o OpenLayers e o google maps não são mutuamente exclusivos. OpenLayers é uma biblioteca javascript e você pode usá-lo para interagir com o google maps. Confira este exemplo: OpenLayers usando o google maps . E aqui está a página principal de exemplos do OpenLayers .


Obrigado por essa resposta! É bom ver os mailling-lists são bastante ativos, antes de começar a trabalhar com um projeto ^^
Pascal MARTIN

13

Um ponto que ainda não foi totalmente esclarecido aqui é que o uso do OpenLayers evita várias restrições que o Google impõe aos termos de serviço para suas APIs de mapas, incluindo:

  • Você não pode legalmente usar um mapa do Google apenas em uma seção do seu site que exija pagamento para acessar ou para um site privado que o público não possa se inscrever (por exemplo, uma intranet corporativa). (IANAL, mas consulte os Termos de Serviço, 9.1 e as Perguntas frequentes )

  • Você não pode legalmente (ou praticamente) usar a API do Google para aplicativos offline (por exemplo, onde os blocos são veiculados em sua própria máquina). Mesmo que não houvesse restrições legais, o Google torna isso tecnicamente muito difícil, enquanto o OpenLayers facilita.

  • O Google se reserva o direito de interromper o acesso à API se você estiver mostrando um mapa com conteúdo que ele julgar questionável. O exemplo dado nas Perguntas frequentes é um mapa de drogas ilegais, que fornece uma boa noção das áreas cinzentas que essa restrição pode cobrir.

Consulte esta FAQ e os Termos de Serviço para obter mais detalhes.

Tudo isso dito, como desenvolvedor de longa data do Google Maps que recentemente começou a usar o OpenLayers, sinto que o Google Maps tem uma documentação melhor, uma comunidade maior de usuários e uma API mais clara e mais estável do que o OpenLayers. Então você tem que fazer uma troca em algum lugar.


"Você não pode legalmente usar um mapa do Google em uma seção do seu site que exija pagamento para acessar ou para um site privado que o público não possa se inscrever (por exemplo, uma intranet corporativa)." Isso está incorreto. Você pode usar o Google Maps em uma seção paga do seu site, desde que a maioria dos usuários consiga usar o site e os mapas sem pagar. Por exemplo, um site imobiliário. Os pôsteres precisam pagar para listar suas casas, mas a grande maioria dos usuários consegue navegar no site sem pagar. Nesse caso, ambos têm acesso ao Google Maps.
Craig

Obrigado - quis dizer que você não pode usar a API exclusivamente nas seções de pagamento exigido. Atualizei minha postagem e adicionei mais links para solucionar esse problema.
Nrabinowitz 15/03/11

O OpenLayers usa a API do Google Maps internamente para que você esteja sujeito à mesma licença. osgeo-org.1560.x6.nabble.com/…
Alfredo Osorio

@ AlfredoOsorio - sim, IFF você usa as camadas do Google. Existem muitas outras fontes de bloco.
Nrabinowitz 25/03

12

Realmente depende para o que você deseja usar o mapa. Para simplesmente plotar pontos em um mapa, o Google Maps ficará bem. As camadas do mapa para o Google Maps também são bastante detalhadas. O OpenLayers, por outro lado, oferece muito mais funcionalidade e é muito extensível.

O OpenLayers tem muitos exemplos para você começar.

Quanto aos mapas, o OpenLayers é apenas uma API, então você precisa fornecê-lo para mapear as camadas. A API do Google Maps será limitada às camadas de mapa fornecidas pelo Google. Com o OpenLayer, você pode exibir praticamente qualquer serviço de mapa disponível ao público (WMS, WFS, TMS, WMS-C). Um exemplo muito bom é openstreetmap.org - (mapa de ruas global coletado pela comunidade). O OSM pode ser adicionado aos openlayers como uma camada TMS. Confira este exemplo para obter instruções.


Oi! Parece que eu sou sua primeira resposta aqui! Bem-vinda! E obrigado por sua resposta :-)
Pascal MARTIN

9

Alguns clientes podem recusar ou ter fortes reservas sobre o uso do Google Maps. Eles podem ter preocupações válidas de que o Google possa introduzir publicidade ou alterar a API sem aviso prévio. No entanto, o Google Maps tem o benefício de integrar-se com outros serviços do Google (marcadores, adição de fotos, serviços de geocodificação). Como é a Web, você sempre pode combinar muitos serviços e APIs de mapeamento diferentes.


1
+1. Eu tenho alguns clientes assim. E eu não estou dizendo que eles estão errados. Na última vez que olhei, os termos de licenciamento do Google Maps permitem que o Google introduza publicidade nos mapas sempre que desejar.
precisa saber é

2
Além disso, usando o GoogleMaps, você concede ao Google uma licença mundial perpétua, irrevogável e sem royalties para reproduzir, adaptar e modificar seu conteúdo.
precisa saber é

9

Eu concordo com todas as respostas, mas há um ponto muito importante que ninguém menciona. OpenLayers e Google Maps têm alvos diferentes.

O OpenLayer é uma excelente estrutura para exibir dados geográficos, mas o Google Maps é um conjunto de serviços que inclui uma estrutura para exibir dados geográficos entre outros serviços.

Portanto, o Google Maps expõe muitos serviços e recursos que o OpenLayes não possui. Alguns exemplos de recursos e serviços do Google Maps são localização de região, detecção de sensor (para dispositivo com GPS) e localização de usuário, geocodificação e geocodificação reversa, street view etc.


6

Eu usei as duas APIs. Eu faço um software para empresas e esse software requer mapeamento, mas nem todos os clientes possuem uma licença do GoogleMaps, por isso preciso oferecer suporte aos dois tipos de mapas.

Eu criei uma API comum para abstrair as diferenças entre elas e deixe-me dizer, algumas coisas são mais fáceis de fazer em uma do que na outra. Como limitar os limites de onde você pode mover o mapa, é muito mais fácil fazer no OpenLayers, mas os mapas de calor são mais fáceis de usar no GoogleMaps (é oficialmente suportado pelo Google, ao contrário dos plugins disponíveis do OpenLayers).

  1. Os OpenLayers suportam mapas offline. Alguns dos meus usuários estão em intranets privadas sem conexão à Internet.

  2. GoogleMaps tem dois plugins absolutamente deve ter, MarkCluster e Spiderfier que possibilita a visualização de um grande número de marcadores.

  3. O InfoMindows do GoogleMaps é mais fácil de usar e tem melhor usabilidade do que os OpenLayers.Popups. Estas são as pequenas janelas que podem ser abertas quando você clica em um marcador. O InfoWindows do Googlemaps também é muito mais bonito por padrão, você precisa executar algumas tarefas de CSS com os Popups.

  4. O GoogleMaps tem streetview, que às vezes é útil.

  5. O GoogleMaps possui mais recursos que você pode precisar. Embora muitos recursos também estejam presentes no OpenLayers, mas não oficialmente suportados.

Geralmente, no final, você deve usar o OpenLayers devido à dor de cabeça reduzida que você pode obter com o licenciamento e o uso de largura de banda no googlemaps. Ambos lidam muito bem com o mapeamento básico (ou seja, exibindo marcadores no topo de um mapa). A menos que você possa encontrar um recurso específico necessário, de um que não esteja presente no outro, você deve procurar o OpenLayers. Veja isso para obter mais informações sobre o faturamento do googlemaps e quando você pode usá-lo gratuitamente.

Além disso, o GoogleMaps tem seu tipo básico de geolocalização como 'LatLng' e o Openlayers usa 'LonLat', o que me deixa louca, porque eu continuo confundindo a ordem dos parâmetros nas chamadas de função.


3

Além daqueles que mencionaram problemas de velocidade, gostaria de acrescentar que o renderizador VML do IE pode ficar muito lento com uma camada vetorial com muitos recursos. Um usuário mencionou cerca de 200. Isso é exatamente o que posso adicionar antes que o IE diminua consideravelmente até o ponto de congelamento. Se você adicionar recursos que sejam rótulos de texto, poderá adicionar metade menos, provavelmente porque internamente cada rótulo de texto consiste em dois elementos VML.

No Google, você pode criar um GOverlay personalizado, cujo conteúdo é uma "div", que é renderizada sem problemas no IE.


3

Gostaria de acrescentar duas coisas, de duas perspectivas: uso do cliente e desvio de dados.

Uso do cliente:

  • Com o que os clientes estão acostumados atualmente? Mudança pode ser difícil.
  • Quanta funcionalidade você realmente precisa? O OpenLayers tem um pouco, mas se você não o estiver usando ...

Publicação de dados:

  • Você está servindo dados KML ? Nesse caso, o OpenLayers e o Google Maps trabalharão com ele, e você provavelmente precisará decidir com base no uso do cliente.

  • Você está servindo outros tipos de serviços de dados? (WMS, WFS, CSV, etc.) Nesse caso, é provável que o OpenLayers tenha exemplos e suporte.


2

O OL tem uma grande base de fãs e é talvez o item de código aberto mais usado no mundo.

Você não vê muitos tópicos e postagens sobre isso neste ciberespaço porque as pessoas aqui tendem a discutir outros tipos de técnicos, como JSF e Mobile (não geográfico), não porque OL é como suportes.

No entanto, o Ol tem algumas desvantagens, principalmente por ser um nível tão baixo que você precisa escrever muito código para fazer operações comuns. Isso também pode funcionar da maneira certa, porque como desenvolvedor a: você tem todo o código adiantado eb: ajustar e personalizar é muito fácil.

Existem ferramentas geográficas gratuitas mais sofisticadas, mas tudo o que eles fazem é chamar de openlayers e abstrair algumas das tarefas mais chatas.

Portanto, use-o com confiança. É maduro, robusto e não vai morrer em um futuro próximo. No entanto, se você deseja acelerar o processo de desenvolvimento, tente as outras ferramentas que são montadas em cima dele.

tenha um bom dia


Olá, você poderia elaborar os "geotools gratuitos mais sofisticados" que estão em cima dos OpenLayers? O GeoExt foi mencionado acima, mas ainda não vi outros especificados. Obrigado.
Brian B

@BrianB oi brian, precisamente eu estava pensando em geoext quando escrevi "geotools gratuitos mais sofisticados". Essa biblioteca une um EXTJS com openlayers.
Demonz Demonz
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.