OpenLayers vs Google Maps? [fermé]


169

J'ai utilisé Google Maps à quelques reprises, mais qu'en est-il d' OpenLayers ?
Avant de commencer tout type de codage, voici quelques questions qui me viennent à l'esprit,

  • Pourquoi utiliser OpenLayers au lieu de Google Maps?
    • Sauf pour sa licence OSS, en tout cas
    • Avez-vous rencontré une situation dans laquelle vous recommanderiez de ne pas utiliser OpenLayers?
    • J'ai fait une recherche sur "OpenLayers" sur Stack Overflow ; il n'y a pas beaucoup de réponses. Cela signifie-t-il que cette solution n'est pas beaucoup utilisée? Cela pourrait-il être un problème pour la viabilité à long terme du projet?
  • Pour ceux d'entre vous qui ont déjà utilisé OpenLayers: y a-t-il des pièges / problèmes courants que je pourrais rencontrer?
    • Qu'en est-il de l'utilisation d'un framework JavaScript avec? J'ai vu qu'il utilise Prototype , et je connais Prototype, donc ce serait OK. Mais qu'en est-il d'utiliser quelque chose d'autre comme MooTools ? (Ce qui n'est pas compatible avec Prototype, BTW)
    • Existe-t-il des problèmes liés à la vitesse et aux performances? J'ai besoin que mon application soit réactive et j'ai hâte de voir une carte affichée.
  • Y a-t-il des cartes disponibles pour de nombreux endroits ou y en a-t-il beaucoup qui en manquent?
    • Autrement dit, je suis en France et j'ai besoin que mon application fonctionne au moins pour les grandes villes ... Est-ce que ça va?
    • sinon, est-il facile de trouver des couches et des visualisations pour OpenLayers et de les intégrer?
  • Existe-t-il une sorte d'API pour afficher les routes?
    • Par exemple, pour afficher les routes à sens unique.
    • Si oui, comment puis-je faire cela? Dois-je avoir une sorte de fichier contenant ces informations sur les routes et, ensuite, les afficher sur la carte par moi-même?
  • Connaissez-vous un bon tutoriel sur OpenLayers?

Je ne l'ai pas encore essayé, ce sont juste des questions hors du commun ...


Par curiosité, pourquoi la "licence OSS" serait-elle un point en faveur d'OpenLayers, sauf pour des raisons philosophiques? En supposant que la licence de Google vous permet de faire ce que vous voulez gratuitement, pourquoi cela influencerait-il votre décision de toute façon?
Mark

7
@Mark Il y a des problèmes avec la licence de Google. IANAL mais je comprends que l'affichage de données sur Google Maps donne à Google une licence illimitée pour copier, modifier, transformer et redistribuer vos données. Par exemple, il est illégal d'afficher des données dérivées des produits SIG UK Ordnance Survey sur Google Maps. Un autre avantage d'OSS est qu'OpenLayers n'est pas soumis aux caprices d'une organisation. Bien que dans la pratique, vous pouvez probablement faire confiance au bon sens de Google (et à l'argent et aux raisons commerciales) pour soutenir Google Maps à l'avenir
MarkJ

1
Ces articles pourraient être d'une certaine utilité: EveryBlock - À propos de nos cartes: blog.everyblock.com/2008/feb/18/maps Une liste à part - Prenez le contrôle de vos cartes (également depuis EveryBlock) alistapart.com/articles/takecontrolofyourmaps
mg1075

8
Google Maps n'est pas totalement gratuit ( google.com/support/forum/p/maps/… ). La licence dépend de la manière dont vous l'utilisez.
Lu

Cela vaut la peine de consulter le site GIS.SE pour tout ce qui concerne la géographie si vous ne trouvez pas de réponse sur SO.
Roy

Réponses:


158

Ce sont de très bonnes questions! Je suis un développeur et fan professionnel d'OpenLayers, je vais donc répondre à vos questions dans cette perspective.

Pourquoi utiliser OpenLayers au lieu de Google Maps?

  • Flexiblité: vous n'êtes lié à aucun fournisseur de carte ou technologie en particulier. Vous pouvez changer à tout moment et ne pas avoir à réécrire l'intégralité de votre code. Google, Yahoo, Microsoft, WMS, ArcGIS Server, MapServer, etc. sont tous pris en charge immédiatement.
  • Prise en charge vectorielle: meilleure prise en charge des points, des polylignes et des polygones.
  • Contrôle: vous avez la possibilité d'ajouter toutes les nouvelles fonctionnalités dont vous pourriez avoir besoin. J'ai personnellement écrit trois plugins pour OpenLayers, dont deux font ou feront partie de la source.
  • Débogage: beaucoup plus facile à déboguer lorsque vous pouvez parcourir le code source!

Je ne m'inquiéterais pas du tout de la viabilité à long terme du projet. Il s'agit de la première bibliothèque de cartographie open source côté client.

Y a-t-il des pièges / problèmes courants que je pourrais rencontrer?

  • Le plus gros piège que j'ai rencontré est de travailler avec la projection Web Mercator (Google). Il peut être difficile d'afficher des données vectorielles qui sont dans une projection courante et réelle comme WGS 84 dans une carte OpenLayers à l'aide de cartes de base Google, Yahoo et Microsoft. Les exemples sont votre ami.

Compatibilité du framework JavaScript

  • J'utilise le framework jQuery pour tout mon travail, et le seul problème que j'ai eu est de référencer jQuery après OpenLayers. À part ça, la navigation a été douce.
  • La performance est géniale! Les seuls problèmes seront avec votre serveur de carte ou l'ajout d'un trop grand nombre de vecteurs à votre carte.

Existe-t-il des cartes disponibles pour de nombreux endroits?

  • Comme je l'ai dit, vous pouvez utiliser des fonds de carte à partir de n'importe quelle source, n'importe où dans le monde.

Existe-t-il une sorte d'API pour afficher les routes?

  • Je vérifierais CloudMade! Ils ont converti le projet OpenStreetMap en un service de tuiles de carte et autorisent un style personnalisé. Je crois que vous pouvez styliser les rues à sens unique (selon votre exemple) d'une manière particulière. La zone de développement CloudMade .

Connaissez-vous un bon tutoriel sur OpenLayers?

J'espère que c'est utile. Et je suis dans Stack Overflow si vous avez des questions!


5
Salut! Merci beaucoup pour cette réponse, qui est en effet utile! Il y a certainement des points intéressants (un meilleur support vectoriel sera probablement utile pour le projet auquel je pense; et ce n'est pas la seule chose que vous dites qui soit intéressante!); Peut-être que je poserai d'autres questions dans un certain temps: je n'ai pas encore commencé à travailler avec l'OL (cette question était assez "prélimaire" ^^), mais le temps viendra, je suppose, compte tenu des réponses que j'ai obtenues!
Pascal MARTIN

5
+1. J'ai essayé de ne pas taper ce commentaire, mais je ne peux pas m'en empêcher. WGS84 n'est pas une projection. (Cela vaut la peine d'essayer d'apprendre ce truc - je prends douloureusement un peu de SIG, et cela aide vraiment avec les cartes.)
MarkJ

1
WGS84 est un système de coordonnées géographiques (utilisé pour afficher les points lat / long sur un ellipsoïde). Web mercator est à peu près la projection Web de facto.
Roy

35

Ce n'est pas forcément une question d'OpenLayers OU de Google Maps. Vous pouvez après tout utiliser Google Maps pour l'arrière-plan de votre carte dans OpenLayers. Quelques réponses plus spécifiques:

Pourquoi OpenLayers?

  • OpenLayers peut combiner des cartes de différentes sources (arrière-plan Google Maps, superpositions WMS, données vectorielles à partir de fichiers KML ou GML ou WFS, etc.)
  • Vous pouvez styliser OpenLayers bien plus que Google Maps
  • Open source, vous pouvez vérifier le code source lors du débogage
  • Si vous avez besoin d'une haute précision dans les cartes, utilisez OpenLayers avec un serveur de carte approprié plutôt que Google Maps pour obtenir une meilleure projection cartographique (Google Maps suppose que la Terre est une sphère parfaite)

Pièges

  • Si vous souhaitez utiliser des données vectorielles (WFS) d'un autre serveur, vous avez besoin d'un proxy, en raison des limitations de scripts intersites

Performance

  • Dépend principalement de la vitesse du backend de la carte
  • L'affichage de nombreuses fonctionnalités vectorielles (la limite dépend du navigateur, mais disons> 200 sur une vue) prend du temps, mais c'est plus un problème de navigateur qu'un problème avec OpenLayers

Framework JavaScript

  • Jetez un œil à GeoExt , qui est ExtJS + OpenLayers, par exemple

Cartes disponibles

  • OpenLayers n'est pas livré avec un backend de carte. Vous pouvez utiliser Google Maps, Yahoo Maps, MS Virtual Earth, etc., ou tout service WMS et WFS auquel vous avez accès

Belles réponses; merci pour toutes ces informations! Je ne connais pas encore les détails, mais je vais peut-être devoir utiliser certaines données de mon propre serveur, donc tout devrait être OK, notamment avec la possibilité d'intégrer plusieurs backends (si j'ai bien compris ^^ j'aurai des chances de tester que dans quelques jours, j'espère ;-))
Pascal MARTIN

1
@Pascal, je suis content que la réponse ait été utile. Je peux ajouter que la communauté OpenLayers est très active et que les listes de diffusion sont très utiles.
Nils Weinander

S'il y a quelque chose que vous voulez faire qui n'est pas couvert dans la page d'exemples de développement, vous ne pourrez probablement pas le faire sur google maps. par exemple, même les scripts intersites
Glenn Plas

23

Je n'ai pas vu beaucoup de présence d'utilisateurs d'OpenLayers sur SO, mais ils sont là-bas. Les listes de diffusion OpenLayers sont assez actives (je suis sur Users and Dev et vois entre 50 et 100 e-mails par jour pour discuter de diverses choses. Vous pouvez également rechercher les listes à partir de ces liens.).

Je ne peux pas répondre à toutes vos questions, mais une chose que je vais dire est que OpenLayers et google maps ne sont pas mutuellement exclusifs. OpenLayers est une bibliothèque javascript et vous pouvez l'utiliser pour interagir avec google maps. Regardez cet exemple: OpenLayers utilisant google maps . Et voici la page principale d' exemples d'OpenLayers .


Merci pour cette réponse! C'est sympa de voir que les mailling-lists sont assez actives, avant de commencer à travailler sur un projet ^^
Pascal MARTIN

13

Un point qui n'a pas été entièrement souligné ici est que l'utilisation d'OpenLayers évite diverses restrictions que Google impose aux conditions d'utilisation de ses API cartographiques, notamment:

  • Vous ne pouvez pas utiliser légalement une carte Google uniquement dans une section de votre site qui nécessite un paiement pour y accéder, ou pour un site privé auquel le public ne peut pas s'inscrire (par exemple, un intranet d'entreprise). (IANAL, mais voir les conditions d'utilisation, 9.1 et la FAQ )

  • Vous ne pouvez pas légalement (ou pratiquement) utiliser l'API Google pour les applications hors ligne (c'est-à-dire où les tuiles sont servies à partir de votre propre machine). Même s'il n'y avait pas de restrictions légales, Google rend cela techniquement très difficile, tandis qu'OpenLayers le rend facile.

  • Google se réserve le droit de désactiver l'accès à l'API si vous affichez une carte avec un contenu qu'il juge répréhensible. L'exemple donné dans la FAQ est une carte des drogues illicites, qui donne une bonne idée des zones grises que cette restriction pourrait couvrir.

