Confrontando varie librerie di mappatura JavaScript?


138

Sto lavorando su un sistema di mappatura basato sul web e sto cercando di capire quale libreria utilizzare.

Questi sono collegamenti a confronti di librerie disponibili:

inserisci qui la descrizione dell'immagine

L'elenco delle biblioteche finora:

  • Google Maps
  • Microsoft Virtual Earth
  • MapQuest
  • Opuscolo : "Il commento più piccolo, più veloce, più recente e più semplice può anche essere letto come meno funzioni e meno testato." -Geographika (vedi sotto)
  • API ArcGIS per JavaScript - Funziona al meglio con ArcGIS Server (vedi sotto). Sono inoltre disponibili estensioni di Google Maps e Bing Maps , che ti consentono di utilizzare l'API ESRI con le mappe di Google / Bing (anche se questo è vero per la maggior parte delle biblioteche).
  • API di Yahoo Map
  • Via Michelin
  • OpenLayers : ampia documentazione e una buona quantità di funzionalità oltre alla possibilità di utilizzare diversi provider di mappe.
  • Mapquery - MapQuery è stato rilasciato e ora ha una documentazione utile. Ha l'obiettivo molto utile di combinare OpenLayers e jQuery. Se sei particolarmente appassionato dell'idea di OpenLayers + jQuery o se vuoi contribuire a una libreria di mappatura JavaScript, fatti coinvolgere e contribuisci ai tuoi sforzi. Tuttavia, se vuoi solo essere un utente finale o sei nuovo in quest'area, potrebbe non essere adatto a te.
  • Mapstraction : semplifica le cose, soprattutto lavorando con più provider di mappe di base. Tuttavia è ancora un lavoro in corso e la funzionalità è carente in alcuni punti, così come la documentazione. (Ad esempio "Un oggetto GeoJSON con il tipo" FeatureCollection "è un oggetto di raccolta di funzionalità." Non molto informativo.) Sembra che sia ancora in fase di sviluppo attivo ma dal 4/04/11 non è stato eseguito un commit su Github da gennaio.
  • deCarta - Ha un javascript mobile e desktop - il primo è conforme a HTML5 / CSS3 e il secondo ha una maggiore compatibilità con il browser. Codice sorgente fornito. Termini di sviluppo più amichevoli per un'API commerciale. È consentito marchiare la mappa e esistono diversi stili di mappa. È possibile scegliere i dati NAVTEQ o OSM. Hanno anche diverse API mobili. - a cura di TheSteve0 - un dipendente deCarta
  • CloudMade
  • Polymaps : semplifica la composizione di dati raster e vettoriali da molte fonti diverse. Ti consente di aggiungere facilmente la tua colorazione, raggruppamento e interazione. Funziona rapidamente, gestisce bene il caricamento delle tessere di sfondo ed è solo 30k di Javascript. Un potenziale lato negativo: utilizza SVG, il che significa che non funziona e non funzionerà in MSIE 7 o 8. Funziona benissimo in tutti gli altri browser e dovrebbe funzionare in IE9
  • Jump - jump è una libreria di mappe leggera che funziona da sola, il che significa che non è un wrapper per OpenLayers o GoogleMaps API. Attualmente è in fase di sviluppo, ma molte funzioni essenziali funzionano bene.
  • ModestMaps - Un'altra libreria di mappatura JS più piccola, più veloce e più recente dai creatori di Mapbox e TileMill.
  • Mapiator

OpenLayers è quello che sto attualmente usando. Puoi fare molto con esso e supporta la maggior parte dei tipi di dati. Tuttavia non è il migliore per tutto. Ad esempio, Leaflet sembra più fluido in molti modi, con sbiadimento dell'immagine e altre modifiche visive. Se ti piacciono i jQuery, potresti provare MapQuery, che è come una combinazione di jQuery e OpenLayers.

Risposte:


93

Questa domanda è stata convertita in Wiki della comunità e wiki bloccato perché è un esempio di una domanda che cerca un elenco di risposte e sembra essere abbastanza popolare da proteggerlo dalla chiusura. Dovrebbe essere trattato come un caso speciale e non dovrebbe essere visto come il tipo di domanda che è incoraggiata su questo o su qualsiasi sito Stack Stack, ma se desideri contribuire con più contenuti ad esso, sentiti libero di farlo modificando questa risposta .


