OpenLayers gegen Google Maps? [geschlossen]


169

Ich habe Google Maps ein paar Mal verwendet, aber zu fragen , was über Openlayers .
Bevor ich mit dem Codieren beginne, sind hier einige Fragen, die mir in den Sinn kommen:

  • Warum sollte ich OpenLayers anstelle von Google Maps verwenden?
    • Bis auf die OSS-Lizenz jedenfalls
    • Haben Sie eine Situation erlebt, in der Sie empfehlen würden, OpenLayers absolut nicht zu verwenden?
    • Ich habe nach "OpenLayers" bei Stack Overflow gesucht . Es gibt nicht viele Antworten. Bedeutet das, dass diese Lösung nicht viel verwendet wird? Könnte es ein Problem für die langfristige Rentabilität des Projekts sein?
  • Für diejenigen unter Ihnen, die OpenLayers bereits verwendet haben: Gibt es häufige Fallstricke / Probleme, auf die ich stoßen kann?
    • Was ist mit einem JavaScript-Framework? Ich habe gesehen, dass es Prototype verwendet , und ich kenne Prototype, also wäre das in Ordnung. Aber was ist mit etwas anderem wie MooTools ? (Was nicht mit Prototype kompatibel ist, übrigens)
    • Gibt es irgendwelche Geschwindigkeits- und Leistungsprobleme? Ich muss auf meine Anwendung reagieren und kann nicht stundenlang warten, bis eine Karte angezeigt wird.
  • Gibt es Karten für viele Orte oder fehlen viele davon?
    • Das heißt, ich bin in Frankreich und brauche meine Bewerbung, um zumindest für Großstädte zu arbeiten ... Wird das in Ordnung sein?
    • Wenn nicht, ist es einfach, Ebenen und Visualisierungen für OpenLayers zu finden und zu integrieren?
  • Gibt es eine API zum Anzeigen von Straßen?
    • Zum Beispiel, um Straßen anzuzeigen, die nur in eine Richtung verlaufen.
    • Wenn ja, wie kann ich das machen? Muss ich eine Datei mit diesen Straßeninformationen haben und sie dann selbst auf der Karte anzeigen?
  • Kennen Sie ein gutes Tutorial zu OpenLayers?

Ich habe es noch nicht ausprobiert, das sind aus heiterem Himmel Fragen ...


Warum sollte "OSS-Lizenz" aus Neugier ein Punkt zugunsten von OpenLayers sein, außer aus philosophischen Gründen? Angenommen, mit der Google-Lizenz können Sie kostenlos tun, was Sie möchten. Warum sollte dies Ihre Entscheidung so oder so beeinflussen?
Mark

7
@Mark Es gibt Probleme mit der Google-Lizenz. IANAL, aber ich verstehe, dass das Anzeigen von Daten in Google Maps Google eine unbegrenzte Lizenz zum Kopieren, Ändern, Transformieren und Weitergeben Ihrer Daten gibt. Beispielsweise ist es illegal , Daten aus GIS-Produkten von UK Ordnance Survey in Google Maps anzuzeigen. Ein weiterer Vorteil von OSS ist, dass OpenLayers nicht den Launen einer Organisation unterliegt. Obwohl praktisch, können Sie wahrscheinlich Googles
gesundem

1
Diese Artikel könnten von Nutzen sein: EveryBlock - Über unsere Karten: blog.everyblock.com/2008/feb/18/maps Eine Liste auseinander
Übernehmen

8
Google Maps ist nicht völlig kostenlos ( google.com/support/forum/p/maps/… ). Die Lizenz hängt davon ab, wie Sie sie verwenden.
Mo.

Es lohnt sich, auf der GIS.SE-Website nach allen geografischen Aspekten zu suchen, wenn Sie auf SO keine Antwort finden.
Roy

Antworten:


158

Das sind wirklich tolle Fragen! Ich bin ein professioneller OpenLayers-Entwickler und Fan, daher werde ich Ihre Fragen aus dieser Perspektive beantworten.

