OpenLayers vs Google Maps? [cerrado]

169

He usado Google Maps un par de veces, pero qué me pregunto sobre OpenLayers .
Antes de comenzar cualquier tipo de codificación, aquí hay un par de preguntas que me vienen a la mente,

  • ¿Por qué usaría OpenLayers en lugar de Google Maps?
    • Excepto por su licencia OSS, de todos modos
    • ¿Encontró alguna situación en la que recomendaría absolutamente no usar OpenLayers?
    • Hice una búsqueda sobre "OpenLayers" en Stack Overflow ; No hay muchas respuestas. ¿Significa que esta solución no se usa mucho? ¿Podría ser un problema para la viabilidad a largo plazo del proyecto?
  • Para aquellos de ustedes que ya han usado OpenLayers: ¿hay algún inconveniente / problema común que pueda encontrar?
    • ¿Qué pasa con el uso de un marco de JavaScript con él? He visto que usa Prototype , y sé que Prototype, así que estaría bien. ¿Pero qué pasa con el uso de algo más como MooTools ? (Que no es compatible con Prototype, por cierto)
    • ¿Hay algún tipo de problemas relacionados con la velocidad y el rendimiento? Necesito que mi aplicación responda y no puedo esperar horas para que se muestre un mapa.
  • ¿Hay mapas disponibles para muchos lugares o faltan muchos de esos?
    • Es decir, estoy en Francia y necesito que mi aplicación funcione al menos para las grandes ciudades ... ¿Va a estar bien?
    • en caso negativo, ¿es fácil encontrar capas y visualizaciones para OpenLayers e integrarlas?
  • ¿Hay algún tipo de API para mostrar carreteras?
    • Por ejemplo, para mostrar carreteras que son de un solo sentido.
    • En caso afirmativo, ¿cómo puedo hacer eso? ¿Tengo que tener algún tipo de archivo que contenga la información de esas carreteras y luego mostrarlas en el mapa yo solo?
  • ¿Conoces algún buen tutorial para OpenLayers?

Todavía no lo he probado, esas son preguntas inesperadas ...

Pascal MARTIN
fuente
Por curiosidad, ¿por qué la "licencia OSS" sería un punto a favor de OpenLayers, excepto por razones filosóficas? Suponiendo que la licencia de Google le permite hacer lo que quiera de forma gratuita, ¿por qué influiría en su decisión de cualquier manera?
Mark
77
@ Mark Hay problemas con la licencia de Google. IANAL pero entiendo que mostrar datos en Google Maps le da a Google una licencia ilimitada para copiar, modificar, transformar y redistribuir sus datos. Por ejemplo , es ilegal mostrar cualquier información derivada de los productos GIS de UK Ordnance Survey en Google Maps. Otra ventaja de OSS es que OpenLayers no está sujeto a los caprichos de una organización. Aunque prácticamente, probablemente pueda confiar en el buen sentido de Google (y el dinero, y razones comerciales) para apoyar Google Maps en el futuro
MarkJ
1
Estos artículos pueden ser de alguna utilidad: EveryBlock - Acerca de nuestros mapas: blog.everyblock.com/2008/feb/18/maps Una lista aparte - Tome el control de sus mapas (también de EveryBlock) alistapart.com/articles/takecontrolofyourmaps
mg1075
8
Google Maps no es totalmente gratuito ( google.com/support/forum/p/maps/… ). La licencia depende de cómo la use.
Lunes
Vale la pena visitar el sitio GIS.SE para todo lo relacionado con la geografía si no puede encontrar una respuesta en SO.
Roy

Respuestas:

158

¡Estas son preguntas realmente geniales! Soy un desarrollador y fanático profesional de OpenLayers, por lo que abordaré sus preguntas desde esa perspectiva.