Per gli sviluppatori in background non GIS che creano app di mapping a funzione singola, consiglierei probabilmente Leaflet (ora supportato da MapBox). Facile da usare e piccolo. Più funzionalità si basa su plug-in di qualità e supporto variabili.

L'applicazione di tipo online GIS - usa OpenLayers3 - ha la suite completa di origini dati, controlli ecc. In un'unica libreria. Può anche essere usato per semplici app di mappatura, quindi se hai un mix lo userei per tutto.

Google ha ancora la combinazione libreria / dati (ad esempio StreetView non è disponibile altrove).

Esri ha i costruttori di app Web GUI e, come indicato di seguito, perché complicare le cose se si utilizza già il loro stack.

API commerciali (Google, Bing, Yahoo)

L'uso di qualsiasi API commerciale ti lascia in balia di qualsiasi modifica apportata dal provider all'API o ai Termini di servizio. Cosa succede ad esempio se all'improvviso il tuo portale del governo locale che utilizza Google Maps ha improvvisamente pubblicità spuntate dappertutto ? Vuoi riutilizzare il codice JavaScript di Google Maps per un sito Intranet? Ti ritroverai a dover pagare la tassa di licenza di $ 10.000.

Microsoft ha spesso termini più definiti e fissi per i propri servizi (se a pagamento), quindi qui potrebbero esserci meno rischi.

Il recente contraccolpo contro Twitter è un buon esempio di sviluppatori che hanno un'API che è cambiata sotto di loro. Se non stai pagando per un servizio, tu (o il tuo sistema) sei quello che viene venduto.

Google ha iniziato l'addebito per l'utilizzo delle proprie mappe da ottobre 2011.

Esri

Come altri hanno già detto se si utilizza uno stack Esri, l'API ArcGIS per JavaScript funzionerà senza dubbio al di sopra di esso. Proveniente da un background GIS, Esri ha probabilmente pensato più ai compiti e alle funzionalità GIS tradizionali che ai giganti del web "neo-geografia" (sebbene questo sia solo un parere / sentimento).

OpenLayers ha integrato il supporto per i livelli REST di ArcGIS e se stai cercando di riutilizzare il tuo codice per siti Web non basati su ESRI, un'API aperta ti offre di più.

Usa OpenLayer ...

Non riesco davvero a capire perché gli sviluppatori utilizzino un'API diversa da OpenLayers. Progetti Open Source portano a progetti Open Source correlati quindi ci sono un gran numero di componenti riutilizzabili là fuori, come la biblioteca GeoExt , MapQuery e GeoPrisma .

Aggiungerò che solo perché un progetto è Open Source non lo rende automaticamente migliore degli equivalenti commerciali, ma l'API OpenLayers corrisponde alla concorrenza commerciale in questo caso e la capacità di vedere come funziona il sorgente, i test unitari, il costruire script ecc. significa che puoi facilmente creare nuove funzionalità su di esso.

Ci sono state alcune recenti critiche nei confronti di OpenLayer, principalmente legate a complessità, stile e dimensioni. Ci sono state contro-argomentazioni fatte qui e qui da Christopher Schmidt, uno dei principali sviluppatori di OpenLayers.

Vale la pena notare che se avete bisogno di un semplice mappatura API Open Source poi dare un'occhiata al di CloudMade opuscolo .

Il commento più piccolo, più veloce, più recente e più semplice può anche essere letto come meno funzioni e meno testato.

Scansiona la documentazione API per Leaflet e OpenLayers . Quest'ultimo include elementi come livelli WFS, strumenti di modifica e supporto SLD. È stato anche testato in molti ambienti diversi e funziona in IE6 (consentendo agli utenti delle autorità locali e governative).

Per una visualizzazione più semplice dei dati spaziali, il volantino sembra ideale e più facile da iniziare. Tuttavia, continuerò a utilizzare OpenLayer per applicazioni GIS più ricche di funzionalità.

Avvertenze

Un possibile svantaggio è che spesso si vedono nuove innovazioni nei sistemi dei fornitori commerciali, che tuttavia filtrano quasi sempre attraverso OpenLayer in tempo.

