OpenLayers czy Google Maps? [Zamknięte]

169

Kilka razy korzystałem z Google Maps, ale co się zastanawiasz nad OpenLayers .
Przed rozpoczęciem jakiegokolwiek kodowania mam kilka pytań, które przychodzą mi do głowy:

  • Dlaczego miałbym używać OpenLayers zamiast Map Google?
    • W każdym razie z wyjątkiem licencji OSS
    • Czy spotkałeś się z sytuacją, w której odradzałbyś absolutnie nie używanie OpenLayers?
    • Zrobiłem wyszukiwanie o „OpenLayers” na przepełnienie stosu ; nie ma wielu odpowiedzi. Czy to znaczy, że to rozwiązanie jest rzadko używane? Czy może to stanowić problem dla długoterminowej rentowności projektu?
  • Dla tych z Was, którzy już korzystali z OpenLayers: czy są jakieś typowe pułapki / problemy, które mogę napotkać?
    • A co z używaniem z nim JavaScript Framework? Widziałem, że używa Prototype i wiem, że Prototype, więc byłoby OK. Ale co z używaniem czegoś innego jak MooTools ? (Który nie jest kompatybilny z Prototype, BTW)
    • Czy są jakieś problemy związane z szybkością i wydajnością? Moja aplikacja musi działać i nie mogę czekać godzinami na wyświetlenie mapy.
  • Czy są dostępne mapy dla wielu miejsc, czy też brakuje ich wielu?
    • To znaczy, że jestem we Francji i potrzebuję mojej aplikacji przynajmniej do pracy w dużych miastach ... Czy to będzie w porządku?
    • jeśli nie, to czy łatwo jest znaleźć warstwy i wizualizacje dla OpenLayers i je zintegrować?
  • Czy istnieje interfejs API do wyświetlania dróg?
    • Na przykład, aby pokazać drogi jednokierunkowe.
    • Jeśli tak, jak mogę to zrobić? Czy muszę mieć jakiś plik zawierający te informacje o drogach, a potem samemu wyświetlać je na mapie?
  • Czy znasz jakiś dobry samouczek dotyczący OpenLayers?

Jeszcze tego nie próbowałem, to są tylko niewyjaśnione pytania ...

Pascal MARTIN
źródło
Z ciekawości, dlaczego „licencja OSS” miałaby być argumentem przemawiającym za OpenLayers, z wyjątkiem powodów filozoficznych? Zakładając, że licencja Google pozwala ci robić to, co chcesz, za darmo, dlaczego miałby wpłynąć na twoją decyzję tak czy inaczej?
Mark
7
@Mark Wystąpiły problemy z licencją Google. IANAL, ale rozumiem, że wyświetlanie danych w Mapach Google daje Google nieograniczoną licencję na kopiowanie, modyfikowanie, przekształcanie i redystrybucję danych. Np . Nielegalne jest pokazywanie jakichkolwiek danych pochodzących z produktów GIS UK Ordnance Survey w Google Maps. Kolejną zaletą OSS jest to, że OpenLayers nie podlega kaprysom jednej organizacji. Chociaż praktycznie, prawdopodobnie możesz ufać rozsądkowi Google (i pieniądzom oraz powodom biznesowym), aby wspierać Mapy Google w przyszłości
MarkJ
1
Te artykuły mogą być przydatne: EveryBlock - About Our Maps: blog.everyblock.com/2008/feb/18/maps A List Apart - Przejmij kontrolę nad swoimi mapami (także z EveryBlock) alistapart.com/articles/takecontrolofyourmaps
mg1075
8
Mapy Google nie są całkowicie bezpłatne ( google.com/support/forum/p/maps/… ). Licencja zależy od tego, jak z niej korzystasz.
Pon.
Jeśli nie możesz znaleźć odpowiedzi na SO, warto zajrzeć na stronę GIS.SE, aby zapoznać się ze wszystkimi kwestiami dotyczącymi geografii.
Roy

Odpowiedzi:

158

To są naprawdę świetne pytania! Jestem profesjonalnym programistą i fanem OpenLayers, więc odpowiem na Twoje pytania z tej perspektywy.

Dlaczego miałbym używać OpenLayers zamiast Map Google?

  • Elastyczność: nie jesteś przywiązany do żadnego konkretnego dostawcy map ani technologii. Możesz zmienić w dowolnym momencie i nie musisz przepisywać całego kodu. Google, Yahoo, Microsoft, WMS, ArcGIS Server, MapServer itp. Są obsługiwane po wyjęciu z pudełka.
  • Obsługa wektorów: Lepsza obsługa punktów, polilinii i wielokątów.
  • Kontrola: masz możliwość dodawania nowych funkcji, których możesz potrzebować. Osobiście napisałem trzy wtyczki dla OpenLayers, z których dwie są lub będą częścią źródła.
  • Debugowanie: znacznie łatwiejsze do debugowania, gdy możesz przejść przez kod źródłowy!

