¿Comparando varias bibliotecas de mapeo de JavaScript?


138

Estoy trabajando en un sistema de mapeo basado en la web y estoy tratando de averiguar qué biblioteca usar.

Estos son enlaces a comparaciones de bibliotecas disponibles:

ingrese la descripción de la imagen aquí

La lista de bibliotecas hasta ahora:

  • mapas de Google
  • Microsoft Virtual Earth
  • MapQuest
  • Folleto : "El comentario más pequeño, más rápido, más nuevo y más directo también se puede leer como menos funciones y menos pruebas". -Geographika (ver abajo)
  • ArcGIS API for JavaScript : funciona mejor con ArcGIS Server (ver más abajo). Las extensiones de mapas de Google Maps y Bing también están disponibles, lo que le permite utilizar la API de ESRI con los mapas de Google / Bing (aunque esto es cierto para la mayoría de las bibliotecas).
  • Yahoo Map API's
  • Vía michelin
  • OpenLayers : amplia documentación y una buena cantidad de funcionalidad, además de la capacidad de utilizar diferentes proveedores de mapas.
  • Mapquery : MapQuery se ha lanzado y ahora tiene documentación útil. Tiene el objetivo muy valioso de combinar OpenLayers y jQuery. Si está particularmente interesado en la idea de OpenLayers + jQuery, o si desea contribuir a una biblioteca de mapeo de JavaScript, participe y contribuya con sus esfuerzos. Sin embargo, si solo desea ser un usuario final o es nuevo en esta área, puede que no sea para usted.
  • Mapstraction : hace las cosas muy simples, especialmente trabajando con múltiples proveedores de mapas base. Sin embargo, todavía es un trabajo en progreso y la funcionalidad falta en algunos lugares, como es la documentación. (Por ejemplo, "Un objeto GeoJSON con el tipo" FeatureCollection "es un objeto de colección de características." No es muy informativo.) Parece que todavía se está desarrollando activamente, pero a partir del 4/4/11 no ha habido una confirmación en Github desde enero.
  • deCarta : tiene un javascript móvil y de escritorio; el primero es compatible con HTML5 / CSS3 y el segundo tiene más compatibilidad con el navegador. Código fuente proporcionado. Términos de desarrollo más amigables para una API comercial. Puede marcar el mapa y hay varios estilos de mapa diferentes. Puede elegir datos NAVTEQ u OSM. También tienen varias API móviles también. - editado por TheSteve0 - un empleado de deCarta
  • Hecho en la nube
  • Polymaps : hace que sea muy fácil componer datos ráster y vectoriales de muchas fuentes diferentes. Le permite agregar fácilmente su propio color, agrupación e interacción. Se ejecuta rápidamente, gestiona bien la carga de mosaicos en segundo plano y solo tiene 30k de Javascript. Una desventaja potencial: utiliza SVG, lo que significa que no funciona y no funcionará en MSIE 7 u 8. Funciona muy bien en cualquier otro navegador y debería funcionar en IE9
  • Jump - jump es una biblioteca de mapas liviana que funciona por sí sola, lo que significa que no es un contenedor para OpenLayers o API de GoogleMaps. Actualmente está en desarrollo, pero muchas características esenciales funcionan bien.
  • ModestMaps : otra biblioteca de mapeo JS más pequeña, más rápida y más nueva de los creadores de Mapbox y TileMill.
  • Mapiador

OpenLayers es el que estoy usando actualmente. Puede hacer mucho con él y es compatible con la mayoría de los tipos de datos. Sin embargo, no es lo mejor para todo. Por ejemplo, el folleto parece más suave en muchos sentidos, con desvanecimiento de la imagen y otros ajustes visuales. Si le gusta jQuery, puede consultar MapQuery, que es como una combinación de jQuery y OpenLayers.

Respuestas:


93

Esta pregunta se ha convertido a Community Wiki y wiki bloqueado porque es un ejemplo de una pregunta que busca una lista de respuestas y parece ser lo suficientemente popular como para protegerla del cierre. Debe tratarse como un caso especial y no debe verse como el tipo de pregunta que se recomienda en este, o en cualquier sitio de Stack Exchange, pero si desea contribuir con más contenido, no dude en hacerlo editando esta respuesta .


