2009-08-06 45 views
156

He usado Google Maps un par de veces, pero qué se pregunta acerca de OpenLayers.
Antes de comenzar cualquier tipo de codificación, aquí hay un par de preguntas que vienen a la mente,OpenLayers vs Google Maps?

  • qué iba a utilizar OpenLayers en lugar de Google Maps?
    • A excepción de la licencia de software libre, de todos modos
    • ¿Encontró cualquier situación en la que le recomiendo absolutamente no utilizar OpenLayers?
    • Hice un search about "OpenLayers" on 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 problema/escollo común que pueda encontrar?
    • ¿Qué hay de usar un marco de JavaScript con él? He visto que está usando Prototype, y conozco Prototype, así que estaría bien. Pero, ¿qué pasa con el uso de otra cosa como MooTools? (que no es compatible con Prototype, BTW)
    • ¿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?
    • Es decir, estoy en Francia y necesito que mi aplicación funcione al menos para las grandes ciudades ... ¿Va a estar bien?
    • si no es así, ¿es fácil encontrar capas y visualizaciones para OpenLayers e integrarlas?
  • ¿Hay algún tipo de API para mostrar las carreteras?
    • Por ejemplo, para mostrar las carreteras que son de sentido único.
    • En caso afirmativo, ¿cómo puedo hacer eso? ¿Tengo que tener algún tipo de archivo que contenga la información de esos caminos y, luego, mostrarlos en el mapa yo solo?
  • ¿Conoces algún buen tutorial para OpenLayers?

no he probado todavía, los que acaban de salir de las preguntas azules ...

+0

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 quiere de forma gratuita, ¿por qué influiría en su decisión de alguna manera? – Mark

+7

@Mark Hay problemas con la licencia de Google. IANAL pero entiendo que mostrar datos en Google Maps otorga a Google una licencia ilimitada para copiar, modificar, transformar y redistribuir sus datos. P.ej. [es ilegal] (http://blog.ordnancesurvey.co.uk/2010/08/what-the-psma-really-means/) para mostrar los datos derivados 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 en la práctica, probablemente pueda confiar en el buen sentido de Google (y en el dinero y las razones comerciales) para admitir Google Maps en el futuro – MarkJ

+8

Google Maps no es totalmente gratuito (http://www.google.com/support/forum/p/maps)/thread? tid = 42dbb1b2b5dbc6ad & hl = en). La licencia depende de cómo la uses. –

Respuesta

23

no he visto mucho de la presencia de los usuarios en OpenLayers SO, pero que están ahí fuera. Los OpenLayers mailing lists son bastante activos (estoy en Users y Dev y veo entre 50 y 100 correos electrónicos al día sobre varias cosas. También puede buscar en las listas de esos enlaces).

No puedo responder 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 puedes usarla para interactuar con Google Maps. Mira este ejemplo: OpenLayers using google maps. Y aquí está el principal OpenLayers examples page.

+0

¡Gracias por esa respuesta! Es agradable ver que las listas de mailling son bastante activas, antes de comenzar a trabajar con un proyecto ^^ –

34

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

¿Por qué OpenLayers?

  • OpenLayers pueden combinar mapas de diferentes fuentes (fondo de Google Maps, WMS superposiciones, los datos vectoriales a partir de archivos o CMA etc KML o GML)
  • Puede estilo OpenLayers mucho más thanyou puede Google Maps
  • abierto fuente, puede verificar el código fuente al depurar
  • Si necesita alta precisión en los mapas, use OpenLayers con un backend de servidor de mapas adecuado en lugar de Google Maps para obtener una mejor proyección del mapa (Google Maps supone que la tierra es perfecta esfera)

trampas

  • Si desea utilizar vector de datos (CMA) de otro servidor que necesita un proxy, debido a limitaciones de secuencias de comandos entre sitios

Rendimiento

  • Depende principalmente de la velocidad del back-end del mapa
  • Viendo muchas características vectoriales (límite depende del navegador, pero dicen> 200 en una visión) lleva tiempo, pero eso es más una cosa navegador que un problema con OpenLayers

JavaScript marcos

  • Tenga una mirada en 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, tiene acceso a
+0

Nice answers; gracias por todas estas informaciones! Todavía no conozco los detalles, pero podría tener que usar algunos datos de mi propio servidor, así que todo debería estar bien, particularmente con la capacidad de integrar varios backends (si entendí correctamente ^^ tendré posibilidades de probarlo). que en un par de días, espero ;-)) –