W ogóle nie martwiłbym się o długoterminową rentowność projektu. Jest to czołowa biblioteka mapowania po stronie klienta typu open source.

Czy są jakieś typowe pułapki / problemy, które mogę napotkać?

  • Największą pułapką, na jaką się natknąłem, jest praca z projekcją Web Mercator (Google). Wyświetlanie danych wektorowych, które są w powszechnej i rzeczywistej projekcji, takiej jak WGS 84, na mapę OpenLayers przy użyciu podstawowych map Google, Yahoo i Microsoft może być uciążliwe . Przykłady są twoim przyjacielem.

Zgodność środowiska JavaScript

  • Używam frameworka jQuery do całej mojej pracy, a jedynym problemem, jaki miałem, jest odwoływanie się do jQuery po OpenLayers. Poza tym żegluga przebiegła gładko.
  • Wydajność jest świetna! Jedyne problemy będą związane z serwerem map lub dodaniem zbyt wielu wektorów do mapy.

Czy są dostępne mapy dla wielu miejsc?

  • Jak powiedziałem, możesz używać map bazowych z dowolnego źródła z dowolnego miejsca na świecie.

Czy istnieje interfejs API do wyświetlania dróg?

  • Sprawdziłbym CloudMade! Przekonwertowali projekt OpenStreetMap na usługę kafelków mapy i umożliwiają niestandardową stylizację. Uważam, że ulice jednokierunkowe można stylizować (na przykład) w określony sposób. Strefa deweloperów CloudMade .

Czy znasz jakiś dobry samouczek dotyczący OpenLayers?

  • Nie znam żadnych samouczków, ale w przykładach OpenLayers jest mnóstwo przykładów

Mam nadzieję, że to się przyda. A jeśli masz jakieś pytania, jestem w pobliżu Stack Overflow!

atogle
źródło
5
Cześć! Wielkie dzięki za tę odpowiedź, to naprawdę przydatne! Jest na pewno kilka interesujących punktów (lepsza obsługa wektorów prawdopodobnie przyda się w projekcie, o którym myślę; i to nie jedyna rzecz, o której mówisz, jest interesująca!); Może za jakiś czas zadam kilka innych pytań: nie zacząłem jeszcze pracować z OL (to pytanie było dość "wstępne" ^^), ale przypuszczam, że nadejdzie czas, biorąc pod uwagę odpowiedzi, które uzyskałem!
Pascal MARTIN
5
+1. Próbowałem nie wpisywać tego komentarza, ale nie mogę się powstrzymać. WGS84 nie jest projekcją. (Warto spróbować się tego nauczyć - boleśnie
zbieram
1
WGS84 to geograficzny układ współrzędnych (używany do wyświetlania punktów szerokości / długości na elipsoidzie). Internet mercator to właściwie defacto web-projection.
Roy
35

Niekoniecznie jest to kwestia OpenLayers LUB Google Maps. W końcu możesz użyć Map Google jako tła mapy w OpenLayers. Bardziej szczegółowe odpowiedzi:

Dlaczego OpenLayers?

  • OpenLayers może łączyć mapy z różnych źródeł (tło Google Maps, nakładki WMS, dane wektorowe z plików KML lub GML lub WFS itp.)
  • Możesz stylizować OpenLayers znacznie bardziej niż Mapy Google
  • Open source, możesz sprawdzić kod źródłowy podczas debugowania
  • Jeśli potrzebujesz dużej precyzji w mapach, użyj OpenLayers z odpowiednim zapleczem serwera map zamiast Map Google, aby uzyskać lepsze odwzorowanie mapy (Google Maps zakłada, że ​​Ziemia jest idealną kulą)

Pułapki

  • Jeśli chcesz używać danych wektorowych (WFS) z innego serwera, potrzebujesz serwera proxy ze względu na ograniczenia dotyczące skryptów między witrynami

Występ

  • Zależy głównie od szybkości obsługi mapy
  • Wyświetlanie wielu funkcji wektorowych (limit zależy od przeglądarki, ale powiedzmy> 200 w jednym widoku) zajmuje trochę czasu, ale jest to bardziej kwestia przeglądarki niż problem z OpenLayers

Struktury JavaScript

Dostępne mapy

  • OpenLayers nie zawiera zaplecza mapowego. Możesz korzystać z Google Maps, Yahoo Maps, MS Virtual Earth itp. Lub dowolnej usługi WMS i WFS, do której masz dostęp
Nils Weinander
źródło
Ładne odpowiedzi; dzięki za wszystkie te informacje! Nie znam jeszcze szczegółów, ale być może będę musiał użyć niektórych danych z własnego serwera, więc wszystko powinno być w porządku, szczególnie z możliwością integracji kilku backendów (jeśli dobrze zrozumiałem ^^ będę miał szanse przetestować mam nadzieję, że za kilka dni ;-))
Pascal MARTIN
1
@ Pascal, cieszę się, że odpowiedź była przydatna. Mogę dodać, że społeczność OpenLayers jest bardzo aktywna, a listy mailingowe bardzo pomocne.
Nils Weinander
Jeśli jest coś, co chcesz zrobić, czego nie ma na stronie z przykładami deweloperów, prawdopodobnie nie możesz tego zrobić na mapach Google. na przykład nawet cross-site scripting nie musi być chroniony przez proxy: openlayers.org/dev/examples/cross-origin.html
Glenn Plas
23