¿Por qué usaría OpenLayers en lugar de Google Maps?

  • Flexibilidad: no está vinculado a ningún proveedor de mapas o tecnología en particular. Puede cambiar en cualquier momento y no tener que volver a escribir todo el código. Google, Yahoo, Microsoft, WMS, ArcGIS Server, MapServer, etc., son compatibles de inmediato.
  • Soporte de vectores: mejor soporte para puntos, polilíneas y polígonos.
  • Control: tiene la capacidad de agregar cualquier característica nueva que pueda necesitar. Personalmente he escrito tres complementos para OpenLayers, dos de los cuales son o serán parte de la fuente.
  • Depuración: ¡Mucho más fácil de depurar cuando puede recorrer el código fuente!

No me preocuparía en absoluto la viabilidad a largo plazo del proyecto. Es la principal biblioteca de mapeo del lado del cliente de código abierto.

¿Hay alguna dificultad / problema común que pueda encontrar?

  • El mayor escollo con el que me he encontrado es trabajar con la proyección de Web Mercator (Google). Puede ser una molestia mostrar datos vectoriales que se encuentran en una proyección común y real como WGS 84 en un mapa OpenLayers usando mapas base de Google, Yahoo y Microsoft. Los ejemplos son tu amigo.

Compatibilidad con el marco de JavaScript

  • Uso el marco jQuery para todo mi trabajo, y el único problema que tuve fue hacer referencia a jQuery después de OpenLayers. Aparte de eso, ha sido una navegación suave.
  • ¡El rendimiento es excelente! Los únicos problemas serán con su servidor de mapas o agregando demasiados vectores a su mapa.

¿Hay mapas disponibles para muchos lugares?

  • Como dije, puedes usar mapas base de casi cualquier fuente para cualquier parte del mundo.

¿Hay algún tipo de API para mostrar carreteras?

  • ¡Verificaría CloudMade! Han convertido el proyecto OpenStreetMap en un servicio de mosaico de mapas y permiten un estilo personalizado. Creo que puedes diseñar calles de un solo sentido (según tu ejemplo) de una manera particular. La zona de desarrolladores de CloudMade .

¿Conoces algún buen tutorial para OpenLayers?

  • No conozco ningún tutorial, pero hay muchos ejemplos en OpenLayers.

Espero que esto sea útil. ¡Y estoy cerca de Stack Overflow si tienes alguna pregunta!

atogle
fuente
55
¡Hola! Muchas gracias por esta respuesta, ¡eso es realmente útil! Definitivamente hay algunos puntos interesantes (un mejor soporte de vectores probablemente será útil para el proyecto en el que estoy pensando; ¡y no es lo único que estás diciendo que es interesante!); Tal vez haga algunas otras preguntas en algún momento: todavía no he comenzado a trabajar con OL (esta pregunta fue bastante "preliminar" ^^), pero supongo que llegará el momento, ¡considerando las respuestas que he recibido!
Pascal MARTIN
55
+1. Intenté no escribir este comentario, pero no puedo evitarlo. WGS84 no es una proyección. (Vale la pena intentar aprender estas cosas, estoy recogiendo dolorosamente un poco de SIG y realmente ayuda con las cosas del mapa)
MarkJ
1
WGS84 es un sistema de coordenadas geográficas (utilizado para mostrar puntos lat / long en un elipsoide). Web mercator es más o menos la proyección web de facto.
Roy
35

No es necesariamente una cuestión de OpenLayers O Google Maps. Después de todo, puede usar Google Maps para su fondo de mapa en OpenLayers. Algunas respuestas más específicas:

¿Por qué OpenLayers?

  • OpenLayers puede combinar mapas de diferentes fuentes (fondo de Google Maps, superposiciones WMS, datos vectoriales de archivos KML o GML o WFS, etc.)
  • Puedes diseñar OpenLayers mucho más que Google Maps
  • Código abierto, puede verificar el código fuente al depurar
  • Si necesita una alta precisión en los mapas, use OpenLayers con un servidor de mapas adecuado en lugar de Google Maps para obtener una mejor proyección de mapas (Google Maps supone que la Tierra es una esfera perfecta)

Trampas

  • Si desea utilizar datos vectoriales (WFS) de otro servidor, necesita un proxy, debido a las limitaciones de secuencias de comandos entre sitios

Actuación

  • Depende principalmente de la velocidad del backend del mapa
  • Mostrar muchas características vectoriales (el límite depende del navegador, pero digamos> 200 en una vista) lleva tiempo, pero eso es más una cuestión de navegador que un problema con OpenLayers

