So sánh các thư viện ánh xạ JavaScript khác nhau?


138

Tôi đang làm việc trên một hệ thống bản đồ dựa trên web và tôi đang cố gắng tìm ra thư viện nào sẽ sử dụng.

Đây là các liên kết để so sánh các thư viện có sẵn:

nhập mô tả hình ảnh ở đây

Danh sách các thư viện cho đến nay:

  • bản đồ Google
  • Trái đất ảo của Microsoft
  • MapQuest
  • Tờ rơi - "Nhận xét nhỏ hơn, nhanh hơn, mới hơn và đơn giản hơn cũng có thể được đọc vì ít tính năng hơn và ít được thử nghiệm hơn." -Geographika (xem bên dưới)
  • API ArcGIS cho JavaScript - Hoạt động tốt nhất với ArcGIS Server (xem bên dưới). Tiện ích mở rộng bản đồ GoogleBing cũng có sẵn, cho phép bạn sử dụng API ESRI với bản đồ Google / Bing (mặc dù điều này đúng với hầu hết các thư viện).
  • API của Yahoo Map
  • Qua Michelin
  • OpenLayers - Tài liệu mở rộng và số lượng chức năng tốt cộng với khả năng sử dụng các nhà cung cấp bản đồ khác nhau.
  • Mapquery - MapQuery đã được phát hành và hiện có một số tài liệu hữu ích Nó có mục tiêu rất đáng giá là kết hợp OpenLayers và jQuery. Nếu bạn đặc biệt quan tâm đến ý tưởng về OpenLayers + jQuery hoặc nếu bạn muốn đóng góp cho Thư viện ánh xạ JavaScript thì hãy tham gia và đóng góp công sức của bạn. Tuy nhiên, nếu bạn chỉ muốn là người dùng cuối, hoặc chưa quen với lĩnh vực này thì có thể nó không dành cho bạn.
  • Mapstraction - Làm cho mọi thứ rất đơn giản, đặc biệt là làm việc với nhiều nhà cung cấp bản đồ cơ sở. Tuy nhiên, đây vẫn là một công việc đang tiến triển và chức năng còn thiếu ở những nơi như tài liệu hướng dẫn. (Vd từ tháng một.
  • deCarta - Có javascript trên thiết bị di động và máy tính để bàn - đầu tiên là tuân thủ HTML5 / CSS3 và thứ hai có nhiều khả năng tương thích trình duyệt hơn. Mã nguồn được cung cấp. Điều khoản nhà phát triển thân thiện nhất cho API thương mại. Bạn được phép tạo thương hiệu cho bản đồ và có một số kiểu bản đồ khác nhau. Bạn có thể chọn dữ liệu NAVTEQ hoặc OSM. Họ cũng có một số API di động. - được chỉnh sửa bởi TheSteve0 - một nhân viên của deCarta
  • Đám mây
  • Polymaps - Làm cho nó rất dễ dàng để tổng hợp dữ liệu raster và vector từ nhiều nguồn khác nhau. Cho phép bạn dễ dàng thêm màu, nhóm và tương tác của riêng bạn. Chạy nhanh, quản lý tải nền gạch tốt và chỉ 30k Javascript. Một nhược điểm tiềm năng: nó sử dụng SVG, có nghĩa là nó không và sẽ không hoạt động trong MSIE 7 hoặc 8. Nó hoạt động tốt trong mọi trình duyệt khác và sẽ hoạt động trong IE9
  • Jump - jump là một thư viện bản đồ trọng lượng nhẹ, tự nó hoạt động, nó không phải là một trình bao bọc cho OpenLayers hoặc GoogleMaps API. Hiện tại nó đang được phát triển, nhưng rất nhiều tính năng cần thiết hoạt động tốt.
  • ModestMaps - Một thư viện ánh xạ JS nhỏ hơn, nhanh hơn, mới hơn từ các nhà sản xuất Mapbox và TileMill.
  • Bản đồ

OpenLayers là ứng dụng tôi hiện đang sử dụng. Bạn có thể làm rất nhiều với nó và nó hỗ trợ hầu hết các loại dữ liệu. Tuy nhiên nó không phải là tốt nhất cho mọi thứ. Ví dụ, Leaflet có vẻ mượt mà hơn theo nhiều cách, với hình ảnh mờ dần và các điều chỉnh hình ảnh khác. Nếu bạn vào jQuery, bạn có thể muốn xem MapQuery giống như sự kết hợp giữa jQuery và OpenLayers.

Câu trả lời:


93

Câu hỏi này đã được chuyển đổi sang Community Wiki và wiki bị khóa vì đây là một ví dụ về câu hỏi tìm kiếm danh sách các câu trả lời và dường như đủ phổ biến để bảo vệ nó khỏi bị đóng cửa. Nó nên được coi là một trường hợp đặc biệt và không nên được xem là loại câu hỏi được khuyến khích trên trang này hoặc bất kỳ trang web Stack Exchange nào, nhưng nếu bạn muốn đóng góp thêm nội dung cho nó thì hãy thoải mái làm điều đó bằng cách chỉnh sửa câu trả lời này .


Đối với các nhà phát triển nền không phải là GIS tạo các ứng dụng ánh xạ chức năng đơn - có lẽ tôi muốn giới thiệu Leaflet (hiện được MapBox hỗ trợ). Dễ sử dụng và nhỏ. Nhiều chức năng hơn phụ thuộc vào các plugin có chất lượng và hỗ trợ khác nhau.

Ứng dụng loại trực tuyến của GIS - sử dụng OpenLayers3 - có bộ nguồn dữ liệu, điều khiển đầy đủ, vv trong một thư viện. Nó cũng có thể được sử dụng cho các ứng dụng ánh xạ đơn giản, vì vậy nếu bạn có kết hợp thì tôi sẽ sử dụng nó cho mọi thứ.

Google vẫn có kết hợp thư viện / dữ liệu (ví dụ StreetView không có sẵn ở bất kỳ nơi nào khác).

Esri có các trình xây dựng ứng dụng web GUI và như đã lưu ý dưới đây, tại sao lại làm phức tạp mọi thứ nếu bạn đã sử dụng ngăn xếp của chúng.

API thương mại (Google, Bing, Yahoo)

Việc sử dụng bất kỳ API thương mại nào sẽ khiến bạn phải chịu bất kỳ thay đổi nào mà nhà cung cấp thực hiện đối với API hoặc Điều khoản dịch vụ. Điều gì xảy ra chẳng hạn nếu đột nhiên cổng thông tin chính quyền địa phương sử dụng Google Maps của bạn đột nhiên có quảng cáo xuất hiện trên tất cả ? Bạn muốn sử dụng lại mã Google Maps JavaScript của mình cho trang web Intranet? Bạn sẽ thấy mình phải trả 10.000 đô la phí cấp phép.

Microsoft thường có các điều khoản được xác định và cố định hơn cho các dịch vụ của họ (nếu trả tiền) vì vậy có thể có ít rủi ro hơn ở đây.

Phản ứng dữ dội gần đây chống lại Twitter là một ví dụ điển hình về việc các nhà phát triển có API thay đổi bên dưới họ. Nếu bạn không trả tiền cho một dịch vụ thì bạn (hoặc hệ thống của bạn) là người được bán.

Google bắt đầu tính phí cho việc sử dụng bản đồ của họ từ tháng 10 năm 2011.

Esri

Như những người khác đã đề cập nếu bạn đang sử dụng ngăn xếp Esri thì API ArcGIS cho JavaScript chắc chắn sẽ hoạt động tốt trên đầu trang. Đến từ nền tảng GIS, Esri có lẽ đã nghĩ nhiều hơn về các nhiệm vụ và tính năng truyền thống của GIS so với người khổng lồ web "tân địa lý" (mặc dù đây chỉ là một ý kiến ​​/ cảm giác).

OpenLayers đã tích hợp hỗ trợ cho các lớp ArcGIS REST và nếu bạn đang muốn sử dụng lại mã của mình cho các trang web không dựa trên ESRI thì một API mở sẽ phục vụ bạn tốt nhất.

Sử dụng OpenLayers ...

Tôi thực sự không thể nghĩ tại sao các nhà phát triển sẽ sử dụng một API khác ngoài OpenLayers. Dự án mã nguồn mở dẫn đến các dự án mã nguồn mở liên quan do đó vô số các thành phần tái sử dụng trên mạng như thư viện GeoExt , MapQuery , và GeoPrisma .

Tôi sẽ chỉ nói thêm rằng vì một dự án là Nguồn mở không tự động làm cho nó tốt hơn tương đương thương mại - nhưng API OpenLayers phù hợp với cạnh tranh thương mại trong trường hợp này và khả năng xem cách nguồn hoạt động, kiểm tra đơn vị, xây dựng tập lệnh, vv có nghĩa là bạn có thể dễ dàng xây dựng các tính năng mới trên đầu trang của nó.

Đã có một số chỉ trích gần đây về OpenLayers, chủ yếu liên quan đến sự phức tạp, kiểu dáng và kích thước. Đã có những tranh luận trái chiều được đưa ra ở đâyở đây bởi Christopher Schmidt, một trong những nhà phát triển chính của OpenLayers.

Điều đáng chú ý là nếu bạn cần một API ánh xạ nguồn mở đơn giản thì hãy xem Tờ rơi của Cloudcraft .

Nhận xét nhỏ hơn, nhanh hơn, mới hơn và đơn giản hơn cũng có thể được đọc vì ít tính năng hơn và ít được thử nghiệm hơn.

Quét tài liệu API cho Tờ rơiOpenLayers . Cái sau bao gồm các mục như các lớp WFS, các công cụ chỉnh sửa và hỗ trợ SLD. Nó cũng đã được thử nghiệm trong nhiều môi trường khác nhau và hoạt động trong IE6 (cho phép người dùng chính quyền và chính quyền địa phương).

Để hiển thị đơn giản hơn các dữ liệu không gian Tờ rơi có vẻ lý tưởng và dễ dàng hơn để bắt đầu. Tuy nhiên, tôi sẽ gắn bó với OpenLayers cho các ứng dụng GIS giàu tính năng hơn.

Hãy cẩn thận

Một nhược điểm có thể xảy ra thường là những cải tiến mới được nhìn thấy đầu tiên trong các hệ thống của các nhà cung cấp thương mại - tuy nhiên những thứ này hầu như luôn luôn lọc qua OpenLayers kịp thời.

Cuối cùng tôi chắc chắn có một số trường hợp nhất định trong đó các API khác phù hợp hơn - trên phần cứng tùy chỉnh, để phù hợp với các tổ chức hệ thống CNTT khác hoặc nếu bạn đã biết API từ trong ra ngoài và có thể giúp hệ thống phát triển trong một nửa thời gian .

Tất cả các API bạn đề cập đều có khả năng tạo ra các hệ thống bản đồ trực tuyến tuyệt vời, nhưng lựa chọn của bạn cũng phải phù hợp với bạn hoặc nhu cầu phát triển trong tương lai của công ty bạn.


50

Có một trình phát mới trên mặt trận ánh xạ javascript - Tờ rơi . Được phát triển bởi CloudMade theo giấy phép BSD.

Trông thật hứa hẹn.

nhập mô tả hình ảnh ở đây

( Nguồn )


3
Wow đây có vẻ là một thư viện ấn tượng. Tôi ngạc nhiên khi tôi không biết điều này.
dkroy

2
Dưới đây là so sánh hành vi điều hướng của tờ rơi và openlayers.
dkroy

2
Sơ đồ đẹp. Tờ rơi thực sự rất đẹp.
Mr_Chimp

7
Sau khi thử sử dụng Leaflet cho một số thứ phức tạp hơn, tôi phải thừa nhận rằng nó khá hạn chế so với OpenLayers hoặc GeoExt. Nó rất dễ cài đặt và trông rất đẹp nhưng có giới hạn cho những gì bạn có thể làm về mặt tương tác. Một lần nữa, mỗi nơi đều có chỗ của nó.
Mr_Chimp

3
Bản sao cập nhật của biểu đồ (từ tháng 1 năm 2012) có sẵn tại: geotux.tuxf Family.org/index.php/en/geo-bloss/item/ Lỗi
Will.

35

Tôi đã có một dự án api Google Maps / arcgis và khoảng một năm trước, tôi đã quyết định dùng thử OpenLayers. Tôi càng làm việc với nó, tôi càng thích nó vì vậy tôi quyết định di chuyển. Tôi cắt giảm 30 - 100 dòng mã google thành 1 - 3 dòng nhiều lần trong suốt mã của tôi. Đơn giản là vì OpenLayers có chức năng cho những gì tôi muốn làm và phải tự mã hóa nó cho google maps.


2
Tất cả đều tốt. Cảm ơn vì đầu vào của bạn! Tôi không chắc có câu trả lời đúng cho việc này vì vậy ý ​​kiến ​​và giai thoại rất hữu ích.
Mr_Chimp

2
+1 Tôi luôn chọn OpenLayers trên Google Maps nếu nhiệm vụ là hiển thị nhiều hơn một số điểm đánh dấu.
underdark

20

CartoDB là một công cụ để phân tích, phát hiện và chia sẻ dữ liệu không gian địa lý của bạn trong PostGIS. Đây là mộtnền tảng cơ sở dữ liệu không gian địa lý nguồn mở cung cấp lớp API SQL. Nó cho phép các nhà phát triển thực hiện các truy vấn tới cơ sở dữ liệu đám mây PostrgreSQL + OpenGIS được tối ưu hóa cho các mục đích không gian địa lý.

nhập mô tả hình ảnh ở đây



12

Tôi so sánh (với các điểm nổi bật & ghi chú) mã cần thiết để thực hiện một tác vụ đơn giản, cụ thể và phổ biến trong:

  • MapQuest
  • bản đồ Google
  • bing
  • Ovi
  • Esri
  • OpenLayers
  • Địa lý jQuery

tại đây: http://trippingthebits.com/geopres/

Bài viết dành cho một bài thuyết trình tôi đã đưa ra trên jQuery Geo, điều đáng buồn bị thiếu trong danh sách của bạn.


Đó là một bài viết tốt. Tôi thích mã màu của bạn! Ý tưởng rất tốt
Mr_Chimp

jQuery Geo FTW!
Sameer

1
Cảm ơn bạn @SameerAlibhai! Hãy theo dõi, chúng tôi sẽ sớm xuất bản Ứng viên phát hành 1.
ryanttb

11

Tôi muốn hình dung một quả địa cầu trong trình duyệt Caesium là một quả cầu đẹp. (Hoạt động không có plugin nhưng trình duyệt cần hỗ trợ WebGL)

Có thể hiển thị chế độ xem 3D, 2D và 2.5D

Caesium hỗ trợ 3D, 2D và 2.5D

Hỗ trợ cho các định dạng raster / vector khác nhau (KML, v.v.)

Hỗ trợ dữ liệu raster / vector differnet

Kiểm soát miễn phí các chuyến bay Camera và Camera

Điều khiển máy ảnh

... Và mọi thứ trong trình duyệt (hiện đại).


2
wow, đây thực sự là một dự án rất tốt đẹp! :)
Kstallian