Para desarrolladores en segundo plano que no son SIG que crean aplicaciones de mapeo de función única, probablemente recomendaría Leaflet (ahora compatible con MapBox). Fácil de usar y pequeño. Más funcionalidad se basa en complementos de diferente calidad y soporte.

La aplicación de tipo en línea SIG - use OpenLayers3 - tiene el conjunto completo de fuentes de datos, controles, etc. en una sola biblioteca. También se puede usar para aplicaciones de mapeo simples, por lo que si tiene una combinación, la usaría para todo.

Google todavía tiene la combinación de biblioteca / datos (por ejemplo, StreetView no está disponible en ningún otro lugar).

Esri tiene creadores de aplicaciones web GUI y, como se indica a continuación, ¿por qué complicar las cosas si ya usa su pila?

API comerciales (Google, Bing, Yahoo)

El uso de cualquier API comercial lo deja a merced de los cambios que el proveedor realice en la API o en los Términos de servicio. ¿Qué sucede, por ejemplo, si de repente su portal del gobierno local que usa Google Maps de repente tiene anuncios apareciendo por todas partes ? ¿Desea reutilizar su código JavaScript de Google Maps para un sitio de Intranet? Tendrá que pagar la tarifa de licencia de $ 10,000.

Microsoft a menudo tiene términos más definidos y fijos para sus servicios (si paga), por lo que puede haber menos riesgo aquí.

La reciente reacción violenta contra Twitter es un buen ejemplo de desarrolladores que tienen una API que cambió debajo de ellos. Si no está pagando por un servicio, entonces usted (o su sistema) es el que se vende.

Google comenzó a cobrar por el uso de sus mapas a partir de octubre de 2011.

Esri

Como otros han mencionado si está utilizando una pila de Esri, la API de ArcGIS para JavaScript, sin duda, funcionará bien. Viniendo de un fondo SIG, Esri probablemente haya pensado más en las tareas y características tradicionales de los SIG que en los gigantes de la web "neo-geografía" (aunque esto es solo una opinión / sentimiento).

OpenLayers ha incorporado soporte para las capas REST de ArcGIS , y si está buscando reutilizar su código para sitios web no basados ​​en ESRI, nuevamente, una API abierta le sirve mejor.

Use OpenLayers ...

Realmente no puedo pensar por qué los desarrolladores usarían una API que no sea OpenLayers. Proyectos de código abierto conducen a proyectos de código abierto relacionados por lo que hay una gran cantidad de componentes reutilizables por ahí como la biblioteca GeoExt , MapQuery y GeoPrisma .

Solo agregaré eso solo porque un proyecto es Open Source no lo hace automáticamente mejor que sus equivalentes comerciales, pero la API de OpenLayers coincide con la competencia comercial en este caso y la capacidad de ver cómo funciona la fuente, las pruebas unitarias, el crear scripts, etc., significa que puede crear fácilmente nuevas funciones sobre él.

Ha habido algunas críticas recientes de OpenLayers, principalmente relacionadas con la complejidad, el estilo y el tamaño. Christopher Schmidt, uno de los principales desarrolladores de OpenLayers, ha formulado contraargumentos a estos aquí y aquí .

Vale la pena señalar que si necesita un simple API de mapas de código abierto y luego echar un vistazo a Cloudmade del Folleto .

El comentario más pequeño, más rápido, más nuevo y más directo también se puede leer como menos funciones y menos probado.

Escanee la documentación de la API en busca de folletos y OpenLayers . Este último incluye elementos como capas WFS, herramientas de edición y soporte SLD. También se ha probado en muchos entornos diferentes y funciona en IE6 (permitiendo a los usuarios de las autoridades gubernamentales y locales).

Para una visualización más sencilla de los datos espaciales, el folleto parece ideal y más fácil de comenzar. Sin embargo, me quedaré con OpenLayers para obtener más aplicaciones SIG ricas en funciones.

Advertencias

Una posible desventaja es que a menudo las nuevas innovaciones se ven primero en los sistemas de los proveedores comerciales; sin embargo, estas casi siempre se filtran a través de OpenLayers a tiempo.