Marcos de JavaScript

  • Eche un vistazo a GeoExt , que es ExtJS + OpenLayers, por ejemplo

Mapas disponibles

  • OpenLayers no viene con un backend de mapa. Puede usar Google Maps, Yahoo Maps, MS Virtual Earth, etc., o cualquier servicio WMS y WFS al que tenga acceso
Nils Weinander
fuente
Buenas respuestas; gracias por toda esta informacion! Todavía no conozco los detalles, pero es posible que tenga que usar algunos datos de mi propio servidor, por lo que todo debería estar bien, particularmente con la capacidad de integrar varios backends (si lo entendí correctamente ^^ tendré la oportunidad de probar eso en un par de días, espero ;-))
Pascal MARTIN
1
@Pascal, me alegra que la respuesta haya sido útil. Puedo agregar que la comunidad OpenLayers es muy activa y las listas de correo bastante útiles.
Nils Weinander
Si hay algo que desea hacer que no está cubierto en la página de ejemplos de desarrollo, lo más probable es que no pueda hacerlo en Google Maps. por ejemplo, incluso las secuencias de comandos entre sitios no tienen que estar cubiertas por un proxy: openlayers.org/dev/examples/cross-origin.html
Glenn Plas
23

No he visto mucha presencia de los usuarios de OpenLayers en SO, pero están ahí afuera. Las listas de correo de OpenLayers son bastante activas (estoy en Usuarios y Dev y veo entre 50 y 100 correos electrónicos al día discutiendo varias cosas. También puede buscar en las listas desde esos enlaces).

No puedo responder a todas sus preguntas, pero una cosa que expondré es que OpenLayers y Google Maps no son mutuamente excluyentes. OpenLayers es una biblioteca de JavaScript y puede usarla para interactuar con Google Maps. Mira este ejemplo: OpenLayers usando google maps . Y aquí está la página principal de ejemplos de OpenLayers .

Derek Swingley
fuente
Gracias por esa respuesta! Es agradable ver que las listas de correo están bastante activas, antes de comenzar a trabajar con un proyecto ^^
Pascal MARTIN
13

Un punto que no se ha hecho completamente aquí es que el uso de OpenLayers evita varias restricciones que Google impone a los términos de servicio para sus API de mapas, que incluyen:

  • No puede usar legalmente un mapa de Google únicamente en una sección de su sitio que requiera pago para acceder, o para un sitio privado en el que el público no puede registrarse (por ejemplo, una intranet corporativa). (IANAL, pero consulte los Términos de servicio, 9.1 y las Preguntas frecuentes )

  • No puede usar legalmente (o prácticamente) la API de Google para aplicaciones fuera de línea (es decir, donde los mosaicos se sirven desde su propia máquina). Incluso si no hubiera restricciones legales, Google hace que esto sea técnicamente muy difícil, mientras que OpenLayers lo hace fácil.

  • Google se reserva el derecho de cerrar el acceso a la API si está mostrando un mapa con contenido que considera objetable. El ejemplo dado en las preguntas frecuentes es un mapa de drogas ilegales, que da una buena idea de las áreas grises que esta restricción podría cubrir.

Consulte estas Preguntas frecuentes y los Términos de servicio para obtener más detalles.

Dicho todo esto, como desarrollador de Google Maps desde hace mucho tiempo que recientemente comenzó a usar OpenLayers, siento que Google Maps tiene una mejor documentación, una comunidad de usuarios más grande y una API más clara y estable que OpenLayers. Entonces tienes que hacer una compensación en algún lado.

