OpenLayers vs Google Maps? [đóng cửa]


169

Tôi đã sử dụng Google Maps một vài lần, nhưng điều gì thắc mắc về OpenLayers .
Trước khi bắt đầu bất kỳ loại tiền mã hóa nào, đây là một vài câu hỏi xuất hiện trong đầu tôi,

  • Tại sao tôi nên sử dụng OpenLayers thay vì Google Maps?
    • Ngoại trừ giấy phép OSS của nó, dù sao đi nữa
    • Bạn có gặp phải tình huống nào trong đó bạn khuyên bạn không nên sử dụng OpenLayers không?
    • Tôi đã thực hiện tìm kiếm về "OpenLayers" trên Stack Overflow ; không có nhiều câu trả lời Có nghĩa là giải pháp này không được sử dụng nhiều? Nó có thể là một vấn đề cho khả năng tồn tại lâu dài của dự án?
  • Đối với những người bạn đã sử dụng OpenLayers: có những cạm bẫy / vấn đề phổ biến nào tôi có thể gặp phải không?
    • Còn việc sử dụng JavaScript Framework với nó thì sao? Tôi đã thấy nó sử dụng Prototype và tôi biết Prototype, nên sẽ ổn thôi. Nhưng những gì về việc sử dụng một cái gì đó khác như MooTools ? (Không tương thích với Prototype, BTW)
    • Có bất kỳ loại vấn đề liên quan đến tốc độ và hiệu suất? Tôi cần ứng dụng của mình phản hồi nhanh và không thể đợi hàng giờ để hiển thị bản đồ.
  • Có bản đồ có sẵn cho nhiều nơi, hoặc có rất nhiều những người mất tích?
    • Đó là, tôi đang ở Pháp và cần ứng dụng của mình hoạt động ít nhất cho các thành phố lớn ... Liệu điều đó có ổn không?
    • nếu không, có dễ dàng tìm thấy các lớp và trực quan hóa cho OpenLayers và tích hợp chúng không?
  • Có loại API nào để hiển thị đường không?
    • Chẳng hạn, để hiển thị những con đường chỉ có một chiều.
    • Nếu có, làm thế nào tôi có thể làm điều đó? Tôi có phải có một số loại tệp chứa thông tin đường đó không, và sau đó, tự hiển thị chúng trên bản đồ?
  • Bạn có biết hướng dẫn tốt nào về OpenLayers không?

Tôi chưa thử, đó chỉ là những câu hỏi màu xanh ...


Vì tò mò, tại sao "giấy phép OSS" lại là một điểm có lợi cho OpenLayers, ngoại trừ các lý do triết học? Giả sử giấy phép của Google cho phép bạn làm những gì bạn muốn miễn phí, tại sao nó lại ảnh hưởng đến quyết định của bạn?
Đánh dấu

7
@Mark Có vấn đề với giấy phép của Google. IANAL nhưng tôi hiểu rằng việc hiển thị dữ liệu trên Google Maps mang lại cho Google giấy phép không giới hạn để sao chép, sửa đổi, chuyển đổi và phân phối lại dữ liệu của bạn. Ví dụ: việc hiển thị bất kỳ dữ liệu nào có nguồn gốc từ các sản phẩm Khảo sát Bản đồ của Vương quốc Anh trên Google Maps là bất hợp pháp . Một ưu điểm khác của OSS là OpenLayers không chịu sự thay đổi của một tổ chức. Mặc dù trên thực tế, bạn có thể tin tưởng vào ý thức tốt của Google (và tiền và lý do kinh doanh) để hỗ trợ Google Maps trong tương lai
MarkJ

1
Các bài viết này có thể được sử dụng: EveryBlock - Giới thiệu về Bản đồ của chúng tôi: blog.everyblock.com/2008/feb/18/maps Một danh sách ngoài - Kiểm soát bản đồ của bạn (cũng từ EveryBlock) alistapart.com/articles/takecontrolofyourmaps
mg1075

8
Google Maps không hoàn toàn miễn phí ( google.com/support/forum/p/maps/ mẹo ). Giấy phép phụ thuộc vào cách bạn sử dụng nó.

Thật đáng để kiểm tra trang web GIS.SE cho tất cả mọi thứ về địa lý nếu bạn không thể tìm thấy câu trả lời trên SO.
Roy