Nie widziałem zbytniej obecności użytkowników OpenLayers na SO, ale oni tam są. W OpenLayers Listy mailingowe są dość aktywne (jestem na użytkowników i Dev i zobaczyć wszędzie od 50-100 maili dziennie omawiając różne rzeczy. Można wyszukiwać list z tych linków zbyt.).

Nie mogę odpowiedzieć na wszystkie Twoje pytania, ale jedną rzecz, którą tam przedstawię, jest to, że OpenLayers i mapy Google nie wykluczają się wzajemnie. OpenLayers to biblioteka javascript, której można używać do interakcji z mapami Google. Spójrz na ten przykład: OpenLayers przy użyciu map Google . A oto główna strona z przykładami OpenLayers .

Derek Swingley
źródło
Dzięki za odpowiedź! Miło widzieć, że listy maillingowe są dość aktywne, zanim zaczniesz pracę z projektem ^^
Pascal MARTIN
13

Jedna kwestia, która nie została tutaj w pełni omówiona, to fakt, że korzystanie z OpenLayers pozwala uniknąć różnych ograniczeń, które Google nakłada na warunki świadczenia usług dla swoich map API, w tym:

  • Nie możesz legalnie używać mapy Google wyłącznie w sekcji swojej witryny, która wymaga opłaty za dostęp, lub w witrynie prywatnej, do której użytkownicy nie mogą się zarejestrować (np. Firmowy intranet). (IANAL, ale zobacz Warunki korzystania z usługi, 9.1 i często zadawane pytania )

  • Nie możesz legalnie (lub praktycznie) korzystać z Google API w aplikacjach offline (tj. Gdzie kafelki są obsługiwane z własnego komputera). Nawet jeśli nie było ograniczeń prawnych, Google bardzo utrudnia to technicznie, a OpenLayers ułatwia.

  • Google zastrzega sobie prawo do zablokowania dostępu do interfejsu API, jeśli wyświetlasz mapę z zawartością, którą uzna za kontrowersyjną. Przykład podany w FAQ to mapa narkotyków, która dobrze pokazuje szare obszary, które może obejmować to ograniczenie.

Więcej informacji można znaleźć w często zadawanych pytaniach i Warunkach korzystania z usługi .

To powiedziawszy, jako wieloletni programista Map Google, który niedawno zaczął używać OpenLayers, uważam, że Mapy Google mają lepszą dokumentację, większą społeczność użytkowników oraz bardziej przejrzysty i stabilniejszy interfejs API niż OpenLayers. Więc musisz gdzieś dokonać kompromisu.

nrabinowitz
źródło
„Nie możesz legalnie korzystać z mapy Google w sekcji swojej witryny, która wymaga opłaty za dostęp, lub w witrynie prywatnej, do której użytkownicy nie mogą się zarejestrować (np. Firmowy intranet)”. To jest niepoprawne. Możesz używać Map Google w płatnej sekcji swojej witryny, o ile większość użytkowników będzie mogła korzystać z Twojej witryny i map bez płacenia. Np. Witryna internetowa nieruchomości. Plakaty muszą płacić, aby zamieszczać listę swoich domów, ale zdecydowana większość użytkowników może przeglądać witrynę bez płacenia. W tym przypadku obaj mają dostęp do Google Maps.
Craig
Dzięki - miałem na myśli, że nie możesz używać API wyłącznie w sekcjach wymagających płatności. Zaktualizowałem swój post i dodałem więcej linków, aby rozwiązać ten problem.
Nrabinowitz
OpenLayers korzysta wewnętrznie z Google Maps API, więc podlegasz tej samej licencji. osgeo-org.1560.x6.nabble.com/…
Alfredo Osorio
@AlfredoOsorio - tak, IFF używasz warstw Google. Istnieje wiele innych źródeł płytek.
nrabinowitz
12

