Porównywanie różnych bibliotek mapowania JavaScript?

138

Pracuję nad internetowym systemem mapowania i próbuję wymyślić, której biblioteki użyć.

Oto linki do porównań dostępnych bibliotek:

wprowadź opis zdjęcia tutaj

Lista bibliotek do tej pory:

  • mapy Google
  • Microsoft Virtual Earth
  • MapQuest
  • Ulotka - „Komentarz mniejszy, szybszy, nowszy i prostszy można również odczytać jako mniej funkcji i mniej przetestowany”. -Geographika (patrz poniżej)
  • ArcGIS API dla JavaScript - działa najlepiej z ArcGIS Server (patrz poniżej). Dostępne są również Mapy Google i rozszerzenia map Bing , pozwalające korzystać z interfejsu API ESRI z mapami Google / Bing (choć dotyczy to większości bibliotek).
  • Interfejsy API Yahoo Map
  • Przez Michelin
  • OpenLayers - obszerna dokumentacja i duża funkcjonalność plus możliwość korzystania z różnych dostawców map.
  • Mapquery - MapQuery zostało wydane i ma teraz pewną przydatną dokumentację. Jego bardzo wartościowym celem jest połączenie OpenLayers i jQuery. Jeśli szczególnie lubisz pomysł OpenLayers + jQuery, lub jeśli chcesz wnieść wkład w bibliotekę mapowania JavaScript, zaangażuj się i dodaj swoje wysiłki. Jeśli jednak chcesz być użytkownikiem końcowym lub dopiero zaczynasz przygodę z tym obszarem, może nie być dla Ciebie.
  • Mapstraction - Sprawia, że ​​wszystko jest bardzo proste, szczególnie praca z wieloma dostawcami map bazowych . Nadal jednak jest w toku, a brakuje miejsc, podobnie jak dokumentacja. (Np. „Obiekt GeoJSON o typie„ FeatureCollection ”jest obiektem kolekcji obiektów.” Niezbyt pouczający.) Wygląda na to, że jest nadal aktywnie rozwijany, ale od 4 kwietnia 2011 r. Na Github nie było zatwierdzenia od stycznia.
  • deCarta - Ma javascript na urządzenia mobilne i stacjonarne - pierwszy jest zgodny z HTML5 / CSS3, a drugi ma większą kompatybilność z przeglądarkami. Podany kod źródłowy. Najbardziej przyjazne warunki dla programistów dotyczące komercyjnego interfejsu API. Możesz oznakować mapę i istnieje kilka różnych stylów mapy. Możesz wybrać dane NAVTEQ lub OSM. Mają także kilka mobilnych interfejsów API. - pod redakcją TheSteve0 - pracownika deCarta
  • Chmura
  • Polimapy - Ułatwia kompilację danych rastrowych i wektorowych z wielu różnych źródeł. Umożliwia łatwe dodawanie własnych kolorów, grupowania i interakcji. Działa szybko, dobrze zarządza ładowaniem kafelków w tle i ma tylko 30k Javascript. Jedna potencjalna wada: używa SVG, co oznacza, że ​​nie działa i nie będzie działać w MSIE 7 lub 8. Działa świetnie w każdej innej przeglądarce i powinien działać w IE9
  • Jump - jump to lekka biblioteka map, która działa samodzielnie, co oznacza, że ​​nie jest opakowaniem dla OpenLayers ani GoogleMaps API. Obecnie jest w fazie rozwoju, ale wiele istotnych funkcji działa dobrze.
  • ModestMaps - Kolejna mniejsza, szybsza, nowsza biblioteka mapowania JS od twórców Mapbox i TileMill.
  • Mapiator

Obecnie korzystam z OpenLayers. Możesz z nim wiele zrobić i obsługuje większość typów danych. Jednak nie wszystko jest najlepsze. Na przykład Ulotka wydaje się płynniejsza na wiele sposobów, z zanikaniem obrazu i innymi poprawkami wizualnymi. Jeśli interesujesz się jQuery, możesz sprawdzić MapQuery, który jest połączeniem jQuery i OpenLayers.