Finalmente, estoy seguro de que hay ciertos escenarios en los que otras API son más adecuadas: en hardware personalizado, para adaptarse a una organización u otros sistemas de TI, o si ya conoce una API de adentro hacia afuera y puede desarrollar un sistema en la mitad del tiempo .

Todas las API que mencionó son capaces de producir excelentes sistemas de mapeo en línea, pero su elección también debe adaptarse a las necesidades de desarrollo futuras de usted o de su empresa.


50

Hay un nuevo jugador en el frente de mapeo de JavaScript: folleto . Desarrollado por CloudMade bajo licencia BSD.

Parece realmente prometedor.

ingrese la descripción de la imagen aquí

( Fuente )


3
Wow, esto parece ser una biblioteca impresionante. Me sorprende no haber sido consciente de esto.
dkroy

2
Aquí hay una comparación del comportamiento de navegación de folletos y capas abiertas.
dkroy

2
Bonito diagrama de flujo. El folleto es realmente muy agradable.
Mr_Chimp

77
Después de intentar usar Leaflet para algunas cosas más complejas, debo admitir que es bastante limitado en comparación con OpenLayers o GeoExt. Es muy fácil de configurar y se ve muy bien, pero hay un límite para lo que puede hacer en términos de interacciones. Una vez más, cada uno tiene su lugar.
Mr_Chimp

3
Una copia actualizada de la tabla (desde enero de 2012) está disponible en: geotux.tuxfamily.org/index.php/en/geo-blogs/item/…
Will.

35

Tenía un proyecto de API de Google Maps / arcgis y hace aproximadamente un año, decidí probar OpenLayers. Cuanto más trabajaba con él, más me gustaba, así que decidí migrar. Corté 30 - 100 líneas de código de google en 1 - 3 líneas una y otra vez a lo largo de mi código. Simplemente porque OpenLayers tenía funciones para lo que quería hacer y tenía que codificarlo manualmente para Google Maps.


2
Está todo bien. ¡Gracias por tu contribución! No estoy seguro de que haya una respuesta correcta para esto, por lo que las opiniones y anécdotas son útiles.
Mr_Chimp

2
+1 Siempre elegí OpenLayers sobre Google Maps si la tarea es mostrar más de un puñado de marcadores.
oscuro

20

CartoDB es una herramienta para analizar, visualizar y compartir sus datos geoespaciales en PostGIS. Es unaplataforma de base de datos geoespaciales de código abierto que proporciona una capa de API SQL. Permite a los desarrolladores realizar consultas a una base de datos en la nube PostrgreSQL + OpenGIS optimizada para fines geoespaciales.

ingrese la descripción de la imagen aquí



12

Comparo (con notas destacadas y notas) el código requerido para hacer una tarea simple, específica y común en:

  • MapQuest
  • mapas de Google
  • Bing
  • Ovi
  • Esri
  • OpenLayers
  • jQuery Geo

aquí: http://trippingthebits.com/geopres/

La publicación es para una presentación que hice en jQuery Geo, que lamentablemente falta en su lista.


Ese es un buen artículo. Me gusta tu codificación de colores! Muy buena idea.
Mr_Chimp

jQuery Geo FTW!
Sameer

1
Gracias @SameerAlibhai! Estén atentos, publicaremos Release Candidate 1 pronto.
ryanttb

11

Si desea visualizar un globo dentro del navegador, Cesium es agradable. (Funciona sin complemento pero el navegador necesita soporte WebGL)

Puede mostrar vistas en 3D, 2D y 2.5D

El cesio es compatible con 3D, 2D y 2.5D

Soporte para diferentes formatos de trama / vector (KML, etc.)

Soporte para datos de trama / vector denetnet.

Control libre de los vuelos de la cámara y la cámara

Controlar la cámara

... y todo dentro de los navegadores (modernos).


2
wow, este es realmente un muy buen proyecto! :)
Krystian

1
De acuerdo, pero ¿puede explicarnos por qué Cesium no es compatible (y muchos otros) con el estándar WFS (Web Feature Service)? Me parece que es un espectador muy poderoso, pero no un sistema SIG en absoluto.
Web-GIS emprendedor

11