1
OK, nhưng sau đó bạn có thể giải thích cho chúng tôi lý do tại sao Caesium không hỗ trợ (và nhiều người khác) WFS (Dịch vụ Tính năng Web) tiêu chuẩn không? Dường như với tôi đó là một người xem rất mạnh mẽ, nhưng hoàn toàn không phải là một hệ thống GIS.
Doanh nhân Web-GIS

11

Tôi không đủ khả năng để so sánh đầy đủ, nhưng tôi đã thực hiện ba dự án nhỏ khác nhau với Polymaps và có thể nhận xét về điều đó. Sức mạnh chính của nó là làm cho nó rất dễ dàng để tổng hợp dữ liệu raster và vector từ nhiều nguồn khác nhau. Nó có thể đáp ứng tất cả các yêu cầu của bạn, đặc biệt là cho phép bạn dễ dàng thêm màu, nhóm và tương tác của riêng bạn. Polymaps cũng khá hiệu quả: nó chạy nhanh, nó quản lý tải nền gạch tốt và nó chỉ có 30k Javascript.

Hạn chế chính với Polymaps là nó sử dụng SVG, có nghĩa là nó không và sẽ không hoạt động trong MSIE 7 hoặc 8. Nó hoạt động tốt trong mọi trình duyệt khác và sẽ hoạt động trong IE9, nhưng tôi không chắc nó đã được kiểm tra tốt như thế nào. SVG cũng là một thế mạnh: nó dễ lập trình và kết xuất trông rất tuyệt, đặc biệt là tính năng vectơ và raster theo tỷ lệ nhỏ.