Mr_Chimp
źródło

Odpowiedzi:

93

To pytanie zostało przekonwertowane na Wiki Wiki i wiki zablokowane, ponieważ jest to przykład pytania, które szuka listy odpowiedzi i wydaje się być wystarczająco popularne, aby uchronić je przed zamknięciem. Powinno to być traktowane jako szczególny przypadek i nie powinno być postrzegane jako rodzaj pytania, które jest zachęcane w tej lub dowolnej witrynie Stack Exchange, ale jeśli chcesz wnieść do niego więcej treści, możesz to zrobić, edytując tę ​​odpowiedź .


Dla twórców tła innych niż GIS tworzących aplikacje do mapowania z jedną funkcją - prawdopodobnie poleciłbym Leaflet (teraz obsługiwany przez MapBox). Łatwy w użyciu i mały. Większa funkcjonalność zależy od wtyczek o różnej jakości i wsparciu.

Aplikacja typu GIS online - użyj OpenLayers3 - ma pełny zestaw źródeł danych, kontroli itp. W jednej bibliotece. Może być również używany do prostych aplikacji mapujących, więc jeśli masz miks, użyłbym tego do wszystkiego.

Google nadal ma kombinację biblioteka / dane (np. StreetView nie jest dostępny nigdzie indziej).

Esri ma wbudowane GUI do tworzenia aplikacji internetowych i jak wspomniano poniżej, po co komplikować rzeczy, jeśli już korzystasz z ich stosu.

Komercyjne interfejsy API (Google, Bing, Yahoo)

Korzystanie z dowolnego komercyjnego interfejsu API pozostawia na łasce wszelkich zmian, które dostawca wprowadza w interfejsie API lub Warunkach świadczenia usług. Co dzieje się na przykład, jeśli nagle w Twoim lokalnym portalu samorządowym korzystającym z Map Google nagle pojawiają się reklamy ? Chcesz ponownie użyć kodu Google Maps JavaScript w witrynie Intranet? Musisz uiścić opłatę licencyjną w wysokości 10 000 USD.

Microsoft często ma bardziej zdefiniowane i ustalone warunki świadczenia usług (w przypadku płatności), więc ryzyko może być mniejsze.

Niedawny sprzeciw wobec Twittera jest dobrym przykładem dla deweloperów posiadających interfejs API, który zmienił się pod nimi. Jeśli nie płacisz za usługę, to Ty (lub Twój system) sprzedajesz.

Google zaczął pobierać opłaty za korzystanie z ich map od października 2011 r.

Esri

Jak wspomnieli inni, jeśli używasz stosu Esri, interfejs ArcGIS API dla JavaScript bez wątpienia będzie działał dobrze. Pochodząc z GIS, Esri prawdopodobnie bardziej myślała o tradycyjnych zadaniach i funkcjach GIS niż o gigantach sieciowych z „neogeografii” (choć to tylko opinia / odczucie).

OpenLayers ma wbudowaną obsługę warstw ArcGIS REST , a jeśli chcesz ponownie użyć swojego kodu na stronach internetowych nie opartych na ESRI, to znowu otwarty interfejs API najlepiej ci służy.

Użyj OpenLayers ...

Naprawdę nie wiem, dlaczego programiści mieliby używać API innego niż OpenLayers. Projekty open source prowadzić do powiązanych projektów Open Source, więc istnieje bogactwo komponentów wielokrotnego użytku tam, takich jak biblioteki GeoExt , MapQuery i GeoPrisma .

Dodam tylko, że tylko dlatego, że projekt jest Open Source, nie czyni go automatycznie lepszym niż komercyjne odpowiedniki - ale API OpenLayers odpowiada w tym przypadku konkurencji komercyjnej i możliwości zobaczenia, jak działa źródło, testy jednostkowe, skrypty budowania itp. oznaczają, że możesz łatwo tworzyć na nim nowe funkcje.

