web-dev-qa-db-fra.com

OpenLayers vs Google Maps?

J'ai utilisé Google Maps à quelques reprises, mais il n’ya pas lieu de s’interroger sur OpenLayers .
Avant de commencer tout type de codage, voici quelques questions qui me viennent à l’esprit,

  • Pourquoi devrais-je utiliser OpenLayers au lieu de Google Maps?
    • À l'exception de sa licence de logiciel libre, de toute façon
    • Avez-vous rencontré une situation dans laquelle vous recommanderiez de ne pas utiliser OpenLayers?
    • J'ai fait un recherche sur "OpenLayers" sur Stack Overflow ; il n'y a pas beaucoup de réponses. Est-ce que cela signifie que cette solution n'est pas beaucoup utilisée? Serait-ce un problème pour la viabilité à long terme du projet?
  • Pour ceux d'entre vous qui ont déjà utilisé OpenLayers: existe-t-il des pièges/problèmes courants que je pourrais rencontrer?
    • Qu'en est-il d'utiliser un framework JavaScript avec celui-ci? J'ai vu qu'il utilisait 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 de mon application pour être sensible et je ne peux pas attendre des heures pour obtenir une carte affichée.
  • Y a-t-il des cartes disponibles pour beaucoup d'endroits ou est-ce qu'il en manque beaucoup?
    • C'est-à-dire que je suis en France et que mon application a besoin de fonctionner au moins pour les grandes villes ... Est-ce que ça ira?
    • si non, est-il facile de trouver des couches et des visualisations pour OpenLayers et de les intégrer?
  • Existe-t-il un type d’API pour afficher les routes?
    • Par exemple, pour montrer des routes à sens unique seulement.
    • Si oui, comment puis-je le faire? Dois-je avoir un type de fichier contenant ces informations sur les routes, puis les afficher moi-même sur la carte?
  • Connaissez-vous un bon tutoriel pour OpenLayers?

Je n'ai pas encore essayé, ce ne sont que des questions hors de propos ...

170
Pascal MARTIN

Ce sont vraiment de 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?

  • Flexibilité: vous n'êtes pas lié à un fournisseur de carte ou à une technologie en particulier. Vous pouvez changer à tout moment et ne pas avoir à réécrire tout votre code. Google, Yahoo, Microsoft, WMS, ArcGIS Server, MapServer, etc. sont tous pris en charge immédiatement.
  • Prise en charge de vecteur: prise en charge améliorée 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 du source.
  • Débogage: Il est beaucoup plus facile de 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 mappage open source côté client.

Existe-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 sous forme de projection commune et réelle telle que WGS 84 sur une carte OpenLayers à l’aide de Google, de Yahoo et de 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 rencontré est de référencer jQuery après OpenLayers. Autre que cela, ça a été une navigation en douceur.
  • La performance est géniale! Les seuls problèmes seront liés à votre serveur de cartes ou à l'ajout de trop de vecteurs à votre carte.

Y a-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 pour n'importe où dans le monde.

Existe-t-il un type d’API pour afficher les routes?

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

Connaissez-vous un bon tutoriel pour OpenLayers?

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

159
atogle

Ce n'est pas nécessairement une question d'OpenLayers OR Google Maps. Vous pouvez enfin utiliser Google Maps comme fond de carte dans OpenLayers. Quelques réponses plus spécifiques:

Pourquoi OpenLayers?

  • OpenLayers peut combiner des cartes provenant 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 personnaliser beaucoup plus OpenLayers que Google Maps.
  • Open source, vous pouvez vérifier le code source lors du débogage
  • Si vous avez besoin de 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 les données vectorielles (WFS) d'un autre serveur, vous avez besoin d'un proxy, en raison de limitations en matière de script intersite.

Performance

  • Dépend principalement de la vitesse du fond de 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 davantage un problème de navigateur qu'un problème avec OpenLayers.

Framework JavaScript

  • Regardez GeoExt , par exemple ExtJS + OpenLayers

Cartes disponibles

  • OpenLayers ne vient pas avec un backend de carte. Vous pouvez utiliser Google Maps, Yahoo Maps, MS Virtual Earth, etc., ou n’importe quel service WMS ou WFS auquel vous avez accès.
36
Nils Weinander