Voir cette FAQ et les conditions d'utilisation pour plus de détails.

Cela dit, en tant que développeur Google Maps de longue date qui a récemment commencé à utiliser OpenLayers, je pense que Google Maps a une meilleure documentation, une communauté d'utilisateurs plus large et une API plus claire et plus stable qu'OpenLayers. Il faut donc faire un compromis quelque part.


"Vous ne pouvez pas utiliser légalement une carte Google dans une section de votre site qui nécessite un paiement pour y accéder, ou pour un site privé auquel le public ne peut pas s'inscrire (par exemple, un intranet d'entreprise)." C'est inexact. Vous pouvez utiliser Google Maps dans une section payante de votre site à condition que la majorité des utilisateurs puissent utiliser votre site et vos cartes sans payer. Par exemple, un site Web immobilier. Les affiches doivent payer pour lister leurs maisons, mais la grande majorité des utilisateurs peuvent naviguer sur le site sans payer. Dans ce cas, les deux ont accès à Google Maps.
Craig

Merci - Je voulais dire que vous ne pouvez pas utiliser l'API exclusivement sur les sections à paiement obligatoire. J'ai mis à jour mon message et ajouté d'autres liens pour résoudre ce problème.
nrabinowitz

OpenLayers utilise l'API Google Maps en interne, vous êtes donc soumis à la même licence. osgeo-org.1560.x6.nabble.com/…
Alfredo Osorio