Một lưu ý về các thư viện: nếu bạn muốn sử dụng các gạch raster của Google làm sơ đồ cơ sở, bạn phải sử dụng các thư viện Javascript của họ. OpenStreetMap, vv có nhiều giấy phép cho phép hơn cho phép bạn lựa chọn thư viện.

(Câu trả lời này là từ năm 2011 và rất nhiều thứ đã thay đổi. Polymaps không còn được duy trì. Tại thời điểm này, Tờ rơi là thư viện mã nguồn mở ưa thích.)


4
Chỉ cần một bản cập nhật về câu trả lời của tôi; Polymaps đã không có bất kỳ sự phát triển trong một vài năm. Đây vẫn là một thư viện thú vị với một số khả năng độc đáo, nhưng tôi sẽ không sử dụng nó cho một dự án mới. Những ngày này tôi đang sử dụng Tờ rơi.
Nelson

9

Tôi là một sinh viên tốt nghiệp bản đồ và là người mới biết về lập bản đồ web, nhưng tôi đã làm việc trong một dự án để so sánh các công nghệ khác nhau ngoài đó và đưa ra một hướng dẫn "cách" cơ bản để bắt đầu với lập bản đồ web. Phân tích của tôi không có nghĩa là toàn diện, và tôi đã cố gắng hiểu ý nghĩa của từng thư viện thông qua việc chơi xung quanh chúng và thông qua các bài đăng như thế này từ các lập trình viên dày dạn hơn. Tôi rất vui mừng nhận được bất kỳ thông tin phản hồi.