Infine, sono sicuro che ci sono alcuni scenari in cui altre API sono più adatte: su hardware personalizzato, per adattarsi a organizzazioni di altri sistemi IT o se conosci già un'API dentro e fuori e puoi sviluppare un sistema in metà tempo .

Tutte le API che hai citato sono in grado di produrre grandi sistemi di mappatura online, ma la tua scelta dovrebbe anche adattarsi a te o alle esigenze di sviluppo futuro della tua azienda.


50

C'è un nuovo giocatore sul fronte della mappatura javascript - Leaflet . Sviluppato da CloudMade con licenza BSD.

Sembra davvero promettente.

inserisci qui la descrizione dell'immagine

( Fonte )


3
Wow, questa sembra essere una biblioteca impressionante. Sono sorpreso di non essere a conoscenza di questo.
dkroy,

2
Ecco un confronto tra il comportamento di navigazione di volantini e openlayer.
dkroy,

2
Bel diagramma di flusso. Il volantino è davvero bello.
Mr_Chimp,

7
Dopo aver provato a usare Leaflet per alcune cose più complesse, devo ammettere che è abbastanza limitato rispetto a OpenLayers o GeoExt. È molto facile da configurare e ha un bell'aspetto ma c'è un limite a ciò che puoi fare in termini di interazioni. Ancora una volta, ognuno ha il suo posto.
Mr_Chimp,

3
Copia aggiornata del grafico (da gennaio 2012) è disponibile su: geotux.tuxfamily.org/index.php/en/geo-blogs/item/…
Will.

35

Avevo un progetto Google Maps / arcgis api e circa un anno fa, ho deciso di provare OpenLayers. Più ci ho lavorato e più mi è piaciuto, quindi ho deciso di migrare. Ho ridotto 30-100 righe di codice google in 1-3 righe più volte nel mio codice. Semplicemente perché OpenLayers si divertiva per quello che volevo fare e dovevo codificarlo manualmente per google maps.


2
Va tutto bene. Grazie per il tuo contributo! Non sono sicuro che ci sia una risposta giusta per questo, quindi opinioni e aneddoti sono utili.
Mr_Chimp

2
+1 Ho sempre scelto OpenLayer su Google Maps se il compito è quello di visualizzare più di una mano piena di marcatori.
underdark

20

CartoDB è uno strumento per l'analisi, la virtualizzazione e la condivisione dei dati geospaziali in PostGIS. È unapiattaforma di database geospaziale open source che fornisce un livello API SQL. Consente agli sviluppatori di eseguire query su un database PostrgreSQL + OpenGIS cloud ottimizzato per scopi geospaziali.

inserisci qui la descrizione dell'immagine



12

Confronto (con punti salienti e note) il codice richiesto per svolgere un compito semplice, specifico e comune in:

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

qui: http://trippingthebits.com/geopres/

Il post è per una presentazione che ho fatto su jQuery Geo, che purtroppo manca dalla tua lista.


Questo è un buon articolo. Mi piace la tua codifica a colori! Ottima idea.
Mr_Chimp

jQuery Geo FTW!
Sameer,

1
Grazie @SameerAlibhai! Restate sintonizzati, pubblicheremo presto Release Candidate 1.
Ryanttb,

11

Voglio visualizzare un globo all'interno del browser Il Cesio è bello. (Funziona senza plugin ma il browser ha bisogno del supporto WebGL)

Può visualizzare la vista 3D, 2D e 2.5D

Il cesio supporta 3D, 2D e 2.5D

Supporto per diversi formati raster / vettoriali (KML ecc.)

Supporto per dati raster / vettoriali differnet

Controllo gratuito dei voli Camera e Camera

Controlla la videocamera

... e tutto all'interno dei browser (moderni).


2
wow, questo è davvero un bel progetto! :)
Krystian,

1
OK, ma allora puoi spiegarci perché Cesium non supporta (e molti altri) lo standard WFS (Web Feature Service)? Mi sembra che sia un visualizzatore molto potente, ma non un sistema GIS.
Imprenditore Web-GIS il

11