@AlfredoOsorio - oui, IFF vous utilisez des couches Google. Il existe de nombreuses autres sources de tuiles.
nrabinowitz

12

Cela dépend vraiment de l'utilisation de la carte. Pour simplement tracer des points sur une carte, Google Maps fera l'affaire. Les couches de carte pour Google Maps sont également assez détaillées. OpenLayers, quant à lui, offre beaucoup plus de fonctionnalités et est très extensible.

OpenLayers a de nombreux exemples pour vous aider à démarrer.

En ce qui concerne les cartes, OpenLayers n'est qu'une API, vous devez donc fournir qu'elle mappera les couches. L'API Google Maps sera limitée aux couches cartographiques fournies par google. Avec OpenLayer, vous pouvez afficher à peu près n'importe quel service de carte disponible publiquement (WMS, WFS, TMS, WMS-C). Un très bon exemple est openstreetmap.org - (carte globale des rues collectée par la communauté). OSM peut être ajouté aux openlayers en tant que couche TMS. Consultez cet exemple pour obtenir des instructions.


Salut! On dirait "Je suis" votre première réponse ici! Bienvenue! Et merci pour votre réponse :-)
Pascal MARTIN

9

Certains clients peuvent refuser ou émettre de fortes réserves quant à l'utilisation de Google Maps. Ils peuvent avoir des inquiétudes fondées sur le fait que Google peut introduire de la publicité ou modifier l'API sans préavis. Cependant, Google Maps a l'avantage de s'intégrer à d'autres services Google (repères, ajout de photos, services de géocodage). Comme c'est le Web, vous pouvez toujours combiner de nombreux services de cartographie et API différents.