Poczyniono pewne niedawne krytyka z OpenLayers, związane głównie złożoności, stylizacji i wielkości. Były tu kontrargumenty tutaj i tutaj przez Christophera Schmidta, jednego z głównych programistów OpenLayers.

Warto zauważyć, że jeśli potrzebujesz prostego API Open Source mapowania następnie przyjrzeć CloudMade jest dla pacjenta .

Komentarz mniejszy, szybszy, nowszy i prostszy można również odczytać jako mniej funkcji i mniej przetestowany.

Zeskanuj dokumentację API w poszukiwaniu Ulotki i OpenLayers . Ten ostatni obejmuje takie elementy, jak warstwy WFS, narzędzia do edycji i obsługa SLD. Został również przetestowany w wielu różnych środowiskach i działa w IE6 (umożliwiając użytkownikom rządowym i lokalnym).

Dla łatwiejszego wyświetlania danych przestrzennych Ulotka wygląda idealnie i jest łatwiejsza do rozpoczęcia. Będę jednak trzymać się OpenLayers dla bardziej bogatych w funkcje aplikacji GIS.

Ostrzeżenia

Jedną z możliwych wad jest to, że najpierw pojawiają się nowe innowacje w systemach dostawców komercyjnych - jednak prawie zawsze są one filtrowane w czasie do OpenLayers.

Wreszcie jestem pewien, że istnieją pewne scenariusze, w których inne interfejsy API są bardziej odpowiednie - na niestandardowym sprzęcie, aby dopasować się do organizacji innych systemów informatycznych lub jeśli znasz już interfejs API na wylot i możesz opracować system w połowie czasu .

Wszystkie wspomniane interfejsy API umożliwiają tworzenie doskonałych systemów mapowania online, ale twój wybór powinien również pasować do twoich przyszłych potrzeb rozwojowych.

geografii
źródło
50

Na froncie mapowania javascript jest nowy gracz - Leaflet . Opracowany przez CloudMade na licencji BSD.

Wygląda naprawdę obiecująco.

wprowadź opis zdjęcia tutaj

( Źródło )

radek
źródło
3
Wow, to wydaje się imponująca biblioteka. Dziwi mnie, że nie byłam tego świadoma.
dkroy
2
Oto porównanie zachowania nawigacyjnego ulotki i openlayers.
dkroy
2
Niezły schemat blokowy. Ulotka jest naprawdę bardzo ładna.
Mr_Chimp
7
Po próbie użycia Ulotki do bardziej skomplikowanych rzeczy muszę przyznać, że jest dość ograniczona w porównaniu do OpenLayers lub GeoExt. Jest bardzo łatwy do skonfigurowania i wygląda bardzo ładnie, ale jest limit możliwości interakcji. Znowu jednak każdy ma swoje miejsce.
Mr_Chimp
3
Zaktualizowana kopia wykresu (od stycznia 2012 r.) Jest dostępna pod adresem: geotux.tuxfamily.org/index.php/en/geo-blogs/item/…
Will.
35

Miałem projekt Google Maps / arcgis api i około rok temu postanowiłem wypróbować OpenLayers. Im dłużej z tym pracowałem, tym bardziej mi się podobało, więc zdecydowałem się na migrację. W całym kodzie odcinam od 30 do 100 wierszy kodu Google do 1–3 wierszy. Po prostu dlatego, że OpenLayers miał funkcje do tego, co chciałem zrobić i musiałem ręcznie go zakodować dla map Google.

CaptDragon
źródło
2
Wszystko jest dobrze. Dzięki za wkład! Nie jestem pewien, czy jest na to odpowiednia odpowiedź, więc opinie i anegdoty są przydatne.
Mr_Chimp
2
+1 Zawsze wybrałem OpenLayers zamiast Google Maps, jeśli zadaniem jest wyświetlanie więcej niż ręki pełnej znaczników.
podmroku
20