Warum sollte ich OpenLayers anstelle von Google Maps verwenden?

  • Flexibilität: Sie sind nicht an einen bestimmten Kartenanbieter oder eine bestimmte Technologie gebunden. Sie können jederzeit Änderungen vornehmen und müssen nicht Ihren gesamten Code neu schreiben. Google, Yahoo, Microsoft, WMS, ArcGIS Server, MapServer usw. werden sofort unterstützt.
  • Vektorunterstützung: Bessere Unterstützung für Punkte, Polylinien und Polygone.
  • Steuerung: Sie können alle neuen Funktionen hinzufügen, die Sie möglicherweise benötigen. Ich habe persönlich drei Plugins für OpenLayers geschrieben, von denen zwei Teil der Quelle sind oder sein werden.
  • Debuggen: Viel einfacher zu debuggen, wenn Sie den Quellcode durchgehen können!

Ich würde mir überhaupt keine Sorgen um die langfristige Realisierbarkeit des Projekts machen. Es ist die führende clientseitige Open Source-Mapping-Bibliothek.

Gibt es häufige Fallstricke / Probleme, auf die ich stoßen kann?

  • Die größte Gefahr, auf die ich gestoßen bin, ist die Arbeit mit der Web Mercator (Google) -Projektion. Es kann schwierig sein, Vektordaten, die in einer allgemeinen und realen Projektion wie WGS 84 vorliegen, mithilfe von Google-, Yahoo- und Microsoft-Basiskarten in einer OpenLayers-Karte anzuzeigen . Die Beispiele sind dein Freund.

JavaScript Framework-Kompatibilität

  • Ich verwende das jQuery-Framework für alle meine Arbeiten. Das einzige Problem, das ich hatte, ist die Referenzierung von jQuery nach OpenLayers. Davon abgesehen war es ein reibungsloses Segeln.
  • Die Leistung ist großartig! Die einzigen Probleme sind mit Ihrem Kartenserver oder dem Hinzufügen zu vieler Vektoren zu Ihrer Karte.

Gibt es Karten für viele Orte?

  • Wie gesagt, Sie können Grundkarten aus nahezu jeder Quelle für überall auf der Welt verwenden.

Gibt es eine API zum Anzeigen von Straßen?

  • Ich würde CloudMade ausprobieren! Sie haben das OpenStreetMap- Projekt in einen Kartenkacheldienst konvertiert und ermöglichen ein benutzerdefiniertes Styling. Ich glaube, dass Sie Einbahnstraßen (gemäß Ihrem Beispiel) auf eine bestimmte Art und Weise gestalten können. Die CloudMade Developer Zone .

Kennen Sie ein gutes Tutorial zu OpenLayers?

Ich hoffe das ist nützlich. Und ich bin bei Stack Overflow, wenn Sie Fragen haben!


5
Hallo! Vielen Dank für diese Antwort, das ist in der Tat nützlich! Es gibt definitiv einige interessante Punkte (eine bessere Vektorunterstützung wird wahrscheinlich für das Projekt nützlich sein, über das ich nachdenke; und es ist nicht das einzige, was Sie sagen, das interessant ist!); Vielleicht stelle ich irgendwann noch ein paar andere Fragen: Ich habe noch nicht angefangen, mit OL zu arbeiten (diese Frage war ziemlich "vorläufig" ^^), aber die Zeit wird wohl kommen, wenn man die Antworten berücksichtigt, die ich bekommen habe!
Pascal MARTIN

5
+1. Ich habe versucht, diesen Kommentar nicht einzugeben, kann mir aber nicht helfen. WGS84 ist keine Projektion. (Es lohnt sich zu versuchen, dieses Zeug zu lernen - ich nehme schmerzhaft ein bisschen GIS auf und es hilft wirklich bei Kartenmaterial.)
MarkJ

1
WGS84 ist ein geografisches Koordinatensystem (zur Anzeige von Lat / Long-Punkten auf einem Ellipsoid). Web Mercator ist so ziemlich die defacto Webprojektion.
Roy

35

