OpenLayers vs Google Maps? [chiuso]


169

Ho usato Google Maps un paio di volte, ma che meraviglia di OpenLayers .
Prima di iniziare qualsiasi tipo di codifica, ecco un paio di domande che mi vengono in mente,

  • Perché dovrei usare OpenLayers invece di Google Maps?
    • Ad eccezione della sua licenza OSS, comunque
    • Hai riscontrato una situazione in cui consiglieresti assolutamente di non utilizzare OpenLayer?
    • Ho fatto una ricerca su "OpenLayers" su Stack Overflow ; non ci sono molte risposte. Significa che questa soluzione non è molto usata? Potrebbe essere un problema per la fattibilità a lungo termine del progetto?
  • Per quelli di voi che hanno già usato OpenLayer: ci sono insidie ​​/ problemi comuni che posso incontrare?
    • Che ne dici di usare un JavaScript Framework con esso? Ho visto che usa Prototype e conosco Prototype, quindi sarebbe OK. Ma che dire dell'utilizzo di qualcos'altro come MooTools ? (Che non è compatibile con Prototype, BTW)
    • Esistono problemi di velocità e prestazioni? Ho bisogno che la mia applicazione sia reattiva e non posso aspettare ore per visualizzare una mappa.
  • Ci sono mappe disponibili per molti luoghi o ce ne sono molti mancanti?
    • Cioè, sono in Francia e ho bisogno che la mia applicazione funzioni almeno per le grandi città ... Andrà bene?
    • in caso contrario, è facile trovare livelli e visualizzazioni per OpenLayer e integrarli?
  • Esiste un tipo di API per visualizzare le strade?
    • Ad esempio, per mostrare strade a senso unico.
    • Se sì, come posso farlo? Devo avere una specie di file contenente quelle informazioni sulle strade e, quindi, visualizzarle sulla mappa da solo?
  • Conosci qualche buon tutorial per OpenLayers?

Non l'ho ancora provato, quelle sono solo domande fuori dal comune ...


Per curiosità, perché la "licenza OSS" sarebbe un punto a favore di OpenLayers, se non per ragioni filosofiche? Supponendo che la licenza di Google ti consenta di fare ciò che desideri gratuitamente, perché influenzerebbe la tua decisione in entrambi i casi?
Segna il

7
@Mark Ci sono problemi con la licenza di Google. IANAL ma capisco che la visualizzazione di dati su Google Maps dà a Google una licenza illimitata per copiare, modificare, trasformare e ridistribuire i tuoi dati. Ad esempio , è illegale mostrare tutti i dati derivati ​​dai prodotti GIS del sondaggio sulle ordinanze del Regno Unito su Google Maps. Un altro vantaggio di OSS è che OpenLayers non è soggetto ai capricci di un'organizzazione. Anche se in pratica, probabilmente puoi fidarti del buon senso di Google (e del denaro e dei motivi commerciali) per supportare Google Maps nel futuro
MarkJ,

1
Questi articoli potrebbero essere di qualche utilità: EveryBlock - Informazioni sulle nostre mappe: blog.everyblock.com/2008/feb/18/maps Un elenco a parte - Assumi il controllo delle tue mappe (anche da EveryBlock) alistapart.com/articles/takecontrolofyourmaps
mg1075

8
Google Maps non è completamente gratuito ( google.com/support/forum/p/maps/… ). La licenza dipende da come la usi.
Mo.

Vale la pena visitare il sito GIS.SE per la geografia di tutte le cose se non riesci a trovare una risposta su SO.
Roy,

Risposte:


158

Queste sono domande davvero fantastiche! Sono uno sviluppatore e fan professionista di OpenLayers, quindi affronterò le tue domande da quella prospettiva.

Perché dovrei usare OpenLayers invece di Google Maps?

  • Flessibilità: non sei legato ad alcun particolare fornitore di mappe o tecnologia. Puoi cambiare in qualsiasi momento e non devi riscrivere l'intero codice. Google, Yahoo, Microsoft, WMS, ArcGIS Server, MapServer, ecc. Sono tutti supportati immediatamente.
  • Supporto vettoriale: migliore supporto per punti, polilinee e poligoni.
  • Controllo: hai la possibilità di aggiungere nuove funzionalità di cui potresti aver bisogno. Ho scritto personalmente tre plugin per OpenLayer, due dei quali fanno o faranno parte del sorgente.
  • Debug: molto più facile eseguire il debug quando è possibile scorrere il codice sorgente!