No soy competente para hacer una comparación completa, pero he realizado tres pequeños proyectos diferentes con Polymaps y puedo comentar sobre eso. Su principal fortaleza es que hace que sea muy fácil componer datos ráster y vectoriales de muchas fuentes diferentes. Puede cumplir con todos sus requisitos, particularmente al permitirle agregar fácilmente su propio color, agrupación e interacción. Polymaps también es bastante eficiente: se ejecuta rápidamente, gestiona bien la carga de mosaicos de fondo y solo tiene 30k de Javascript.

El principal inconveniente de Polymaps es que usa SVG, lo que significa que no funciona y no funcionará en MSIE 7 u 8. Funciona muy bien en todos los demás navegadores y debería funcionar en IE9, pero no estoy seguro de qué tan bien lo haya probado. SVG también es una fortaleza: es fácil de programar y el renderizado se ve muy bien, particularmente escalando características vectoriales y rasterizadas en pequeños incrementos.

Una advertencia sobre las bibliotecas: si desea utilizar los mosaicos ráster de Google como mapa base, debe usar sus bibliotecas Javascript. OpenStreetMap, etc. tienen licencias mucho más permisivas que permiten elegir bibliotecas.

(Esta respuesta es de 2011 y muchas cosas han cambiado. Polymaps ya no se mantiene. En este momento, Leaflet es la biblioteca de código abierto preferida).


44
Solo una actualización de mi respuesta; Polymaps no ha tenido ningún desarrollo en un par de años. Sigue siendo una biblioteca interesante con algunas habilidades únicas, pero no la usaría para un nuevo proyecto. En estos días estoy usando el folleto.
Nelson

9

Soy un estudiante de posgrado en cartografía y un recién llegado a la cartografía web, pero he estado trabajando en un proyecto para comparar las diferentes tecnologías y elaborar una guía básica de "cómo" para comenzar con la cartografía web. Mi análisis no es de ninguna manera exhaustivo, y he estado tratando de tener una idea de cada biblioteca jugando con ellas y a través de publicaciones como estas de programadores más experimentados. Estaría encantado de recibir cualquier comentario.


(+1) Gracias por su contribución, ¡bienvenido a nuestra comunidad!
whuber


7

Mapfluence de Urban Mapping también está en la mezcla. Plataforma de mapeo alojada que ofrece geoservicios basados ​​en la web, accesibles RESTfully y con JavaScript (documentación / tutoriales mejorados en ruta) API. O OL si lo quieres. Representamos nuestros propios mosaicos base , tenemos un catálogo masivo de datos a pedido y damos soporte a datos y otras consultas de visualización.

Consulte el seminario web de O'Reilly el miércoles sobre geoservicios + big data para obtener una descripción general de qué es qué en geo.


7

También podrías echar un vistazo a Geomajas . Este es un marco SIG que está escrito en Java (incluido un cliente Java que usa GWT). Sin embargo, actualmente hay un complemento en progreso para proporcionar una API completa del lado del cliente en JavaScript. Todavía no es bastante estable, pero vale la pena echarle un vistazo. La ventaja de usar Geomajas es la fuerte integración entre el back-end y el cliente que tiene algunas ventajas, incluida la capacidad de descargar fácilmente el trabajo al servidor y se agrega especialmente para la seguridad.



4

Si está buscando una biblioteca de visualización de datos, consulte Highmaps , de las personas detrás de Highcharts (incluido yo mismo, actualmente empleado como desarrollador de software). Es gratuito para uso no comercial, funciona muy bien con navegadores móviles (soporte táctil completo) y IE antiguo hasta IE6. Admite funciones dinámicas avanzadas como desglose e información detallada sobre herramientas.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí



1
Bastante justo, editado.
Oystein

3

Se puede encontrar una metodología interesante para comparar las características que desea de las bibliotecas de mapeo de JavaScript (no restringidas a este caso de uso). Fue presentado en el evento NACIS 2012 por Richard Donohue & al. . La parte interesante es sobre cómo hacen la clasificación según el propósito y las características requeridas.



2

Puede ser que también pueda considerar Heron . Está construido en Ext y las capas abiertas juntas tienen muchas plantillas que puedes personalizar.

Otro candidato potencial es GeoJS .