CartoDB to narzędzie do analizy, wizualizacji i udostępniania danych geoprzestrzennych w PostGIS. Jest toplatforma geoprzestrzennych baz danychtypu open source , która zapewnia warstwę SQL API. Umożliwia programistom tworzenie zapytań do chmury PostrgreSQL + baza danych OpenGIS zoptymalizowana do celów geoprzestrzennych.

wprowadź opis zdjęcia tutaj

Arturo Herrero
źródło
12

Porównuję (z wyróżnieniami i notatkami) kod wymagany do wykonania prostego, konkretnego i wspólnego zadania w:

  • MapQuest
  • mapy Google
  • bing
  • Ovi
  • Esri
  • OpenLayers
  • jQuery Geo

tutaj: http://trippingthebits.com/geopres/

Wpis dotyczy prezentacji jQuery Geo, której niestety brakuje na twojej liście.

ryanttb
źródło
To dobry artykuł. Lubię twoje kodowanie kolorami! Bardzo dobry pomysł.
Mr_Chimp
jQuery Geo FTW!
Sameer
1
Dziękuję @SameerAlibhai! Bądź na bieżąco, wkrótce opublikujemy Release Candidate 1.
ryanttb
11

Chcę wizualizować kulę ziemską w przeglądarce. Cesium jest fajny. (Działa bez wtyczki, ale przeglądarka wymaga obsługi WebGL)

Może wyświetlać widok 3D, 2D i 2.5D

Cez obsługuje 3D, 2D i 2.5D

Obsługa różnych formatów rastrowych / wektorowych (KML itp.)

Obsługa różnych danych rastrowych / wektorowych

Bezpłatne sterowanie kamerą i lotami kamery

Steruj kamerą

... i wszystko w (nowoczesnych) przeglądarkach.

Beachwalker
źródło
2
wow, to naprawdę bardzo fajny projekt! :)
Krystian
1
OK, ale czy możesz nam wyjaśnić, dlaczego Cesium nie obsługuje (i wielu innych) standardowego WFS (Web Feature Service)? Wydaje mi się, że to bardzo potężna przeglądarka, ale wcale nie system GIS.
Przedsiębiorca Web-GIS
11

Nie jestem kompetentny do pełnego porównania, ale wykonałem trzy różne małe projekty z Polymaps i mogę to skomentować. Jego główną zaletą jest to, że bardzo łatwo łączy dane rastrowe i wektorowe z wielu różnych źródeł. Może spełniać wszystkie Twoje wymagania, w szczególności pozwalając łatwo dodawać własne kolory, grupowanie i interakcje. Polymaps jest również dość wydajny: działa szybko, dobrze zarządza ładowaniem kafelków tła i ma tylko 30k Javascript.

Podstawową wadą Polymaps jest to, że używa SVG, co oznacza, że ​​nie działa i nie będzie działać w MSIE 7 lub 8. Działa świetnie w każdej innej przeglądarce i powinien działać w IE9, ale nie jestem pewien, jak dobrze przetestowano. SVG jest również mocną stroną: jest łatwy do zaprogramowania, a renderowanie wygląda świetnie, zwłaszcza skalowanie funkcji wektora i rastra w małych przyrostach.

Jedno zastrzeżenie dotyczące bibliotek: jeśli chcesz użyć kafelków rastrowych Google jako mapy bazowej, musisz użyć ich bibliotek JavaScript. OpenStreetMap itp. Mają znacznie więcej zezwoleń, które pozwalają na wybór bibliotek.

(Ta odpowiedź pochodzi z 2011 roku i wiele się zmieniło. Polymapy nie są już utrzymywane. W tym momencie Ulotka jest preferowaną biblioteką typu open source).

