javascript google-maps openlayers

javascript - OpenLayers vs Google Maps?



openlayers 4 documentation (11)

He usado Google Maps un par de veces, pero qué me pregunta 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 OpenLayers en lugar de Google Maps?
    • Excepto por su licencia de OSS, de todos modos
    • ¿Encontraste alguna situación en la que recomendarías abstenerse de 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 problema o 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 algo más 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 ... ¿Eso estará bien?
    • si no, ¿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 carreteras que son de sentido único.
    • Si es así, ¿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 lo he probado aún, esas son preguntas fuera de lo común ...


¡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 o tecnología de mapas 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.
  • Soporte vectorial: mejor soporte para puntos, polilíneas y polígonos.
  • Control: tiene la capacidad de agregar nuevas funciones 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 sobre 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 encontrado es trabajar con la proyección de Web Mercator (Google). Puede ser doloroso mostrar los datos vectoriales que se encuentran 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

Compatibilidad con el marco de JavaScript

  • Uso el framework jQuery para todo mi trabajo, y el único problema que he tenido es hacer referencia a jQuery después de OpenLayers. Aparte de eso, ha sido sin problemas.
  • ¡El rendimiento es genial! Los únicos problemas serán con su servidor de mapas o agregar 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 las carreteras?

  • Verificarí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. La zona de desarrolladores de CloudMade .

¿Conoces algún buen tutorial para OpenLayers?

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

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


Además de aquellos que mencionaron problemas de velocidad, me gustaría añadir 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 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.


Algunos clientes pueden rechazar o tener 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.


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

OpenLayer es un marco excelente para mostrar geodatos, pero Google Maps es un grupo 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 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, vistas de calles, etc.


He usado 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 complementos absolutamente imprescindibles, MarkCluster y Spiderfier que posibilitan la visualización de un gran número de marcadores.

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

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

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

Por lo general, al final debes elegir OpenLayers debido a la reducción del dolor de cabeza que puedes 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 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 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 loca porque sigo confundiendo el orden de los parámetros en las llamadas a funciones.


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 de WMS, datos vectoriales de archivos KML o GML o WFS, etc.)
  • Puedes diseñar OpenLayers mucho más de lo que puedes hacer con Google Maps
  • Código abierto, puede verificar el código fuente cuando depura
  • 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 una esfera perfecta)

Trampas

  • Si desea utilizar datos vectoriales (WFS) de otro servidor, necesita un proxy, debido a las limitaciones de scripts 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 que tenga acceso a

No he visto mucha presencia de los usuarios de OpenLayers en SO, pero están por ahí. Las listas de correo de OpenLayers son bastante activas (estoy usando Users y Dev y veo de 50 a 100 correos electrónicos al día hablando de varias cosas. También puedes buscar en las listas desde 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 usando google maps . Y aquí está la página principal de ejemplos de OpenLayers .


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

No se ven muchos hilos y publicaciones al respecto en este sitio cibernético porque la gente aquí tiende a hablar sobre otro tipo de técnicos, como JSF y Mobile (no geo), no porque OL sea como puntales.

Sin embargo, Ol tiene algunos inconvenientes, principalmente que es de tan bajo nivel que tienes 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 las capas abiertas y abstraer algunas de las tareas más aburridas.

Entonces úsalo 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.

que tengas un buen día


Realmente depende de para qué quieres usar 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 que comiences.

En cuanto a los mapas, OpenLayers es solo una API, por lo que debes proporcionar capas de mapas. 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. Echa un vistazo a este example para obtener instrucciones.


Un par de cosas que agregaría, desde dos perspectivas: el uso del cliente y el desarrollo de datos.

Uso del cliente:

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

Servicio de datos:

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

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


Un punto que no se ha logrado completamente aquí es que el uso de OpenLayers evita varias restricciones que Google asigna a las condiciones del 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 requiere pago para acceder, o para un sitio privado que el público no puede registrar (por ejemplo, una intranet corporativa). (IANAL, pero consulte los Términos del 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 se sirven los mosaicos desde 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. El ejemplo que se da 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 del servicio para obtener más detalles.

Dicho todo esto, como desarrollador de Google Maps desde hace mucho tiempo que recientemente comenzó a usar 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.