Câu trả lời:


158

Đây là một câu hỏi thực sự tuyệt vời! Tôi là một nhà phát triển và người hâm mộ OpenLayers chuyên nghiệp, vì vậy tôi sẽ giải quyết các câu hỏi của bạn từ quan điểm đó.

Tại sao tôi nên sử dụng OpenLayers thay vì Google Maps?

  • Tính linh hoạt: Bạn không bị ràng buộc với bất kỳ nhà cung cấp hoặc công nghệ bản đồ cụ thể nào. Bạn có thể thay đổi bất cứ lúc nào và không phải viết lại toàn bộ mã của mình. Google, Yahoo, Microsoft, WMS, ArcGIS Server, MapServer, v.v ... đều được hỗ trợ ngoài hộp.
  • Vector Support: Hỗ trợ tốt hơn cho các điểm, polylines và đa giác.
  • Kiểm soát: Bạn có khả năng thêm bất kỳ tính năng mới nào mà bạn có thể cần. Cá nhân tôi đã viết ba plugin cho OpenLayers, hai trong số đó là hoặc sẽ là một phần của nguồn.
  • Gỡ lỗi: Dễ dàng gỡ lỗi hơn nhiều khi bạn có thể bước qua mã nguồn!

Tôi sẽ không lo lắng về khả năng tồn tại lâu dài của dự án. Nó là thư viện ánh xạ phía máy khách nguồn mở hàng đầu.

Có bất kỳ cạm bẫy / vấn đề phổ biến nào tôi có thể gặp phải?

  • Cạm bẫy lớn nhất mà tôi gặp phải là làm việc với trình chiếu Web Mercator (Google). Việc hiển thị dữ liệu vectơ trong một phép chiếu phổ biến và thực như WGS 84 vào bản đồ OpenLayers có thể sử dụng các bản đồ cơ sở của Google, Yahoo và Microsoft. Các ví dụ là bạn của bạn.

Tương thích khung JavaScript

  • Tôi sử dụng khung jQuery cho tất cả các công việc của mình và vấn đề duy nhất tôi gặp phải là tham chiếu jQuery sau OpenLayers. Ngoài ra, nó đã được thuận buồm xuôi gió.
  • Hiệu suất là tuyệt vời! Vấn đề duy nhất sẽ là với máy chủ bản đồ của bạn hoặc thêm quá nhiều vectơ vào bản đồ của bạn.

Có bản đồ có sẵn cho nhiều nơi?

  • Giống như tôi đã nói, bạn có thể sử dụng các bản đồ nền từ bất kỳ nguồn nào cho bất kỳ nơi nào trên thế giới.

Có loại API nào để hiển thị đường không?

  • Tôi sẽ xem CloudMade! Họ đã chuyển đổi dự án OpenStreetMap thành một dịch vụ ô bản đồ và cho phép tạo kiểu tùy chỉnh. Tôi tin rằng bạn có thể định kiểu đường một chiều (theo ví dụ của bạn) một cách cụ thể. Khu vực dành cho nhà phát triển CloudMade .

Bạn có biết hướng dẫn tốt nào về OpenLayers không?

  • Tôi không biết bất kỳ hướng dẫn nào, nhưng có rất nhiều ví dụ trong các ví dụ về OpenLayers

Tôi hy vọng điều này là hữu ích. Và tôi ở quanh Stack Overflow nếu bạn có bất kỳ câu hỏi nào!


5
Chào! Cảm ơn rất nhiều cho câu trả lời này, đó thực sự là hữu ích! Chắc chắn có một số điểm thú vị (hỗ trợ véc tơ tốt hơn có thể sẽ hữu ích cho dự án mà tôi đang nghĩ đến, và đó không phải là điều duy nhất bạn nói là thú vị!); Có thể đôi khi tôi sẽ hỏi một số câu hỏi khác: Tôi chưa bắt đầu làm việc với OL (câu hỏi này khá là "prelimar" ^^), nhưng sẽ đến lúc, tôi cho rằng, xem xét các câu trả lời tôi đã nhận được!
Pascal MARTIN

5
+1. Tôi đã cố gắng không gõ bình luận này, nhưng tôi không thể tự giúp mình. WGS84 không phải là một phép chiếu. (Rất đáng để thử tìm hiểu nội dung này - Tôi rất đau lòng khi chọn một chút về GIS và nó thực sự hữu ích với công cụ bản đồ.)
MarkJ