Les utilisateurs d’OpenLayers ne sont pas très présents sur SO mais ils sont disponibles. Les listes de diffusion OpenLayers sont assez actives (je suis sur - tilisateurs et Dev et consultez 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 je vais vous expliquer que OpenLayers et Google Maps ne s’excluent pas mutuellement. OpenLayers est une bibliothèque javascript que vous pouvez utiliser pour interagir avec Google Maps. Découvrez cet exemple: OpenLayers utilisant Google Maps . Et voici la principale page des exemples OpenLayers .

23
Derek Swingley

Un point qui n’a pas été pleinement expliqué ici est que l’utilisation d’OpenLayers évite diverses restrictions imposées par Google sur les conditions de service de ses API de carte, 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 accéder (par exemple, un intranet d'entreprise). (IANAL, mais voir Conditions d'utilisation, 9.1 et la FAQ )

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

  • Google se réserve le droit de fermer l'accès à l'API si vous affichez une carte dont le contenu est inacceptable. L'exemple donné dans la FAQ est une carte des drogues illicites, qui donne une bonne idée des zones d'ombre 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 de longue date de Google Maps qui a récemment commencé à utiliser OpenLayers, j’ai le sentiment que Google Maps dispose d’une meilleure documentation, d’une communauté d’utilisateurs plus étendue et d’une API plus claire et plus stable que OpenLayers. Vous devez donc faire un compromis quelque part.

13
nrabinowitz

Cela dépend vraiment de ce que vous voulez utiliser la carte. Pour tracer simplement des points sur une carte, Google Maps ira bien. Les couches de carte pour Google Maps sont également assez détaillées. OpenLayers, d’autre part, offre beaucoup plus de fonctionnalités et est très extensible.

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

En ce qui concerne les cartes, OpenLayers n’est qu’une API, vous devez donc fournir les couches de carte. L'API de Google Maps sera limité aux couches de carte fournies par Google. Avec OpenLayer, vous pouvez afficher à peu près tous les services de carte disponibles au public (WMS, WFS, TMS, WMS-C). Openstreetmap.org carte globale des rues collectée par la communauté) est un très bon exemple. OSM peut être ajouté aux couches ouvertes en tant que couche TMS. Découvrez ceci --- (exemple pour obtenir des instructions.

12
Andrew Dwyer

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 données géographiques, mais Google Maps est un pool de services qui inclut un cadre permettant d’afficher des données géographiques entre d’autres services.

Ainsi, Google Maps expose de nombreux services et fonctionnalités qu'OpenLayes ne possède pas. Parmi les exemples de fonctionnalités et services de Google Maps, citons la localisation de régions, la détection de capteurs (pour les appareils avec GPS) et la localisation d’utilisateurs, le géocodage et le géocodage inversé, la vue sur la rue, etc.

9
angelcervera

Certains clients peuvent refuser ou avoir de fortes réserves quant à l'utilisation de Google Maps. Ils craignent peut-être que Google introduise de la publicité ou modifie l'API sans préavis. Toutefois, Google Maps présente l'avantage de s'intégrer à d'autres services Google (repères, ajout de photos, services de géocodage). En tant que site Web, vous pouvez toujours combiner de nombreux services de cartographie et API.

9
geographika

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 ne disposent pas d'une 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 elles et laissez-moi vous dire que certaines choses sont plus faciles à faire dans l'une que dans l'autre. Comme pour limiter les limites de la carte, il est beaucoup plus facile de le faire dans OpenLayers, mais les cartes thermiques sont plus faciles à utiliser sur GoogleMaps (elles sont officiellement prises en charge par Google, contrairement aux plug-ins OpenLayers disponibles).

  1. OpenLayers supporte les cartes hors ligne. Certains de mes utilisateurs sont dans des intranets privés sans connexion Internet.

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

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

  4. GoogleMaps a streetview qui est utile parfois.

  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 ne sont pas officiellement prises en charge.

En règle générale, vous devriez utiliser OpenLayers à la fin, en raison de la diminution du mal de tête que vous pourriez avoir avec les licences et l'utilisation de la bande passante de googlemaps. Les deux gèrent très bien la cartographie de base (affichage de marqueurs au-dessus d'une carte). À moins que vous ne trouviez une fonctionnalité spécifique dont vous avez besoin parmi celles qui ne sont pas présentes sur l'autre, vous devriez opter pour OpenLayers. Voir this pour plus d'informations sur la facturation de googlemaps et sur le moment où vous pouvez l'utiliser gratuitement.

De plus, GoogleMaps a son type de base de géolocalisation "LatLng" et Openlayers utilise "LonLat", ce qui me rend fous parce que je continue à me tromper dans l'ordre des paramètres dans les appels de fonctions.

6
Hoffmann

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

Utilisation du client:

  • Que faites-vous avec vos clients actuellement? Le changement peut être difficile.
  • De combien de fonctionnalités avez-vous vraiment besoin? OpenLayers en a pas mal, mais si vous ne l'utilisez pas ...

Serveur de données:

  • Êtes-vous au service de KML ? Si tel est le cas, OpenLayers et Google Maps fonctionneront avec, et vous devrez probablement décider en fonction de l'utilisation du client.

  • Êtes-vous au service d'autres types de services de données? (WMS, WFS, CSV, etc.) Si oui, alors OpenLayers a très probablement des exemples et une prise en charge.

3
Ruz

Outre ceux qui ont mentionné des problèmes de vitesse, j'aimerais ajouter que le rendu VML d'IE peut être très lent avec un calque vectoriel comportant de nombreuses fonctionnalités. Un utilisateur a mentionné environ 200. C'est à peu près exactement ce que je peux ajouter avant IE ralentit considérablement au point de geler. Si vous ajoutez des fonctionnalités qui sont des étiquettes de texte, vous pouvez en ajouter moitié moins, probablement parce que en interne, chaque étiquette de texte est composée de deux éléments VML.

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

3
Jānis Elmeris

OL a une base de fans importante et est peut-être l’un des vêtements les plus utilisés dans le monde.

Vous ne voyez pas beaucoup de sujets et de messages à ce sujet dans cette cyberplace, car les gens ici ont tendance à discuter d'autres types de technologies, telles que JSF et Mobile (non-géo), non pas parce que OL est comme struts.

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 aussi fonctionner dans le bon sens, car en tant que développeur, vous avez tout le code à l’avance et b: modifier et personnaliser est très simple.

Il existe des géotools gratuits plus sophistiqués, mais ils ne font qu'appeler des openlayers et résumer certaines des tâches les plus ennuyeuses.

Alors utilisez-le avec confiance. Il est mature, robuste et ne mourra pas dans un avenir prévisible. Toutefois, si vous souhaitez accélérer votre processus de développement, vous devriez essayer les autres outils qui s'y trouvent.

bonne journée

2
demonz demonz