Nrabinowitz
fuente
"No puede usar legalmente un mapa de Google en una sección de su sitio que requiera pago para acceder, o para un sitio privado en el que el público no puede registrarse (por ejemplo, una intranet corporativa)". Eso es incorrecto. Puede usar Google Maps en una sección paga de su sitio siempre que la mayoría de los usuarios puedan usar su sitio y sus mapas sin pagar. Por ejemplo, un sitio web inmobiliario. Los carteles tienen que pagar para enumerar sus casas, pero la gran mayoría de los usuarios pueden navegar por el sitio sin pagar. En este caso, ambos tienen acceso a Google Maps.
Craig
Gracias. Quise decir que no puede usar la API exclusivamente en las secciones de pago requerido. Actualicé mi publicación y agregué más enlaces para abordar este problema.
nrabinowitz
OpenLayers utiliza la API de Google Maps internamente, por lo que está sujeto a la misma licencia. osgeo-org.1560.x6.nabble.com/…
Alfredo Osorio
@AlfredoOsorio: sí, si usa capas de Google. Hay muchas otras fuentes de azulejos.
nrabinowitz
12

Realmente depende de para qué quieres usar el mapa. Para simplemente trazar puntos en un mapa, Google Maps estará bien. Las capas del mapa para Google Maps también son bastante detalladas. OpenLayers, por otro lado, ofrece mucha más funcionalidad y es muy extensible.

OpenLayers tiene muchos ejemplos para comenzar.

En cuanto a los mapas, OpenLayers es solo una API, por lo que debe proporcionarla para asignar capas. La API de Google Maps se limitará a las capas de mapas proporcionadas por google. Con OpenLayer puede mostrar prácticamente cualquier servicio de mapas disponible públicamente (WMS, WFS, TMS, WMS-C). Un muy buen ejemplo es openstreetmap.org (mapa global de calles recopilado por la comunidad). OSM se puede agregar a capas abiertas como una capa TMS. Mira este ejemplo para obtener instrucciones.

Andrew Dwyer
fuente
¡Hola! Parece que "yo soy" tu primera respuesta aquí! ¡Bienvenidos! Y gracias por su respuesta :-)
Pascal MARTIN
9

Algunos clientes pueden rechazar, o tener fuertes reservas, sobre el uso de Google Maps. Pueden tener preocupaciones válidas de que Google puede introducir publicidad o cambiar la API sin previo aviso. Sin embargo, Google Maps tiene la ventaja de integrarse con otros servicios de Google (marcas de posición, agregar fotos, servicios de geocodificación). Como es la web, siempre puedes combinar diferentes servicios de mapeo y API.

geographika
fuente
1
+1. Tengo algunos clientes así. Y no digo que estén equivocados. La última vez que miré, los términos de licencia de Google Maps sí permiten a Google introducir publicidad en los mapas cuando lo deseen.
MarkJ
2
Además, al usar GoogleMaps, le está otorgando a Google una licencia perpetua, irrevocable, libre de regalías y mundial para reproducir, adaptar y modificar su contenido.
MarkJ
9

Estoy de acuerdo con todas las respuestas, pero hay un punto muy importante que nadie menciona. OpenLayers y Google Maps tienen diferentes objetivos.

OpenLayer es un excelente marco para mostrar geodatos, pero Google Maps es un conjunto de servicios que incluye un marco para mostrar geodatos entre otros servicios.

Entonces, Google Maps expone muchos servicios y características que OpenLayes no tiene. Algunos ejemplos de las funciones y servicios de Google Maps son la localización de regiones, la detección de sensores (para dispositivos con GPS) y la localización de usuarios, geocodificación y geocodificación inversa, street view, etc.

angelcervera
fuente
6

He usado ambas API. Hago un software para corporaciones y este software requiere mapeo, pero no todos los clientes tienen una licencia de GoogleMaps, por lo que necesito admitir ambos tipos de mapas.

He creado una API común para abstraer las diferencias entre ellos y déjame decirte que algunas cosas son más fáciles de hacer en una que en la otra. Al igual que limitar los límites de dónde puede desplazar el mapa, es mucho más fácil hacerlo en OpenLayers, pero los mapas de calor son más fáciles de usar en GoogleMaps (es oficialmente compatible con Google, a diferencia de los complementos disponibles de OpenLayers).

  1. OpenLayers admite mapas sin conexión. Algunos de mis usuarios están en intranets privadas sin conexión a internet.

  2. GoogleMaps tiene dos complementos absolutamente obligatorios, MarkCluster y Spiderfier que permiten visualizar una gran cantidad de marcadores.

  3. GoogleMaps InfoWindows es más fácil de usar y tiene mejor usabilidad que OpenLayers.Popups. Estas son las pequeñas ventanas que se pueden abrir al hacer clic en un marcador. Las ventanas de información de Googlemaps también son mucho más bonitas por defecto, tienes que hacer algo de magia CSS con las ventanas emergentes.

  4. GoogleMaps tiene streetview que a veces es útil.

  5. GoogleMaps tiene más funciones que podrías necesitar. Aunque muchas características también están presentes en OpenLayers, pero no son oficialmente compatibles.