1
+1. J'ai des clients comme ça. Et je ne dis pas qu'ils ont tort. La dernière fois que j'ai regardé, les conditions de licence de Google Maps permettent en effet à Google d'introduire de la publicité dans les cartes quand il le souhaite.
MarkJ

2
De plus, en utilisant GoogleMaps, vous accordez à Google une licence mondiale perpétuelle, irrévocable, libre de droits et pour reproduire, adapter et modifier votre contenu.
MarkJ

9

Je suis d'accord avec toutes les réponses, mais il y a un point très important que personne ne mentionne. OpenLayers et Google Maps ont des cibles différentes.

OpenLayer est un excellent cadre pour afficher des géodonnées, mais Google Maps est un pool de services qui inclut un cadre pour afficher des géodonnées parmi d'autres services.

Ainsi, Google Maps expose de nombreux services et fonctionnalités que OpenLayes n'a pas. Quelques exemples de fonctionnalités et de services de Google Maps sont la localisation de la région, la détection de capteur (pour les appareils avec GPS) et la localisation de l'utilisateur, le géocodage et le géocodage inversé, la vue de la rue, etc.


6

J'ai utilisé les deux API. Je crée un logiciel pour les entreprises et ce logiciel nécessite une cartographie, mais tous les clients n'ont pas de licence GoogleMaps, je dois donc prendre en charge les deux types de cartes.

J'ai créé une API commune pour résumer les différences entre eux et laissez-moi vous dire que certaines choses sont plus faciles à faire dans l'un que dans l'autre. Comme limiter les limites de l'endroit où vous pouvez effectuer un panoramique de la carte, c'est beaucoup plus facile à faire dans OpenLayers, mais les heatmaps sont plus faciles à utiliser sur GoogleMaps (il est officiellement pris en charge par Google, contrairement aux plugins OpenLayers disponibles).

  1. OpenLayers prend en charge les cartes hors ligne. Certains de mes utilisateurs se trouvent dans des intranets privés sans connexion Internet.

  2. GoogleMaps a deux plugins indispensables , MarkCluster et Spiderfier, qui permettent de visualiser un grand nombre de marqueurs.

  3. GoogleMaps InfoWindows est plus facile à utiliser et offre une meilleure convivialité que les OpenLayers.Popups. Ce sont les petites fenêtres qui peuvent s'ouvrir lorsque vous cliquez sur un marqueur. Googlemaps InfoWindows est également beaucoup plus joli par défaut, vous devez faire de la magie CSS avec les Popups.

  4. GoogleMaps a streetview qui est parfois utile.

  5. GoogleMaps a plus de fonctionnalités dont vous pourriez avoir besoin. Bien que de nombreuses fonctionnalités soient également présentes dans OpenLayers, mais pas officiellement prises en charge.