+1

@Pascal, me alegra que la respuesta haya sido útil. Puedo agregar que la comunidad OpenLayers es muy activa y las listas de correo son bastante útiles. –

+0

Si hay algo que desea hacer y que no está cubierto en la página de ejemplos de desarrollo, lo más probable es que no pueda hacerlo en los mapas de Google. por ejemplo, incluso las secuencias de comandos entre sitios no tienen que estar cubiertas por un proxy: http://openlayers.org/dev/examples/cross-origin.html –

12

Realmente depende de lo que desee usar para el mapa. Para 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 proporcionarlo mapeará capas. La API de Google Maps estará limitada a las capas del mapa provistas por google. Con OpenLayer puede visualizar casi cualquier servicio de mapas disponible públicamente (WMS, WFS, TMS, WMS-C). Un muy buen ejemplo es openstreetmap.org - (mapa de calles global recopilado por la comunidad). OSM se puede agregar a las capas abiertas como una capa TMS. Consulte este example para obtener instrucciones.

+0

¡Hola! ¡Parece que "yo soy" tu primera respuesta aquí!¡Bienvenido! Y gracias por su respuesta :-) –

148

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

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

  • Flexiblity: 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 su código completo. Google, Yahoo, Microsoft, WMS, ArcGIS Server, MapServer, etc. son compatibles desde el primer momento.
  • Compatibilidad con vectores: mejor soporte para puntos, polilíneas y polígonos.
  • Control: tiene la posibilidad de agregar las funciones nuevas 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 acerca de la viabilidad a largo plazo del proyecto. Es la principal biblioteca de mapeo del lado del cliente de código abierto.

¿Hay algún inconveniente/problema común que pueda encontrar?

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

JavaScript Framework Compatibilidad

  • utilizo el marco jQuery para todo mi trabajo, y el único problema que he tenido hace referencia a jQuery después de OpenLayers. Aparte de eso, ha sido sin problemas.
  • ¡El rendimiento es excelente! Los únicos problemas serán con su servidor de mapas o agregar demasiados vectores a su mapa.

¿Hay mapas disponibles para muchos lugares?

  • Como he dicho, puede utilizar los mapas base de casi cualquier fuente en cualquier parte del mundo.

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

  • Echaré un vistazo a CloudMade! Han convertido el proyecto OpenStreetMap en un servicio de mosaico de mapas y permiten un diseño personalizado. Creo que puedes diseñar calles de una sola dirección (según tu ejemplo) de una manera particular. The CloudMade Developer Zone.

¿Conoces algún buen tutorial para OpenLayers?

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

+5