Es ist nicht unbedingt eine Frage von OpenLayers ODER Google Maps. Sie können schließlich Google Maps für Ihren Kartenhintergrund in OpenLayers verwenden. Einige spezifischere Antworten:

Warum OpenLayers?

  • OpenLayers können Karten aus verschiedenen Quellen kombinieren (Google Maps-Hintergrund, WMS-Overlays, Vektordaten aus KML- oder GML-Dateien oder WFS usw.).
  • Sie können OpenLayers viel mehr stylen als Google Maps
  • Open Source, Sie können den Quellcode beim Debuggen überprüfen
  • Wenn Sie eine hohe Präzision in den Karten benötigen, verwenden Sie OpenLayers mit einem geeigneten Kartenserver-Backend anstelle von Google Maps, um eine bessere Kartenprojektion zu erhalten (Google Maps geht davon aus, dass die Erde eine perfekte Kugel ist).

Tücken

  • Wenn Sie Vektordaten (WFS) von einem anderen Server verwenden möchten, benötigen Sie aufgrund von Einschränkungen für Cross-Site-Scripting einen Proxy

Performance

  • Hängt hauptsächlich von der Geschwindigkeit des Karten-Backends ab
  • Das Anzeigen vieler Vektorfunktionen (das Limit ist browserabhängig, in einer Ansicht jedoch> 200) benötigt Zeit, ist jedoch eher eine Browsersache als ein Problem mit OpenLayers

JavaScript-Frameworks

Verfügbare Karten

  • OpenLayers wird ohne Karten-Backend geliefert. Sie können Google Maps, Yahoo Maps, MS Virtual Earth usw. oder jeden WMS- und WFS-Dienst verwenden, auf den Sie Zugriff haben

Schöne Antworten; Vielen Dank für all diese Informationen! Ich kenne die Details noch nicht, muss aber möglicherweise einige Daten von meinem eigenen Server verwenden, daher sollte alles in Ordnung sein, insbesondere mit der Möglichkeit, mehrere Backends zu integrieren (Wenn ich das richtig verstanden habe ^^, habe ich die Möglichkeit zu testen das in ein paar Tagen hoffe ich ;-))
Pascal MARTIN

1
@Pascal, ich bin froh, dass die Antwort nützlich war. Ich kann hinzufügen, dass die OpenLayers-Community sehr aktiv ist und die Mailinglisten sehr hilfreich sind.
Nils Weinander

Wenn Sie etwas tun möchten, das nicht auf der Seite mit den Entwicklerbeispielen behandelt wird, können Sie dies höchstwahrscheinlich nicht auf Google Maps tun. Selbst Cross-Site-Scripting muss beispielsweise nicht von einem Proxy abgedeckt werden: openlayers.org/dev/examples/cross-origin.html
Glenn Plas

23

Ich habe nicht viel Präsenz von OpenLayers-Benutzern auf SO gesehen, aber sie sind da draußen. Die OpenLayers-Mailinglisten sind ziemlich aktiv (ich bin bei Users and Dev und sehe täglich zwischen 50 und 100 E-Mails, in denen verschiedene Dinge besprochen werden. Sie können die Listen auch über diese Links durchsuchen.).

Ich kann nicht alle Ihre Fragen beantworten, aber ich werde darauf hinweisen, dass sich OpenLayers und Google Maps nicht gegenseitig ausschließen. OpenLayers ist eine Javascript-Bibliothek, mit der Sie mit Google Maps interagieren können. Schauen Sie sich dieses Beispiel an: OpenLayers mit Google Maps . Und hier ist die Hauptbeispielseite von OpenLayers .


Danke für diese Antwort! Es ist schön zu sehen, dass die Mailling-Listen ziemlich aktiv sind, bevor Sie mit der Arbeit an einem Projekt beginnen ^^
Pascal MARTIN

13