Non mi preoccuperei affatto della fattibilità a lungo termine del progetto. È la principale libreria di mapping lato client open source.

Ci sono insidie ​​/ problemi comuni che posso incontrare?

  • La più grande trappola che ho incontrato è lavorare con la proiezione di Web Mercator (Google). Può essere una seccatura visualizzare dati vettoriali che si trovano in una proiezione comune e reale come WGS 84 in una mappa OpenLayers utilizzando le mappe di base di Google, Yahoo e Microsoft. Gli esempi sono tuoi amici.

Compatibilità del framework JavaScript

  • Uso il framework jQuery per tutto il mio lavoro e l'unico problema che ho avuto è fare riferimento a jQuery dopo OpenLayers. A parte questo, è stata una navigazione fluida.
  • Le prestazioni sono eccezionali! Gli unici problemi riguarderanno il tuo server di mappe o l'aggiunta di troppi vettori alla tua mappa.

Ci sono mappe disponibili per molti luoghi?

  • Come ho detto, puoi usare le mappe di base da qualsiasi fonte per qualsiasi parte del mondo.

Esiste un tipo di API per visualizzare le strade?

  • Darei un'occhiata a CloudMade! Hanno convertito il progetto OpenStreetMap in un servizio di tessere mappa e consentono uno stile personalizzato. Credo che tu possa progettare strade a senso unico (per il tuo esempio) in un modo particolare. La zona degli sviluppatori di CloudMade .

Conosci qualche buon tutorial per OpenLayers?

Spero sia utile. E sono in giro Stack Overflow se avete domande!