Habituellement, à la fin, vous devriez opter pour OpenLayers en raison du mal de tête réduit que vous pourriez avoir avec les licences et l'utilisation de la bande passante des googlemaps. Les deux gèrent très bien la cartographie de base (c'est-à-dire l'affichage des marqueurs au-dessus d'une carte). À moins que vous ne trouviez une fonctionnalité spécifique dont vous avez besoin parmi l'une qui n'est pas présente sur l'autre, vous devriez opter pour OpenLayers. Voir ça pour plus d'informations sur la facturation de googlemaps et quand vous pouvez l'utiliser gratuitement.

De plus, GoogleMaps a son type de géolocalisation de base comme «LatLng» et Openlayers utilise «LonLat», ce qui me rend fou parce que je me trompe constamment dans l'ordre des paramètres dans les appels de fonction.


3

En plus de ceux qui ont mentionné des problèmes de vitesse, j'aimerais ajouter que le moteur de rendu VML d'IE peut devenir très lent avec une couche vectorielle avec de nombreuses fonctionnalités. Un utilisateur a mentionné environ 200. C'est à peu près ce que je peux ajouter avant que IE ralentisse considérablement au point de geler. Si vous ajoutez des fonctionnalités qui sont des étiquettes de texte, vous pouvez en ajouter la moitié moins, probablement parce qu'en interne, chaque étiquette de texte se compose de deux éléments VML.

Dans Google, vous pouvez créer un GOverlay personnalisé dont le contenu est un "div", qui est rendu sans problème dans IE.


3

J'ajouterais deux choses, de deux points de vue: l'utilisation du client et le derving des données.

Utilisation du client:

  • Qu'est-ce que vos clients utilisent actuellement? Le changement peut être difficile.
  • De quelle fonctionnalité avez-vous vraiment besoin? OpenLayers en a pas mal, mais si vous ne l'utilisez pas ...

Service de données:

  • Proposez-vous des données KML ? Si tel est le cas, OpenLayers et Google Maps fonctionneront avec lui, et vous devrez probablement décider en fonction de l'utilisation du client.

  • Servez-vous d'autres types de services de données? (WMS, WFS, CSV, etc.) Si c'est le cas, alors OpenLayers a très probablement des exemples et un support pour cela.


2

OL a une grande base de fans et est peut-être le geothing OpenSource le plus utilisé au monde.

Vous ne voyez pas autant de discussions et d'articles à ce sujet dans ce cyberplace parce que les gens ici ont tendance à discuter d'autres types de technologies, comme JSF et Mobile (non géo), pas parce que l'OL est comme des entretoises.

Cependant, Ol a quelques inconvénients, principalement parce que son niveau est si bas que vous devez écrire beaucoup de code pour faire des opérations courantes. Cela peut également fonctionner dans le bon sens, car en tant que développeur a: vous avez tout le code à l'avance et b: l'ajustement et la personnalisation sont très faciles.

Il existe des géotools gratuits plus sophistiqués, mais tout ce qu'ils font est d'appeler des openlayers et d'abstraire certaines des tâches les plus ennuyeuses.

Alors utilisez-le en toute confiance. Il est mature, robuste et ne mourra pas dans un avenir prévisible. Cependant, si vous souhaitez accélérer votre processus de développement, vous devriez essayer les autres outils qui se montent en plus.

bonne journée


Salut, pourriez-vous nous en dire plus sur les "geotools gratuits plus sophistiqués" qui se trouvent au-dessus d'OpenLayers? GeoExt a été mentionné ci-dessus, mais je n'en ai pas encore vu d'autres spécifiés. Merci.
Brian B

@BrianB Salut Brian, précisément je pensais à geoext quand j'ai écrit "des geotools gratuits plus sophistiqués". Cette bibliothèque unit un EXTJS avec des openlayers.
demonz demonz
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.