Nelson
źródło
4
Tylko aktualizacja mojej odpowiedzi; Polymaps nie rozwijał się od kilku lat. To wciąż ciekawa biblioteka z wyjątkowymi zdolnościami, ale nie użyłbym jej do nowego projektu. Obecnie używam Ulotki.
Nelson
9

Jestem studentem kartografii i nowicjuszem do tworzenia map internetowych, ale pracowałem nad projektem, który porównał różne technologie i przygotowałem podstawowy przewodnik „jak to zrobić”, aby rozpocząć tworzenie map internetowych. Moja analiza nie jest bynajmniej wyczerpująca i starałem się poznać każdą bibliotekę, bawiąc się z nimi i poprzez posty takie jak te bardziej doświadczonych programistów. Byłbym zachwycony, gdyby uzyskać wszelkie opinie.

Northlandiguana
źródło
(+1) Dziękujemy za Twój wkład - witamy w naszej społeczności!
whuber
7

Mieszanka mapfluence z Urban Mapping jest również mieszana. Hostowana platforma mapująca, która oferuje geoserwice internetowe, dostępne RESTful oraz z API (ulepszone dokumenty / samouczki w drodze) API. Lub OL, jeśli chcesz. Renderujemy własne kafelki podstawowe , mamy ogromny katalog danych na żądanie oraz dane pomocnicze i inne zapytania wizualizacyjne.

Sprawdź seminarium internetowe O'Reilly w środę na temat usług geoserwisowych + dużych zbiorów danych, aby zapoznać się z tym, co jest w geo.

użytkownik2566
źródło
7

Możesz także rzucić okiem na Geomajas . Jest to framework GIS napisany w Javie (w tym klient Java korzystający z GWT). Jednak obecnie trwa wtyczka zapewniająca pełny interfejs API po stronie klienta w JavaScript. Nie do końca stabilny, ale warty obejrzenia. Zaletą korzystania z Geomajas jest silna integracja back-endu z klientem, która ma kilka zalet, w tym możliwość łatwego odciążenia pracy serwera i dodana specjalnie dla bezpieczeństwa.

Joachim Van der Auwera
źródło
6

Poleciłbym ammap: http://www.ammap.com Kiedyś mieli mapy flash, ale ostatnio wprowadzili mapy JavaScript z wieloma świetnymi funkcjami.

zero w
źródło
4

Jeśli szukasz biblioteki do wizualizacji danych, sprawdź Highmaps od osób odpowiedzialnych za Highcharts (ja również - obecnie zatrudniony jako programista). Jest bezpłatny do użytku niekomercyjnego, działa świetnie z przeglądarkami mobilnymi (pełna obsługa dotykowa) i starymi IE do IE6. Obsługuje zaawansowane funkcje dynamiczne, takie jak drążenie wszerz i bogate podpowiedzi.

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Oystein
źródło
1
W porządku, zredagowane.
Oystein
3

Można znaleźć interesującą metodologię do porównywania pożądanych funkcji z bibliotek mapowania JavaScript (nie ogranicza się do tego przypadku użycia). Został on zaprezentowany podczas wydarzenia NACIS 2012 przez Richarda Donohue i in. . Interesująca część dotyczy tego, w jaki sposób dokonują klasyfikacji w zależności od celu i wymaganych funkcji.

ThomasG77
źródło
3

Znalazłem ten post po wyszukiwaniu porównania obecnych zestawów narzędzi do mapowania stron internetowych. Myślę, że nadal jest to najbardziej istotne. Chciałem jednak udostępnić obszerną listę zestawów narzędzi OSGeo jako dodatkowy zasób.

Barbarossa
źródło
2

Być może możesz również rozważyć Heron . Jest zbudowany na Ext i otwarte warstwy razem mają wiele szablonów, które można dostosować.

Kolejnym potencjalnym kandydatem jest GeoJS .

Abhijit Gujar
źródło