Ein Punkt, der hier nicht vollständig angesprochen wurde, ist, dass durch die Verwendung von OpenLayers verschiedene Einschränkungen vermieden werden, die Google den Nutzungsbedingungen für seine Karten-APIs auferlegt, darunter:

  • Sie können eine Google-Karte nicht legal nur in einem Bereich Ihrer Website verwenden, für dessen Zugriff eine Zahlung erforderlich ist, oder für eine private Website, für die sich die Öffentlichkeit nicht anmelden kann (z. B. ein Unternehmens-Intranet). (IANAL, siehe jedoch Nutzungsbedingungen, 9.1 und die FAQ )

  • Sie können die Google-API nicht legal (oder praktisch) für Offline-Anwendungen verwenden (dh wenn die Kacheln von Ihrem eigenen Computer aus bereitgestellt werden). Auch wenn es keine gesetzlichen Einschränkungen gab, macht Google dies technisch sehr schwierig, während OpenLayers es einfach macht.

  • Google behält sich das Recht vor, den Zugriff auf die API zu sperren, wenn Sie eine Karte mit Inhalten anzeigen, die für Sie unangenehm sind. Das Beispiel in den FAQ ist eine Karte illegaler Drogen, die einen guten Eindruck von den Grauzonen vermittelt, die diese Einschränkung abdecken könnte.

Weitere Informationen finden Sie in diesen FAQ und in den Nutzungsbedingungen .

Als langjähriger Google Maps-Entwickler, der seit kurzem OpenLayers verwendet, habe ich das Gefühl, dass Google Maps eine bessere Dokumentation, eine größere Benutzergemeinschaft und eine klarere und stabilere API als OpenLayers bietet. Sie müssen also irgendwo einen Kompromiss eingehen.


"Sie können eine Google-Karte nicht legal in einem Bereich Ihrer Website verwenden, für dessen Zugriff eine Zahlung erforderlich ist, oder für eine private Website, für die sich die Öffentlichkeit nicht anmelden kann (z. B. ein Unternehmens-Intranet)." Das ist falsch. Sie können Google Maps in einem kostenpflichtigen Bereich Ihrer Website verwenden, solange die Mehrheit der Nutzer Ihre Website und Karten ohne Bezahlung nutzen kann. ZB eine Immobilienwebsite. Die Plakate müssen bezahlen, um ihre Häuser aufzulisten, aber die überwiegende Mehrheit der Benutzer kann die Website ohne Bezahlung durchsuchen. In diesem Fall haben beide Zugriff auf Google Maps.
Craig

Vielen Dank - ich meinte, dass Sie die API nicht ausschließlich in Bereichen verwenden können, in denen Zahlungen erforderlich sind. Ich habe meinen Beitrag aktualisiert und weitere Links hinzugefügt, um dieses Problem zu beheben.
Nrabinowitz

OpenLayers verwendet die Google Maps-API intern, sodass Sie derselben Lizenz unterliegen. osgeo-org.1560.x6.nabble.com/…
Alfredo Osorio

@AlfredoOsorio - Ja, wenn Sie Google-Ebenen verwenden. Es gibt viele andere Kachelquellen.
Nrabinowitz

12

Es hängt wirklich davon ab, wofür Sie die Karte verwenden möchten. Um einfach Punkte auf einer Karte zu zeichnen, ist Google Maps in Ordnung. Die Kartenebenen für Google Maps sind ebenfalls sehr detailliert. OpenLayers hingegen bietet weitaus mehr Funktionalität und ist sehr erweiterbar.

OpenLayers bietet viele Beispiele für den Einstieg.

Bei Karten ist OpenLayers nur eine API, daher müssen Sie sie bereitstellen, um Layer zuzuordnen. Die Google Maps-API ist auf die von Google bereitgestellten Kartenebenen beschränkt. Mit OpenLayer können Sie so ziemlich jeden öffentlich verfügbaren Kartendienst (WMS, WFS, TMS, WMS-C) anzeigen. Ein sehr gutes Beispiel ist openstreetmap.org - (globale Straßenkarte, die von der Community gesammelt wurde). OSM kann Openlayern als TMS-Schicht hinzugefügt werden. In diesem Beispiel finden Sie Anweisungen.