Non sono competente a fare un confronto completo, ma ho realizzato tre diversi piccoli progetti con Polymaps e posso commentarlo. Il suo punto di forza è che semplifica la composizione di dati raster e vettoriali da molte fonti diverse. Può soddisfare tutte le tue esigenze, in particolare permettendoti di aggiungere facilmente la tua colorazione, raggruppamento e interazione. Polymaps è anche abbastanza efficiente: funziona rapidamente, gestisce bene il caricamento delle tessere di sfondo ed è solo 30k di Javascript.

Lo svantaggio principale di Polymaps è che utilizza SVG, il che significa che non funziona e non funzionerà in MSIE 7 o 8. Funziona alla grande in tutti gli altri browser e dovrebbe funzionare in IE9, ma non sono sicuro di quanto sia stato testato. Anche SVG è un punto di forza: è facile da programmare e il rendering sembra eccezionale, in particolare ridimensionando le funzioni vettoriali e raster con piccoli incrementi.

Un avvertimento sulle biblioteche: se si desidera utilizzare le tessere raster di Google come mappa di base, è necessario utilizzare le loro librerie Javascript. OpenStreetMap, ecc. Hanno licenze molto più permissive che consentono la scelta delle librerie.

(Questa risposta è del 2011 e molte cose sono cambiate. Polymaps non è più mantenuta. A questo punto Leaflet è la libreria open source preferita.)


4
Solo un aggiornamento sulla mia risposta; Polymaps non ha avuto alcun sviluppo da un paio d'anni. È ancora una biblioteca interessante con alcune abilità uniche, ma non la userei per un nuovo progetto. In questi giorni sto usando Leaflet.
Nelson,

9

Sono uno studente laureato in cartografia e un nuovo arrivato nel web mapping, ma ho lavorato a un progetto per confrontare le diverse tecnologie là fuori e mettere insieme una guida "how to" di base per iniziare con il web mapping. La mia analisi non è affatto completa e ho cercato di dare un'idea di ciascuna libreria giocando con loro e attraverso post come questi da programmatori più esperti. Sarei felice di ricevere qualsiasi feedback.


(+1) Grazie per il tuo contributo - benvenuto nella nostra community!
whuber


7

Anche Mapfluence di Urban Mapping è nel mix. Piattaforma di mapping ospitata che offre geoservizi basati sul web, accessibili RESTfully e con API JavaScript (documentazione / tutorial migliorata in rotta). O OL se lo vuoi. Realizziamo i nostri riquadri di base , disponiamo di un vasto catalogo di dati su richiesta e supportiamo i dati e altre query di visualizzazione.

Dai un'occhiata al webinar di O'Reilly su Wed sui geoservizi + big data per una panoramica di cosa è ciò che è geo.


7

Puoi anche dare un'occhiata a Geomajas . Questo è un framework GIS che è scritto in Java (incluso un client Java usando GWT). Tuttavia, è attualmente in corso un plug-in per fornire un'API lato client completa in JavaScript. Non ancora abbastanza stabile ma vale la pena dare un'occhiata. Il vantaggio dell'utilizzo di Geomajas è la forte integrazione tra back-end e client che presenta alcuni vantaggi tra cui la possibilità di scaricare facilmente il lavoro sul server e aggiunto soprattutto per la sicurezza.



4

Se stai cercando una libreria di visualizzazione dei dati, dai un'occhiata a Highmaps , dalle persone dietro Highcharts (me compreso - attualmente impiegato come sviluppatore di software). È gratuito per uso non commerciale, funziona perfettamente con i browser mobili (supporto full touch) e IE precedente fino a IE6. Supporta funzionalità dinamiche avanzate come drilldown e descrizioni comandi avanzate.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine



1
Abbastanza giusto, modificato.
Oystein,

3

È possibile trovare una metodologia interessante per confrontare le funzionalità desiderate dalle librerie di mappatura JavaScript (non limitate a questo caso d'uso). È stato presentato all'evento NACIS 2012 da Richard Donohue & al. . La parte interessante riguarda come effettuano la classificazione in base allo scopo e alle caratteristiche richieste.



2

Forse puoi anche considerare Heron . È costruito su Ext e gli strati aperti insieme hanno molti modelli che puoi personalizzare.

Un altro potenziale candidato è GeoJS .

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.