5
Ciao! Grazie mille per questa risposta, è davvero utile! Ci sono sicuramente alcuni punti interessanti (un migliore supporto vettoriale sarà probabilmente utile per il progetto a cui sto pensando; e non è l'unica cosa che stai dicendo che sia interessante!); Forse qualche volta farò qualche altra domanda: non ho ancora iniziato a lavorare con OL (questa domanda era piuttosto "prelimar" ^^), ma suppongo che verrà il momento, considerando le risposte che ho ottenuto!
Pascal MARTIN,

5
+1. Ho provato a non scrivere questo commento, ma non posso fare a meno. WGS84 non è una proiezione. (Vale la pena provare a imparare queste cose - sto dolorosamente raccogliendo un po 'di GIS, e mi aiuta davvero con le cose della mappa.)
MarkJ

1
WGS84 è un sistema di coordinate geografiche (utilizzato per visualizzare punti lat / long su un ellissoide). Il web mercator è praticamente la defacto proiezione web.
Roy,

35

Non è necessariamente una questione di OpenLayers o Google Maps. Dopotutto puoi utilizzare Google Maps per lo sfondo della tua mappa in OpenLayers. Alcune risposte più specifiche:

Perché OpenLayers?

  • Gli OpenLayer possono combinare mappe da diverse fonti (sfondo di Google Maps, overlay WMS, dati vettoriali da file KML o GML o WFS ecc.)
  • Puoi personalizzare gli OpenLayer molto più di quanto tu possa fare con Google Maps
  • Open source, è possibile controllare il codice sorgente durante il debug
  • Se hai bisogno di alta precisione nelle mappe, usa OpenLayer con un backend del server delle mappe adatto anziché Google Maps per ottenere una migliore proiezione della mappa (Google Maps presuppone che la terra sia una sfera perfetta)

insidie

  • Se si desidera utilizzare dati vettoriali (WFS) da un altro server, è necessario un proxy, a causa delle limitazioni di scripting tra siti

Prestazione

  • Dipende principalmente dalla velocità del backend della mappa
  • Visualizzare molte funzionalità vettoriali (il limite dipende dal browser, ma dire> 200 su una vista) richiede tempo, ma questo è più un problema del browser che un problema con OpenLayers

Framework JavaScript

  • Dai un'occhiata a GeoExt , ad esempio ExtJS + OpenLayers

Mappe disponibili

  • OpenLayers non viene fornito con un backend della mappa. Puoi utilizzare Google Maps, Yahoo Maps, MS Virtual Earth ecc. O qualsiasi altro servizio WMS e WFS a cui hai accesso

Belle risposte; grazie per tutte queste informazioni! Non conosco ancora i dettagli, ma potrei dover usare alcuni dati dal mio server, quindi tutto dovrebbe andare bene, in particolare con la possibilità di integrare diversi backend (Se ho capito bene ^^ Avrò la possibilità di testare che in un paio di giorni, spero ;-))
Pascal MARTIN,

1
@Pascal, sono contento che la risposta sia stata utile. Posso aggiungere che la comunità OpenLayers è molto attiva e le mailing list abbastanza utili.
Nils Weinander,

Se c'è qualcosa che vuoi fare che non è coperto nella pagina degli esempi di sviluppo, molto probabilmente non puoi farlo su google maps. ad esempio, anche gli script tra siti non devono essere coperti da un proxy: openlayers.org/dev/examples/cross-origin.html
Glenn Plas,

23

Non ho visto molta presenza da parte degli utenti OpenLayers su SO, ma sono là fuori. Le mailing list di OpenLayers sono piuttosto attive (sono su Users e Dev e vedo ovunque tra 50-100 e-mail al giorno che parlano di varie cose. Puoi anche cercare le liste da quei link.).

Non posso rispondere a tutte le tue domande, ma una cosa che metterò in evidenza è che OpenLayer e google maps non si escludono a vicenda. OpenLayers è una libreria javascript e puoi usarla per interagire con google maps. Dai un'occhiata a questo esempio: OpenLayer che utilizzano google maps . Ed ecco la pagina principale degli esempi di OpenLayers .


Grazie per la risposta! È bello vedere che le liste dei mailling sono piuttosto attive, prima di iniziare a lavorare con un progetto ^^
Pascal MARTIN,

13

Un punto che non è stato completamente chiarito qui è che l'uso di OpenLayers evita varie restrizioni che Google pone sui termini di servizio per le sue API delle mappe, tra cui:

  • Non puoi utilizzare legalmente una mappa di Google esclusivamente in una sezione del tuo sito che richiede un pagamento per accedere o per un sito privato a cui il pubblico non può iscriversi (ad es. Una intranet aziendale). (IANAL, ma vedi i Termini di servizio, 9.1 e le FAQ )

  • Non puoi legalmente (o praticamente) utilizzare l'API di Google per applicazioni offline (ovvero dove i riquadri sono offerti dal tuo computer). Anche se non c'erano restrizioni legali, Google rende questo tecnicamente molto difficile, mentre OpenLayers lo rende facile.

  • Google si riserva il diritto di chiudere l'accesso all'API se stai mostrando una mappa con contenuti che ritiene discutibili. L'esempio fornito nelle FAQ è una mappa delle droghe illegali, che dà un buon senso delle aree grigie che questa restrizione potrebbe coprire.

Vedi queste FAQ e i Termini di servizio per maggiori dettagli.

Detto questo, come sviluppatore di Google Maps di lunga data che ha iniziato di recente a utilizzare OpenLayers, ritengo che Google Maps abbia una documentazione migliore, una comunità di utenti più ampia e un'API più chiara e stabile di OpenLayers. Quindi devi fare un compromesso da qualche parte.


"Non puoi utilizzare legalmente una mappa di Google in una sezione del tuo sito che richiede un pagamento per accedere o per un sito privato a cui il pubblico non può iscriversi (ad es. Una intranet aziendale)." Non è corretto Puoi utilizzare Google Maps in una sezione a pagamento del tuo sito a condizione che la maggior parte degli utenti utilizzi il tuo sito e le tue mappe senza pagare. Ad esempio un sito web immobiliare. I poster devono pagare per elencare le loro case, ma la stragrande maggioranza degli utenti arriva a navigare nel sito senza pagare. In questo caso entrambi hanno accesso a Google Maps.
Craig

Grazie - intendevo dire che non puoi utilizzare l'API esclusivamente nelle sezioni obbligatorie per il pagamento. Ho aggiornato il mio post e aggiunto altri collegamenti per risolvere questo problema.
nrabinowitz,

OpenLayers utilizza l'API di Google Maps internamente, pertanto sei soggetto alla stessa licenza. osgeo-org.1560.x6.nabble.com/…
Alfredo Osorio

@AlfredoOsorio - sì, IFF usi i livelli di Google. Ci sono molte altre fonti di tessere.
nrabinowitz,

12

Dipende davvero da cosa vuoi usare per la mappa. Per tracciare semplicemente punti su una mappa, Google Maps andrà bene. Anche i livelli delle mappe per Google Maps sono abbastanza dettagliati. OpenLayers d'altra parte offre molte più funzionalità ed è molto estensibile.

OpenLayers ha molti esempi per iniziare.

Per quanto riguarda le mappe, OpenLayers è solo un'API, quindi è necessario fornire che mapperà i livelli. L'API di Google Maps sarà limitata ai livelli delle mappe forniti da Google. Con OpenLayer è possibile visualizzare praticamente qualsiasi servizio di mappe disponibile al pubblico (WMS, WFS, TMS, WMS-C). Un ottimo esempio è openstreetmap.org - (mappa stradale globale raccolta dalla comunità). OSM può essere aggiunto agli openlayer come livello TMS. Dai un'occhiata a questo esempio per istruzioni.


Ciao! Sembra che io sia la tua prima risposta qui! Benvenuto! E grazie per la risposta :-)
Pascal MARTIN,