(+1) Cảm ơn bạn đã đóng góp - chào mừng đến với cộng đồng của chúng tôi!
whuber


7

Mapfluence từ Urban Mapping cũng nằm trong hỗn hợp. Nền tảng ánh xạ được lưu trữ cung cấp dịch vụ địa lý dựa trên web, có thể truy cập RESTly và với API (tài liệu / hướng dẫn được cải tiến trên đường). Hoặc CV nếu bạn muốn nó. Chúng tôi kết xuất các ô cơ sở của riêng mình , có một danh mục lớn dữ liệu theo yêu cầu và dữ liệu hỗ trợ và các truy vấn trực quan khác.

Hãy xem hội thảo trực tuyến O'Reilly vào Thứ Tư về dịch vụ địa lý + dữ liệu lớn để biết tổng quan về những gì trong địa lý.


7

Bạn cũng có thể có một cái nhìn tại Geomajas . Đây là một khung công tác GIS được viết bằng Java (bao gồm cả máy khách Java sử dụng GWT). Tuy nhiên, hiện đang có một trình cắm bổ sung để cung cấp API phía máy khách đầy đủ trong JavaScript. Không khá ổn định nhưng đáng xem. Ưu điểm của việc sử dụng Geomajas là sự tích hợp mạnh mẽ giữa back-end và client, có một vài lợi thế bao gồm khả năng dễ dàng giảm tải công việc cho máy chủ và được thêm vào đặc biệt là để bảo mật.