1
WGS84 là một hệ tọa độ địa lý (được sử dụng để hiển thị các điểm lat / long trên ellipsoid). Web mercator là khá nhiều chiếu web defacto.
Roy

35

Đây không nhất thiết là câu hỏi của OpenLayers HOẶC Google Maps. Sau tất cả, bạn có thể sử dụng Google Maps cho nền bản đồ của mình trong OpenLayers. Một số câu trả lời cụ thể hơn:

Tại sao OpenLayers?

  • OpenLayers có thể kết hợp các bản đồ từ các nguồn khác nhau (nền Google Maps, lớp phủ WMS, dữ liệu vectơ từ các tệp KML hoặc GML hoặc WFS, v.v.)
  • Bạn có thể tạo kiểu cho OpenLayers nhiều hơn nữa, Google Maps có thể
  • Nguồn mở, bạn có thể kiểm tra mã nguồn khi gỡ lỗi
  • Nếu bạn cần độ chính xác cao trong bản đồ, hãy sử dụng OpenLayers với phần phụ trợ máy chủ bản đồ phù hợp thay vì Google Maps để có được phép chiếu bản đồ tốt hơn (Google Maps giả định rằng trái đất là một hình cầu hoàn hảo)

Cạm bẫy

  • Nếu bạn muốn sử dụng dữ liệu vectơ (WFS) từ một máy chủ khác, bạn cần có proxy, do các giới hạn về kịch bản chéo trang

Hiệu suất

  • Phụ thuộc chủ yếu vào tốc độ của phụ trợ bản đồ
  • Hiển thị nhiều tính năng vectơ (giới hạn phụ thuộc vào trình duyệt, nhưng nói> 200 trên một chế độ xem) cần có thời gian, nhưng đó là vấn đề của trình duyệt hơn là vấn đề với OpenLayers

Khung JavaScript

  • Hãy xem GeoExt , ví dụ như ExtJS + OpenLayers

Bản đồ có sẵn

  • OpenLayers không đi kèm với phụ trợ bản đồ. Bạn có thể sử dụng Google Maps, Yahoo Maps, MS Virtual Earth, v.v hoặc bất kỳ dịch vụ WMS và WFS nào mà bạn có quyền truy cập vào

Câu trả lời tốt đẹp; cảm ơn vì tất cả những thông tin này Tôi chưa biết chi tiết, nhưng tôi có thể phải sử dụng một số dữ liệu từ máy chủ của mình, vì vậy mọi thứ đều ổn, đặc biệt là với khả năng tích hợp một số phụ trợ (Nếu tôi hiểu chính xác ^^ Tôi sẽ có cơ hội kiểm tra rằng trong một vài ngày, tôi hy vọng ;-))
Pascal MARTIN

1
@Pascal, tôi rất vui vì câu trả lời là hữu ích. Tôi có thể thêm rằng cộng đồng OpenLayers rất tích cực và danh sách gửi thư khá hữu ích.
Nils Weinander

Nếu có bất cứ điều gì bạn muốn làm mà không được đề cập trong trang ví dụ dev, có lẽ bạn không thể làm điều đó trên google maps. ví dụ: ngay cả kịch bản chéo trang cũng không phải được bao phủ bởi proxy: openlayers.org/dev/examples/cross-origin.html
Glenn Plas

23

Tôi chưa thấy sự hiện diện của người dùng OpenLayers trên SO nhưng họ ở ngoài đó. Các OpenLayers danh sách gửi thư là khá tích cực (Tôi đang trên UsersDev và xem bất cứ nơi nào từ 50-100 email một ngày thảo luận về những điều khác nhau. Bạn có thể tìm kiếm các danh sách từ các liên kết này quá.).

Tôi không thể trả lời tất cả các câu hỏi của bạn nhưng một điều tôi sẽ đưa ra là OpenLayers và google maps không loại trừ lẫn nhau. OpenLayers là một thư viện javascript và bạn có thể sử dụng nó để tương tác với google maps. Kiểm tra ví dụ này: OpenLayers bằng google maps . Và đây là trang ví dụ chính về OpenLayers .