9

Alcuni clienti potrebbero rifiutare o avere forti riserve sull'uso di Google Maps. Potrebbero avere dubbi validi sul fatto che Google possa introdurre pubblicità o modificare l'API senza preavviso. Tuttavia, Google Maps ha il vantaggio di integrarsi con altri servizi Google (segnaposto, aggiunta di foto, servizi di geocodifica). Essendo il Web puoi sempre combinare molti diversi servizi di mappatura e API.


1
+1. Ho alcuni clienti così. E non sto dicendo che si sbagliano. L'ultima volta che ho guardato, i termini della licenza di Google Maps consentono a Google di introdurre pubblicità nelle mappe ogni volta che lo desiderano.
MarkJ,

2
Inoltre, utilizzando GoogleMaps stai concedendo a Google una licenza perpetua, irrevocabile, esente da royalty e mondiale per riprodurre, adattare e modificare i tuoi contenuti.
MarkJ,

9

Sono d'accordo con tutte le risposte, ma c'è un punto molto importante che nessuno menziona. OpenLayers e Google Maps hanno obiettivi diversi.

OpenLayer è un eccellente framework per visualizzare i geodati, ma Google Maps è un pool di servizi che include un framework per visualizzare i geodati tra gli altri servizi.

Quindi, Google Maps espone molti servizi e funzionalità che OpenLayes non ha. Alcuni esempi di funzionalità e servizi di Google Maps sono la localizzazione della regione, il rilevamento del sensore (per dispositivo con GPS) e la localizzazione dell'utente, la geocodifica e la geocodifica inversa, la vista stradale, ecc.


6

Ho usato entrambe le API. Realizzo un software per aziende e questo software richiede il mapping ma non tutti i client dispongono di una licenza GoogleMaps, quindi devo supportare entrambi i tipi di mappe.

Ho creato un'API comune per sottrarre le differenze tra loro e lascia che te lo dica, alcune cose sono più facili da fare in una delle altre. Come limitare i limiti di dove è possibile eseguire il pan della mappa, è molto più facile da fare in OpenLayers, ma le mappe di calore sono più facili da usare su GoogleMaps (è ufficialmente supportato da google, a differenza dei plugin OpenLayers disponibili).

  1. OpenLayers supporta mappe offline. Alcuni dei miei utenti si trovano su Intranet private senza connessione a Internet.

  2. GoogleMaps ha due plugin assolutamente indispensabili , MarkCluster e Spiderfier che rendono possibile la visualizzazione di un numero enorme di marcatori.

  3. Le InfoWindows di GoogleMaps sono più facili da usare e hanno una migliore usabilità rispetto a OpenLayers.Popups. Queste sono le piccole finestre che possono aprirsi quando si fa clic su un marcatore. GoogleMaps InfoWindows è anche molto più carino per impostazione predefinita, devi fare un po 'di magia CSS con i popup.

  4. GoogleMaps ha streetview che a volte è utile.

  5. GoogleMaps ha più funzioni di cui potresti aver bisogno. Sebbene molte funzionalità siano presenti anche in OpenLayer, ma non supportate ufficialmente.