To naprawdę zależy od tego, do czego chcesz używać mapy. Aby po prostu narysować punkty na mapie, Mapy Google będą w porządku. Warstwy mapy dla Map Google są również dość szczegółowe. Z drugiej strony OpenLayers oferuje znacznie więcej funkcji i jest bardzo rozszerzalny.

OpenLayers ma wiele przykładów, od których możesz zacząć.

Jeśli chodzi o mapy, OpenLayers to tylko API, więc musisz je dostarczyć, aby zmapować warstwy. Interfejs API Map Google będzie ograniczony do warstw mapy dostarczonych przez Google. Dzięki OpenLayer możesz wyświetlić prawie każdą publicznie dostępną usługę mapową (WMS, WFS, TMS, WMS-C). Bardzo dobrym przykładem jest openstreetmap.org - (globalna mapa ulic zebrana przez społeczność). OSM można dodać do openlayerów jako warstwę TMS. Sprawdź ten przykład, aby uzyskać instrukcje.

Andrew Dwyer
źródło
Cześć! Wygląda na to, że Twoja pierwsza odpowiedź brzmi „Jestem”! Witamy! Dziękuję za odpowiedź :-)
Pascal MARTIN
9

Niektórzy klienci mogą odmówić korzystania z Map Google lub mieć poważne zastrzeżenia. Mogą mieć uzasadnione obawy, że Google może wprowadzić reklamy lub zmienić interfejs API bez powiadomienia. Jednak Mapy Google mają tę zaletę, że integrują się z innymi usługami Google (oznaczenia miejsc, dodawanie zdjęć, usługi geokodowania). Ponieważ jest to sieć internetowa, zawsze możesz łączyć wiele różnych usług mapowania i interfejsów API.

geographika
źródło
1
+1. Mam takich klientów. I nie mówię, że się mylą. Kiedy ostatnio sprawdzałem, warunki licencyjne Map Google rzeczywiście pozwalają Google na umieszczanie reklam na mapach, kiedy tylko chcą.
MarkJ
2
Korzystając z GoogleMaps, udzielasz Google wieczystej, nieodwołalnej, wolnej od opłat, ogólnoświatowej licencji na reprodukcję, adaptację i modyfikację treści.
MarkJ
9

Zgadzam się ze wszystkimi odpowiedziami, ale jest jedna bardzo ważna kwestia, o której nikt nie wspomina. OpenLayers i Google Maps mają różne cele.

OpenLayer to doskonała platforma do wyświetlania danych geograficznych, ale Mapy Google to zbiór usług, które obejmują strukturę do wyświetlania geodanych wśród innych usług.

Tak więc Mapy Google udostępniają wiele usług i funkcji, których OpenLayes nie ma. Niektóre przykłady funkcji i usług Google Maps to lokalizacja regionu, wykrywanie czujnika (dla urządzenia z GPS) i lokalizacja użytkownika, geokodowanie i odwrotne geokodowanie, widok ulicy itp.

angelcervera
źródło
6

Użyłem obu API. Tworzę oprogramowanie dla korporacji i to oprogramowanie wymaga mapowania, ale nie wszyscy klienci mają licencję GoogleMaps, więc muszę obsługiwać oba typy map.

Stworzyłem wspólne API do wyodrębniania różnic między nimi i powiem ci, że niektóre rzeczy są łatwiejsze do zrobienia w jednym niż w drugim. Podobnie jak ograniczanie granic miejsca, do którego można przesuwać mapę, jest to o wiele łatwiejsze w OpenLayers, ale heatmapy są łatwiejsze w użyciu na GoogleMaps (jest oficjalnie obsługiwany przez Google, w przeciwieństwie do dostępnych wtyczek OpenLayers).

  1. OpenLayers obsługuje mapy offline. Niektórzy z moich użytkowników znajdują się w prywatnych intranetach bez połączenia z Internetem.

  2. GoogleMaps ma dwie absolutnie niezbędne wtyczki, MarkCluster i Spiderfier, które umożliwiają wizualizację ogromnej liczby znaczników.

  3. GoogleMaps InfoWindows są łatwiejsze w użyciu i mają lepszą użyteczność niż OpenLayers.Popups. Są to małe okienka, które można otworzyć po kliknięciu znacznika. Googlemaps InfoWindows są również domyślnie dużo ładniejsze, musisz wykonać trochę kreacji CSS z wyskakującymi okienkami.

  4. GoogleMaps ma widok ulicy, który jest czasami przydatny.

  5. GoogleMaps ma więcej funkcji, których możesz potrzebować. Chociaż wiele funkcji jest również obecnych w OpenLayers, ale nie są one oficjalnie obsługiwane.