Cảm ơn câu trả lời đó! Thật tuyệt khi thấy các danh sách mailling khá hoạt động, trước khi bắt đầu làm việc với một dự án ^^
Pascal MARTIN

13

Một điểm chưa được thực hiện đầy đủ ở đây là việc sử dụng OpenLayers sẽ tránh được các hạn chế khác nhau của Google về các điều khoản dịch vụ cho API bản đồ của mình, bao gồm:

  • Bạn không thể sử dụng hợp pháp bản đồ Google chỉ trong một phần của trang web yêu cầu thanh toán để truy cập hoặc cho một trang web riêng tư mà công chúng không thể đăng ký (ví dụ: mạng nội bộ của công ty). (IANAL, nhưng xem Điều khoản dịch vụ, 9.1Câu hỏi thường gặp )

  • Bạn không thể sử dụng hợp pháp (hoặc thực tế) sử dụng Google API cho các ứng dụng ngoại tuyến (tức là nơi các ô được phục vụ từ máy của chính bạn). Ngay cả khi không có giới hạn pháp lý, Google làm cho việc này về mặt kỹ thuật rất khó khăn, trong khi OpenLayers làm cho nó dễ dàng.

  • Google bảo lưu quyền tắt quyền truy cập vào API nếu bạn đang hiển thị bản đồ có nội dung mà nó thấy phản cảm. Ví dụ được đưa ra trong Câu hỏi thường gặp là bản đồ về các loại thuốc bất hợp pháp, mang lại cảm giác tốt về các khu vực màu xám mà hạn chế này có thể bao gồm.

Xem Câu hỏi thường gặp nàyĐiều khoản dịch vụ để biết thêm chi tiết.

Tất cả những gì đã nói, là một nhà phát triển Google Maps lâu năm mới bắt đầu sử dụng OpenLayers, tôi cảm thấy rằng Google Maps có tài liệu tốt hơn, cộng đồng người dùng lớn hơn và API rõ ràng và ổn định hơn so với OpenLayers. Vì vậy, bạn phải thực hiện một sự đánh đổi ở đâu đó.


"Bạn không thể sử dụng hợp pháp bản đồ Google trong một phần của trang web yêu cầu thanh toán để truy cập hoặc cho một trang web riêng tư mà công chúng không thể đăng ký (ví dụ: mạng nội bộ của công ty)." Điều đó là không chính xác. Bạn có thể sử dụng Google Maps trong phần trả phí trên trang web của mình miễn là phần lớn người dùng có thể sử dụng trang web và bản đồ của bạn mà không phải trả tiền. Ví dụ: Một trang web bất động sản. Các áp phích phải trả tiền để liệt kê nhà của họ, nhưng đại đa số người dùng có thể duyệt trang mà không phải trả tiền. Trong trường hợp này cả hai đều có quyền truy cập vào Google Maps.
Craig

Cảm ơn - Tôi có nghĩa là bạn không thể sử dụng API riêng cho các phần bắt buộc thanh toán. Tôi đã cập nhật bài viết của mình và thêm nhiều liên kết để giải quyết vấn đề này.
nrabinowitz

OpenLayers sử dụng API Google Maps trong nội bộ để bạn phải tuân theo cùng một giấy phép. osgeo-org.1560.x6.nabble.com/ từ
Alfredo Osorio

@AlfredoOsorio - vâng, IFF bạn sử dụng các lớp của Google. Có rất nhiều nguồn gạch khác.
nrabinowitz

12

Nó thực sự phụ thuộc vào những gì bạn muốn sử dụng bản đồ cho. Để chỉ đơn giản là vẽ các điểm trên bản đồ, Google Maps sẽ ổn. Các lớp bản đồ cho Google Maps cũng khá chi tiết. Mặt khác, OpenLayers cung cấp nhiều chức năng hơn và rất mở rộng.

OpenLayers có rất nhiều ví dụ để bạn bắt đầu.

Đối với bản đồ, OpenLayers chỉ là một API nên bạn cần cung cấp nó sẽ ánh xạ các lớp. API Google Maps sẽ được giới hạn ở các lớp bản đồ do google cung cấp. Với OpenLayer, bạn có thể hiển thị khá nhiều dịch vụ bản đồ có sẵn công khai (WMS, WFS, TMS, WMS-C). Một ví dụ rất hay là openstreetmap.org - (bản đồ đường phố toàn cầu được thu thập bởi cộng đồng). OSM có thể được thêm vào openlayers dưới dạng một lớp TMS. Kiểm tra ví dụ này để được hướng dẫn.