Por lo general, al final, debe optar por OpenLayers debido al dolor de cabeza reducido que puede obtener de las licencias y el uso de ancho de banda de googlemaps. Ambos manejan el mapeo básico (es decir, mostrar marcadores en la parte superior de un mapa) muy bien. A menos que pueda encontrar una característica específica que necesita de una que no está presente en la otra, debe optar por OpenLayers. Ver esto para obtener más información sobre la facturación de googlemaps y cuándo puede usarla de forma gratuita.

También GoogleMaps tiene su tipo de geolocalización básica como 'LatLng' y Openlayers usa 'LonLat', lo que me vuelve loco porque sigo confundiendo el orden de los parámetros en las llamadas a funciones.

Hoffmann
fuente
3

Además de aquellos que mencionaron problemas de velocidad, me gustaría agregar que el renderizador VML de IE puede ser realmente lento con una capa vectorial con muchas características. Un usuario mencionó alrededor de 200. Eso es exactamente lo que puedo agregar antes de que IE disminuya considerablemente hasta el punto de congelarse. Si agrega características que son etiquetas de texto, puede agregar la mitad menos, probablemente porque internamente cada etiqueta de texto consta de dos elementos VML.

En Google puede crear un GOverlay personalizado cuyo contenido es un "div", que se procesa sin problemas en IE.

Jānis Elmeris
fuente
3

Agregaría un par de cosas, desde dos perspectivas: uso del cliente y derivación de datos.

Uso del cliente:

  • ¿A qué están acostumbrados sus clientes actualmente? El cambio puede ser difícil.
  • ¿Cuánta funcionalidad necesitas realmente? OpenLayers tiene bastante, pero si no lo está usando ...

Servicio de datos:

  • ¿Está sirviendo datos KML ? Si es así, tanto OpenLayers como Google Maps trabajarán con él, y probablemente tendrá que decidir según el uso del cliente.

  • ¿Sirve otros tipos de servicios de datos? (WMS, WFS, CSV, etc.) Si es así, entonces es muy probable que OpenLayers tenga ejemplos y soporte para ello.

Ruz
fuente
2

OL tiene una gran base de admiradores y es quizás el geothing de Opensource más utilizado en el mundo.

No ves muchos hilos y publicaciones al respecto en este ciberespacio porque la gente aquí tiende a discutir otro tipo de tecnología, como JSF y Mobile (no geo), no porque OL sea como un puntal.

Sin embargo, Ol tiene algunos inconvenientes, principalmente porque tiene un nivel tan bajo que tienes que escribir mucho código para hacer operaciones comunes. Eso también puede funcionar bien, porque como desarrollador a: tienes todo el código por adelantado yb: ajustar y personalizar es muy fácil.

Hay geotools gratuitos más sofisticados, pero todo lo que hacen es llamar a capas abiertas y abstraer algunas de las tareas más aburridas.

Así que úsalo con confianza. Es maduro, robusto y no va a morir en el futuro previsible. Sin embargo, si desea acelerar su proceso de desarrollo, debe probar las otras herramientas que se montan encima.

que tengas un buen día

demonz demonz
fuente
Hola, ¿podrías explicar los "geotools gratuitos más sofisticados" que se encuentran en la parte superior de OpenLayers? GeoExt se mencionó anteriormente, pero todavía no vi ningún otro especificado. Gracias.
Brian B
@BrianB hola brian, precisamente estaba pensando en geoext cuando escribí "geotools gratuitos más sofisticados". Esa biblioteca une un EXTJS con capas abiertas.
demonz demonz