Hallo! Sieht aus wie "Ich bin" Ihre erste Antwort hier! Herzlich willkommen! Und danke für deine Antwort :-)
Pascal MARTIN

9

Einige Kunden lehnen die Verwendung von Google Maps möglicherweise ab oder haben starke Vorbehalte. Sie haben möglicherweise berechtigte Bedenken, dass Google ohne vorherige Ankündigung Werbung einführt oder die API ändert. Google Maps bietet jedoch den Vorteil der Integration in andere Google-Dienste (Ortsmarken, Hinzufügen von Fotos, Geokodierungsdienste). Da es sich um das Web handelt, können Sie immer viele verschiedene Mapping-Services und APIs kombinieren.


1
+1. Ich habe solche Kunden. Und ich sage nicht, dass sie falsch sind. Als ich das letzte Mal nachgesehen habe, erlauben die Lizenzbedingungen von Google Maps Google tatsächlich, Werbung in die Karten einzuführen, wann immer sie dies wünschen.
MarkJ

2
Durch die Verwendung von GoogleMaps gewähren Sie Google eine unbefristete, unwiderrufliche, lizenzgebührenfreie, weltweite Lizenz zur Reproduktion, Anpassung und Änderung Ihrer Inhalte.
MarkJ

9

Ich stimme allen Antworten zu, aber es gibt einen sehr wichtigen Punkt, den niemand erwähnt. OpenLayers und Google Maps haben unterschiedliche Ziele.

OpenLayer ist ein hervorragendes Framework für die Anzeige von Geodaten. Google Maps ist jedoch ein Pool von Diensten, die unter anderem ein Framework für die Anzeige von Geodaten enthalten.

Google Maps bietet also viele Dienste und Funktionen, die OpenLayes nicht bietet. Einige Beispiele für Funktionen und Dienste von Google Maps sind die Lokalisierung von Regionen, die Sensorerkennung (für Geräte mit GPS) und die Benutzerlokalisierung, Geokodierung und umgekehrte Geokodierung, Straßenansicht usw.


6

Ich habe beide APIs verwendet. Ich erstelle eine Software für Unternehmen und diese Software erfordert eine Zuordnung, aber nicht alle Clients haben eine GoogleMaps-Lizenz. Daher muss ich beide Arten von Karten unterstützen.

Ich habe eine gemeinsame API erstellt, um die Unterschiede zwischen ihnen zu abstrahieren, und ich möchte Ihnen sagen, dass einige Dinge in der einen einfacher sind als in der anderen. Ähnlich wie bei der Begrenzung der Grenzen, an die Sie die Karte verschieben können, ist dies in OpenLayers viel einfacher, aber Heatmaps sind in GoogleMaps einfacher zu verwenden (es wird im Gegensatz zu den verfügbaren OpenLayers-Plugins offiziell von Google unterstützt).

  1. OpenLayers unterstützen Offline-Karten. Einige meiner Benutzer befinden sich in privaten Intranets ohne Internetverbindung.

  2. GoogleMaps verfügt über zwei Plugins, MarkCluster und Spiderfier , die eine Visualisierung einer Vielzahl von Markern ermöglichen.

  3. GoogleMaps InfoWindows sind einfacher zu verwenden und benutzerfreundlicher als OpenLayers.Popups. Dies sind die kleinen Fenster, die sich öffnen können, wenn Sie auf eine Markierung klicken. Googlemaps InfoWindows sind standardmäßig auch viel hübscher. Sie müssen einige CSS-Assistenten mit den Popups ausführen.

  4. GoogleMaps verfügt über eine Straßenansicht, die manchmal nützlich ist.

  5. GoogleMaps bietet weitere Funktionen, die Sie möglicherweise benötigen. Viele Funktionen sind zwar auch in OpenLayers vorhanden, werden aber nicht offiziell unterstützt.