Chào! Có vẻ như "Tôi là" câu trả lời đầu tiên của bạn ở đây! Chào mừng bạn Và cảm ơn câu trả lời của bạn :-)
Pascal MARTIN

9

Một số khách hàng có thể từ chối hoặc có các đặt phòng mạnh mẽ về việc sử dụng Google Maps. Họ có thể có những lo ngại hợp lệ rằng Google có thể giới thiệu quảng cáo hoặc thay đổi API mà không cần thông báo trước. Tuy nhiên, Google Maps có lợi ích tích hợp với các dịch vụ khác của Google (dấu vị trí, thêm ảnh, dịch vụ mã hóa địa lý). Là web của bạn, bạn luôn có thể kết hợp nhiều dịch vụ ánh xạ và API khác nhau.


1
+1. Tôi có một số khách hàng như vậy. Và tôi không nói họ sai. Lần trước tôi đã xem, các điều khoản cấp phép của Google Maps thực sự cho phép Google giới thiệu quảng cáo vào bản đồ bất cứ khi nào họ muốn.
MarkJ

2
Ngoài ra, bằng cách sử dụng GoogleMaps, bạn sẽ cấp cho Google giấy phép vĩnh viễn, không thể hủy ngang, miễn phí bản quyền, để tái tạo, điều chỉnh và sửa đổi nội dung của bạn.
MarkJ

9

Tôi đồng ý với tất cả các câu trả lời, nhưng có một điểm rất quan trọng mà không ai đề cập đến. OpenLayers và Google Maps có các mục tiêu khác nhau.

OpenLayer là một khung tuyệt vời để hiển thị geodata, nhưng Google Maps là một nhóm dịch vụ bao gồm một khung để hiển thị geodata trong số các dịch vụ khác.

Vì vậy, Google Maps trưng bày rất nhiều dịch vụ và tính năng mà OpenLayes không có. Một số ví dụ về các tính năng và dịch vụ của Google Maps là bản địa hóa khu vực, phát hiện cảm biến (đối với thiết bị có GPS) và bản địa hóa người dùng, mã hóa địa lý và mã hóa địa lý ngược, chế độ xem phố, v.v.


6

Tôi đã sử dụng cả hai API. Tôi tạo một phần mềm cho các tập đoàn và phần mềm này yêu cầu lập bản đồ nhưng không phải tất cả khách hàng đều có giấy phép GoogleMaps, vì vậy tôi cần hỗ trợ cả hai loại bản đồ.

Tôi đã tạo một API chung để trừu tượng hóa sự khác biệt giữa chúng và để tôi nói với bạn, một số thứ dễ thực hiện hơn cái kia. Giống như giới hạn các giới hạn nơi bạn có thể xoay bản đồ đến, việc thực hiện trong OpenLayers sẽ dễ dàng hơn rất nhiều, nhưng các bản đồ nhiệt dễ sử dụng hơn trên GoogleMaps (nó được google hỗ trợ chính thức, không giống như các plugin OpenLayers có sẵn).

  1. OpenLayers hỗ trợ bản đồ ngoại tuyến. Một số người dùng của tôi đang ở trong mạng nội bộ riêng tư mà không có kết nối internet.

  2. GoogleMaps có hai plugin hoàn toàn phải có là MarkClusterSpiderfier giúp có thể hình dung một số lượng lớn các điểm đánh dấu.

  3. GoogleMaps InfoWindows dễ sử dụng hơn và có khả năng sử dụng tốt hơn OpenLayers.Popups. Đây là những cửa sổ nhỏ có thể mở khi bạn nhấp vào điểm đánh dấu. Theo mặc định, InfoWindows của Google cũng đẹp hơn rất nhiều, bạn phải thực hiện một số thuật sĩ CSS với Popups.

  4. GoogleMaps có streetview đôi khi hữu ích.

  5. GoogleMaps có nhiều tính năng hơn mà bạn có thể cần. Mặc dù nhiều tính năng cũng có trong OpenLayers, nhưng không được hỗ trợ chính thức.