6

Tôi muốn giới thiệu ammap: http://www.amm.Com Họ đã từng có bản đồ flash, nhưng gần đây đã giới thiệu bản đồ JavaScript với rất nhiều tính năng tuyệt vời.


4

Nếu bạn đang tìm kiếm một thư viện trực quan hóa dữ liệu, hãy xem Highmaps , từ những người đứng sau Highcharts (bao gồm cả tôi - hiện đang làm nhân viên phát triển phần mềm). Nó miễn phí cho sử dụng phi thương mại, hoạt động tuyệt vời với các trình duyệt di động (hỗ trợ cảm ứng hoàn toàn) và IE cũ cho đến IE6. Hỗ trợ các tính năng động tiên tiến như mũi khoan và chú giải công cụ phong phú.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây



1
Đủ công bằng, chỉnh sửa.
Oystein

3

Một phương pháp thú vị có thể được tìm thấy để so sánh các tính năng bạn muốn từ các thư viện ánh xạ JavaScript (không giới hạn trong trường hợp sử dụng này) Nó đã được trình bày tại sự kiện NACIS 2012 bởi Richard Donohue & al. . Phần thú vị là về cách họ thực hiện phân loại tùy thuộc vào mục đích và các tính năng cần thiết.



2

Có thể bạn cũng có thể xem xét Heron . Nó được xây dựng trên các lớp Ext và mở cùng nhau, chúng có nhiều mẫu mà bạn có thể tùy chỉnh.

Một ứng cử viên tiềm năng khác là GeoJS .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.