Normalerweise sollten Sie sich am Ende für OpenLayers entscheiden, da Sie weniger Probleme mit der Lizenzierung und der Bandbreitennutzung durch Google Maps haben. Beide handhaben grundlegende Zuordnungen (dh das Anzeigen von Markierungen auf einer Karte) sehr gut. Wenn Sie keine bestimmte Funktion finden, die Sie benötigen, sollten Sie sich für OpenLayers entscheiden. Sehen Sie das für weitere Informationen über Googlemaps Abrechnungs- und wenn Sie es kostenlos nutzen können.

Auch GoogleMaps hat seinen grundlegenden Geolocation-Typ als "LatLng" und Openlayers verwenden "LonLat", was mich verrückt macht, weil ich die Reihenfolge der Parameter in Funktionsaufrufen immer wieder falsch verstehe.


3

Zusätzlich zu denen, die Geschwindigkeitsprobleme erwähnt haben, möchte ich hinzufügen, dass der VML-Renderer des IE mit einer Vektorebene mit vielen Funktionen sehr langsam werden kann. Ein Benutzer erwähnte ungefähr 200. Genau das kann ich hinzufügen, bevor der IE bis zum Einfrieren erheblich langsamer wird. Wenn Sie Features hinzufügen, bei denen es sich um Textbeschriftungen handelt, können Sie die Hälfte weniger hinzufügen, wahrscheinlich weil intern jede Textbeschriftung aus zwei VML-Elementen besteht.

In Google können Sie ein benutzerdefiniertes GOverlay erstellen, dessen Inhalt ein "div" ist, das im IE problemlos gerendert wird.


3

Ein paar Dinge, die ich aus zwei Perspektiven hinzufügen möchte: Client-Nutzung und Daten-Derving.

Client-Nutzung:

  • Was sind Ihre Kunden derzeit gewohnt? Veränderung kann schwierig sein.
  • Wie viel Funktionalität benötigen Sie wirklich? OpenLayers hat einiges zu bieten, aber wenn Sie es nicht verwenden ...

Datenbereitstellung:

  • Stellen Sie KML- Daten bereit ? In diesem Fall funktionieren sowohl OpenLayers als auch Google Maps damit, und Sie müssen sich wahrscheinlich anhand der Client-Nutzung entscheiden.

  • Bedienen Sie andere Arten von Datendiensten? (WMS, WFS, CSV usw.) Wenn ja, dann hat OpenLayers sehr wahrscheinlich Beispiele und Unterstützung dafür.


2

OL hat eine große Fangemeinde und ist vielleicht das am häufigsten verwendete Opensource-Geothing der Welt.

Sie sehen nicht so viele Threads und Posts darüber in diesem Cyberplace, weil die Leute hier dazu neigen, über andere Arten von Technologien wie JSF und Mobile (nicht geo) zu diskutieren, nicht weil OL wie Streben ist.

Ol hat jedoch einige Nachteile, hauptsächlich, dass es so niedrig ist, dass Sie viel Code schreiben müssen, um allgemeine Operationen durchzuführen. Das kann auch gut funktionieren, denn als Entwickler a: Sie haben den gesamten Code im Voraus und b: das Optimieren und Anpassen ist sehr einfach.

Es gibt anspruchsvollere kostenlose Geotools, aber alles, was sie tun, ist Openlayers zu nennen und einige der langweiligeren Aufgaben zu abstrahieren.

Verwenden Sie es also sicher. Es ist ausgereift, robust und wird in absehbarer Zeit nicht sterben. Wenn Sie jedoch Ihren Entwicklungsprozess beschleunigen möchten, sollten Sie die anderen Tools ausprobieren, die darüber montiert werden.

Einen schönen Tag noch


Hallo, könnten Sie die "anspruchsvolleren kostenlosen Geotools" näher erläutern, die auf OpenLayers basieren? GeoExt wurde oben erwähnt, aber ich habe noch keine anderen angegeben. Vielen Dank.
Brian B

@BrianB hi brian, genau ich habe über geoext nachgedacht, als ich "anspruchsvollere kostenlose geotools" geschrieben habe. Diese Bibliothek vereint ein EXTJS mit Openlayern.
Dämon Dämonz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.