Thông thường cuối cùng, bạn nên đi với OpenLayers vì giảm đau đầu mà bạn có thể nhận được từ việc cấp phép và sử dụng băng thông từ googlemaps. Cả hai đều xử lý ánh xạ cơ bản (nghĩa là hiển thị các điểm đánh dấu trên bản đồ) rất tốt. Trừ khi bạn có thể tìm thấy một tính năng cụ thể mà bạn cần từ một tính năng không có trên một tính năng khác mà bạn nên dùng cho OpenLayers. Xem phần này để biết thêm thông tin về thanh toán googlemaps và khi bạn có thể sử dụng miễn phí.

Ngoài ra, GoogleMaps có loại định vị địa lý cơ bản là 'LatLng' và Openlayers sử dụng 'LonLat', điều này khiến tôi phát điên vì tôi nhầm thứ tự của các tham số trong các lệnh gọi hàm.


3

Ngoài những người đã đề cập đến vấn đề tốc độ, tôi muốn thêm rằng trình kết xuất VML của IE có thể trở nên rất chậm với lớp vectơ có nhiều tính năng. Một người dùng đã đề cập đến khoảng 200. Đó là về chính xác những gì tôi có thể thêm trước khi IE chậm lại đáng kể đến mức đóng băng. Nếu bạn thêm các tính năng là nhãn văn bản, bạn có thể thêm ít hơn một nửa, có thể vì bên trong mỗi nhãn văn bản bao gồm hai thành phần VML.

Trong Google, bạn có thể tạo GOverlay tùy chỉnh có nội dung là "div", được hiển thị mà không gặp sự cố trong IE.


3

Một vài điều tôi sẽ thêm vào, từ hai quan điểm: sử dụng máy khách và giám sát dữ liệu.

Sử dụng của khách hàng:

  • Hiện tại khách hàng của bạn đang sử dụng cái gì? Thay đổi có thể khó khăn.
  • Bạn thực sự cần bao nhiêu chức năng? OpenLayers có khá nhiều, nhưng nếu bạn không sử dụng nó ...

Phục vụ dữ liệu:

  • Bạn đang phục vụ dữ liệu KML ? Nếu vậy, cả OpenLayers và Google Maps sẽ hoạt động với nó và có lẽ bạn sẽ phải quyết định dựa trên việc sử dụng máy khách.

  • Bạn đang phục vụ các loại dịch vụ dữ liệu khác? (WMS, WFS, CSV, v.v.) Nếu vậy, rất có thể OpenLayers có các ví dụ và hỗ trợ cho nó.


2

OL có một lượng fan hâm mộ lớn và có lẽ là địa lý Opensource được sử dụng nhiều nhất trên thế giới.

Bạn không thấy nhiều chủ đề và bài đăng về nó trong không gian mạng này bởi vì mọi người ở đây có xu hướng thảo luận về các loại công nghệ khác, như JSF và Mobile (không phải địa lý), không phải vì OL giống như thanh chống.

Tuy nhiên, Ol có một số nhược điểm, chủ yếu là mức độ thấp đến mức bạn phải viết nhiều mã để thực hiện các thao tác thông thường. Điều đó cũng có thể hoạt động theo cách tốt, bởi vì là một nhà phát triển: bạn có tất cả các mã trả trước và b: điều chỉnh và tùy chỉnh là rất dễ dàng.

Có nhiều geotool miễn phí tinh vi hơn, nhưng tất cả những gì họ làm là gọi openlayers và trừu tượng một số công việc nhàm chán hơn.

Vì vậy, sử dụng nó một cách tự tin. Nó trưởng thành, mạnh mẽ và nó sẽ không chết trong tương lai gần. Tuy nhiên, nếu bạn muốn tăng tốc quá trình phát triển của mình, bạn nên thử các công cụ khác gắn kết với nó.

chúc một ngày tốt lành


Xin chào, bạn có thể nói rõ hơn về "geotools miễn phí phức tạp hơn" nằm trên OpenLayers không? GeoExt đã được đề cập ở trên, nhưng tôi chưa thấy bất kỳ người nào khác được chỉ định. Cảm ơn.
Brian B

@BrianB hi brian, chính xác là tôi đã suy nghĩ về Geoext khi tôi viết "geotools miễn phí tinh vi hơn". Thư viện đó kết hợp một EXTJS với các lớp mở.
demz demz
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.