¡Hola! Muchas gracias por esta respuesta, ¡eso de hecho es útil! Definitivamente hay algunos puntos interesantes (un mejor soporte vectorial probablemente sea ú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 empezado a trabajar con OL (esta pregunta fue bastante "preliminar" ^^), pero supongo que llegará el momento, considerando las respuestas que he obtenido. –

+5

+1. Intenté no escribir este comentario, pero no puedo evitarlo. WGS84 no es una proyección. (Vale la pena tratar de aprender esto, estoy recogiendo un poco de GIS, 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

9

Algunos clientes pueden rechazar, o tienen fuertes reservas, sobre el uso de Google Maps. Pueden tener preocupaciones válidas de que Google pueda 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 mapas y API.

+1

+1. Tengo algunos clientes así. Y no estoy diciendo que estén equivocados. La última vez que miré, los términos de la licencia de Google Maps sí permiten a Google introducir publicidad en los mapas cuando lo deseen. – MarkJ

+2

Además, al utilizar GoogleMaps, usted otorga a Google una licencia mundial permanente, irrevocable y sin derechos de autor para reproducir, adaptar y modificar su contenido. – MarkJ

3

Un par de cosas que agregaría, desde dos perspectivas: uso del cliente y obtención de datos.

uso del cliente:

  • ¿Qué estás acostumbrado a utilizar clientes actualmente? El cambio puede ser difícil.
  • ¿Cuánta funcionalidad realmente necesita? OpenLayers tiene un poco, pero si no lo están utilizando ...

porción de datos:

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

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

8

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

openlayers es un excelente marco para mostrar datos geográficos, pero Google Maps es un conjunto de servicios que incluyen un marco para mostrar datos geográficos entre otros servicios.

Así, Google Maps exponga a los servicios de lote y las características que openlayers no tienen. Algunos ejemplos de características y servicios de Google Maps son localización de regiones, detección de sensores (para dispositivos con GPS) y localización de usuarios, geocodificación y geocodificación inversa, vista de calles, etc.

12

Un punto que no se ha realizado completamente aquí es que el uso de OpenLayers evita varios lugares restricciones de Google en los términos del servicio para sus API de correlación, entre ellos:

  • no se puede utilizar legalmente un mapa de Google únicamente en una sección de su sitio que requiere el pago de acceso, o para un sitio privado que el público no puede registrar (por ejemplo, una intranet corporativa). (IANAL, pero ver Terms of Service, 9.1 y the FAQ)

  • No se puede legalmente (o casi) utilizar la API de Google para aplicaciones fuera de línea (es decir, donde los azulejos se sirven de su propia máquina).Incluso si no hubiera restricciones legales, Google lo hace 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 muestra un mapa con contenido que considera objetable. The example given in the FAQ es un mapa de drogas ilegales, que da una buena idea de las áreas grises que esta restricción podría cubrir.

Ver this FAQ y la Terms of Service para más detalles.

Dicho todo esto, como desarrollador de Google Maps desde hace mucho tiempo que recientemente comenzó a utilizar OpenLayers, creo 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 un intercambio en alguna parte.

+0

"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 que el público no puede registrar (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 usen su sitio y mapas sin pagar. P.ej. Un sitio web de bienes raíces. Los carteles tienen que pagar para mostrar sus casas, pero la gran mayoría de los usuarios puede navegar por el sitio sin pagar. En este caso, ambos tienen acceso a Google Maps. – Craig

+0

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

+0

OpenLayers usa internamente la API de Google Maps, por lo que está sujeto a la misma licencia. http://osgeo-org.1560.x6.nabble.com/Introduction-of-usage-limits-to-the-Google-Maps-API-td3912955.html –

3

Además de los que mencionaron problemas de velocidad, me gustaría agregar que el renderizador VML de IE puede ser muy 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 congelación. Si agrega funciones 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 representa sin problemas en IE.

2

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

No ve muchos hilos y publicaciones sobre esto en este sitio cibernético porque la gente aquí tiende a hablar sobre otros tipos de técnicos, como JSF y Mobile (no geo), no porque OL es como puntales.

Sin embargo Ol tiene algunos inconvenientes, principalmente que es de tan bajo nivel que tiene que escribir muchos códigos 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 lo único que hacen es llamar a openlayers y abstraer algunas de las tareas más aburridas.

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

tienen un buen día

+0

Hola, ¿podrías elaborar sobre los "geotools gratuitos más sofisticados" que se sientan encima de OpenLayers? GeoExt fue mencionado anteriormente, pero no vi ningún otro especificado todavía. Gracias. –

+0

@BrianB hi brian, precisamente estaba pensando en geoext cuando escribí "geotools gratuitos más sofisticados". Esa biblioteca une un EXTJS con capas abiertas. –

6

he utilizado ambas API. Hago un software para empresas 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 hecho una API común para abstraer las diferencias entre ellos y déjenme decirles que algunas cosas son más fáciles de hacer en una que en la otra. Al igual que limitar los límites de donde puedes 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 (oficialmente es compatible con Google, a diferencia de los complementos de OpenLayers disponibles).

  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 absolutamente necesario tener plugins, MarkCluster y Spiderfier que hace posible la visualización de un gran número de marcadores .

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

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

  5. GoogleMaps tiene más funciones que pueda necesitar. Aunque muchas características de también están presentes en OpenLayers, pero oficialmente no es compatible con .

Por lo general, al final hay que ir con OpenLayers debido a la reducción de dolor de cabeza que podría obtener a partir de la concesión de licencias y el uso de ancho de banda de GoogleMaps. Ambos manejan el mapeo básico (es decir, mostrar marcadores en la parte superior del 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 elegir OpenLayers. Consulte this para obtener más información sobre la facturación de googlemaps y cuándo puede utilizarla de forma gratuita.

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