Zwykle w końcu powinieneś wybrać OpenLayers ze względu na mniejszy ból głowy, jaki możesz uzyskać z licencjonowania i wykorzystania pasma z GoogleMaps. Oba radzą sobie bardzo dobrze z podstawowym mapowaniem (tj. Wyświetlaniem znaczników na górze mapy). Jeśli nie możesz znaleźć konkretnej funkcji, której potrzebujesz, od jednej, której nie ma na drugiej, powinieneś wybrać OpenLayers. Zapoznaj się z tym artykułem, aby uzyskać więcej informacji o rozliczeniach za Google Maps i kiedy możesz z nich korzystać bezpłatnie.

Również GoogleMaps ma swój podstawowy typ geolokalizacji jako „LatLng”, a Openlayers używają „LonLat”, co doprowadza mnie do szału, ponieważ ciągle mylę kolejność parametrów w wywołaniach funkcji.

Hoffmann
źródło
3

Oprócz tych, którzy wspomnieli o problemach z szybkością, chciałbym dodać, że renderer VML w IE może działać bardzo wolno dzięki warstwie wektorowej z wieloma funkcjami. Jeden użytkownik wspomniał o 200. Dokładnie to mogę dodać, zanim IE zwolni znacznie, aż do punktu zamrożenia. Jeśli dodasz funkcje, które są etykietami tekstowymi, możesz dodać o połowę mniej, prawdopodobnie dlatego, że wewnętrznie każda etykieta tekstowa składa się z dwóch elementów VML.

W Google możesz stworzyć własny GOverlay, którego zawartość to „div”, który jest renderowany bez problemów w IE.

Jānis Elmeris
źródło
3

Kilka rzeczy, które chciałbym dodać, z dwóch perspektyw: wykorzystanie klienta i ochrona danych.

Wykorzystanie klienta:

  • Czego obecnie używają Twoi klienci? Zmiana może być trudna.
  • Ile funkcji naprawdę potrzebujesz? OpenLayers ma sporo, ale jeśli go nie używasz ...

Obsługa danych:

  • Czy udostępniasz dane KML ? Jeśli tak, zarówno OpenLayers, jak i Google Maps będą z nim współpracować i prawdopodobnie będziesz musiał zdecydować na podstawie użycia klienta.

  • Czy obsługujesz inne rodzaje usług danych? (WMS, WFS, CSV itp.) Jeśli tak, to OpenLayers najprawdopodobniej ma przykłady i wsparcie dla tego.

Ruz
źródło
2

OL ma dużą rzeszę fanów i jest prawdopodobnie najczęściej używaną geodezją Opensource używaną na świecie.

Nie widzisz tak wielu wątków i postów na ten temat w tym cybermiejscu, ponieważ ludzie tutaj mają tendencję do omawiania innych rodzajów technologii, takich jak JSF i Mobile (non geo), a nie dlatego, że OL jest jak rozpórki.

Jednak Ol ma pewne wady, głównie to, że jest tak niski, że trzeba pisać dużo kodu, aby wykonywać typowe operacje. To też może działać dobrze, ponieważ jako programista a: masz cały kod z góry i b: dostosowywanie i dostosowywanie jest bardzo łatwe.

Istnieją bardziej wyrafinowane darmowe narzędzia geotools, ale jedyne, co robią, to wywołanie openlayerów i abstrakcja niektórych z bardziej nudnych obowiązków.

Więc używaj go pewnie. Jest dojrzały, mocny i nie umrze w najbliższej przyszłości. Jeśli jednak chcesz przyspieszyć proces tworzenia, powinieneś wypróbować inne narzędzia, które są na wierzchu.

miłego dnia

demonz demonz
źródło
Cześć, czy mógłbyś rozwinąć bardziej wyrafinowane darmowe narzędzia geograficzne, które znajdują się na szczycie OpenLayers? GeoExt został wspomniany powyżej, ale nie widziałem jeszcze żadnych innych określonych. Dzięki.
Brian B
@BrianB cześć brian, właśnie myślałem o geoext, kiedy pisałem „bardziej wyrafinowane darmowe geotools”. Ta biblioteka łączy EXTJS z openlayerami.
demonz demonz