Di solito alla fine dovresti andare con OpenLayers a causa del mal di testa ridotto che potresti ottenere dalle licenze e dall'utilizzo della banda da googlemaps. Entrambi gestiscono molto bene la mappatura di base (ovvero la visualizzazione di marcatori sulla cima di una mappa). A meno che tu non riesca a trovare una funzionalità specifica di cui hai bisogno da una che non è presente nell'altra, dovresti optare per OpenLayers. Consulta questo per ulteriori informazioni sulla fatturazione di googlemaps e su quando puoi utilizzarlo gratuitamente.

Anche GoogleMaps ha il suo tipo di geolocalizzazione di base come 'LatLng' e Openlayers usa 'LonLat' che mi fa impazzire perché continuo a confondere l'ordine dei parametri nelle chiamate di funzione.


3

Oltre a quelli che hanno menzionato i problemi di velocità, vorrei aggiungere che il renderer VML di IE può diventare molto lento con un livello vettoriale con molte funzionalità. Un utente ha menzionato circa 200. Questo è esattamente ciò che posso aggiungere prima che IE rallenti considerevolmente fino al punto di congelamento. Se aggiungi funzionalità che sono etichette di testo, puoi aggiungerne metà in meno, probabilmente perché internamente ogni etichetta di testo è composta da due elementi VML.

In Google puoi creare un GOverlay personalizzato il cui contenuto è un "div", che viene reso senza problemi in IE.


3

Un paio di cose da aggiungere, da due punti di vista: l'utilizzo del client e il derving dei dati.

Utilizzo del cliente:

  • A quali clienti siete abituati attualmente? Il cambiamento può essere difficile.
  • Di quanta funzionalità hai davvero bisogno? OpenLayers ha un bel po ', ma se non lo stai usando ...

Elaborazione dati:

  • Stai fornendo dati KML ? In tal caso, entrambi OpenLayer e Google Maps funzioneranno con esso e probabilmente dovrai decidere in base all'utilizzo del client.

  • Stai servendo altri tipi di servizi dati? (WMS, WFS, CSV, ecc.) In tal caso, è molto probabile che OpenLayers abbia esempi e supporti.


2

OL ha una grande base di fan ed è forse il geothing OpenSource più usato al mondo.

Non vedi che molti thread e post su di esso in questo cyberplace perché le persone qui tendono a discutere di altri tipi di tecnologia, come JSF e Mobile (non geo), non perché OL è come una struttura.

Tuttavia Ol ha alcuni inconvenienti, principalmente che è così basso livello che devi scrivere un sacco di codice per fare operazioni comuni. Questo può funzionare anche nel modo giusto, perché come sviluppatore a: hai tutto il codice in anticipo eb: modificare e personalizzare è molto semplice.

Ci sono geotool gratuiti più sofisticati, ma tutto ciò che fanno è chiamare openlayer e astrarre alcune delle faccende più noiose.

Quindi usalo con fiducia. È maturo, robusto e non morirà in un futuro prevedibile. Tuttavia, se si desidera accelerare il processo di sviluppo, è necessario provare gli altri strumenti che montano sopra di esso.

buona giornata


Ciao, potresti approfondire i "geotool gratuiti più sofisticati" che si trovano in cima a OpenLayers? GeoExt è stato menzionato sopra, ma non ho ancora visto nessun altro specificato. Grazie.
Brian B,

@BrianB ciao Brian, precisamente stavo pensando al geoext quando ho scritto "geotools gratuiti più sofisticati". Quella libreria unisce un EXTJS con openlayer.
demonz demonz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.