Chính sách đối với SDK Bản đồ dành cho Android

Chủ đề này đưa ra yêu cầu phân bổ cho tất cả ứng dụng được phát triển bằng SDK Maps dành cho Android, bao gồm cả dịch vụ Tự động hoàn thành địa điểm là một phần của API đó. Để biết thêm các điều khoản của Nền tảng Google Maps, hãy xem Điều khoản dịch vụ của Nền tảng Google Maps.

Cung cấp điều khoản sử dụng và chính sách quyền riêng tư

Nếu bạn phát triển SDK Maps dành cho Android, bạn phải cung cấp Điều khoản sử dụngChính sách quyền riêng tư cùng với ứng dụng của bạn theo các nguyên tắc được nêu trong Thỏa thuận của bạn với Google:

  • Điều khoản sử dụngChính sách quyền riêng tư phải được cung cấp công khai.
  • Bạn phải nêu rõ trong Điều khoản sử dụng của ứng dụng rằng khi sử dụng ứng dụng, người dùng phải chịu sự ràng buộc của Điều khoản dịch vụ của Google.
  • Trong Chính sách quyền riêng tư của mình, bạn phải thông báo cho người dùng rằng bạn đang sử dụng(các) API Google Maps và đưa vào bằng cách tham khảo Chính sách quyền riêng tư của Google.

Địa điểm bạn nên cung cấp Điều khoản sử dụngChính sách quyền riêng tư sẽ phụ thuộc vào nền tảng của ứng dụng.

Ứng dụng dành cho thiết bị di động

Nếu phát triển một ứng dụng dành cho thiết bị di động, bạn nên cung cấp đường liên kết đến Điều khoản sử dụngChính sách quyền riêng tư trên trang tải xuống của ứng dụng trong cửa hàng ứng dụng có liên quan và trong trình đơn cài đặt ứng dụng.

Ứng dụng web

Nếu phát triển một ứng dụng web, bạn nên cung cấp đường liên kết đến Điều khoản sử dụngChính sách quyền riêng tư ở chân trang của trang web.

Tìm nạp trước, lưu vào bộ nhớ đệm hoặc lưu trữ nội dung

Các ứng dụng sử dụng SDK Maps dành cho Android chịu sự ràng buộc của các điều khoản trong Thoả thuận của bạn với Google. Theo các điều khoản trong Thoả thuận của bạn, bạn không được tìm nạp trước, lập chỉ mục, lưu trữ hoặc lưu vào bộ nhớ đệm bất kỳ Nội dung nào trừ những điều kiện giới hạn được nêu trong điều khoản.

Hiển thị kết quả của SDK Bản đồ dành cho Android

Bạn có thể hiển thị SDK Maps cho kết quả Android trên Google Maps hoặc không cần bản đồ. Nếu bạn muốn hiển thị kết quả của SDK Maps dành cho Android trên bản đồ, thì những kết quả này phải được hiển thị trên Google Maps. Cấm sử dụng SDK Bản đồ cho dữ liệu Android trên bản đồ không phải là bản đồ của Google.

Nếu ứng dụng của bạn hiển thị dữ liệu trên Google Maps thì biểu trưng Google sẽ được đưa vào và không thể thay đổi. Các ứng dụng hiển thị dữ liệu Google trên cùng một màn hình với Google Maps không bắt buộc phải cung cấp thêm thuộc tính cho Google.

Nếu ứng dụng của bạn hiển thị dữ liệu trên một trang hoặc khung hiển thị không hiển thị Google Maps, thì bạn phải hiển thị biểu trưng của Google cùng với dữ liệu đó. Ví dụ: nếu ứng dụng của bạn hiển thị dữ liệu của Google trên một thẻ và Google Maps chứa dữ liệu đó trên một thẻ khác, thì thẻ đầu tiên phải hiển thị biểu trưng của Google. Nếu ứng dụng của bạn sử dụng các trường tìm kiếm có hoặc không có tính năng tự động hoàn thành, thì biểu trưng phải xuất hiện cùng dòng.

Biểu trưng Google nên được đặt ở góc dưới cùng bên trái của bản đồ, đồng thời thông tin ghi công được đặt ở góc dưới cùng bên phải, cả hai đều phải hiển thị trên toàn bộ bản đồ và không ở bên dưới bản đồ hay một vị trí khác trong ứng dụng. Ví dụ về bản đồ sau đây cho thấy biểu trưng Google ở phía dưới bên trái của bản đồ và thuộc tính ở phía dưới bên phải.

Tệp zip sau đây chứa biểu trưng Google ở đúng kích thước dành cho ứng dụng dành cho máy tính, Android và iOS. Bạn không được thay đổi kích thước hoặc sửa đổi các biểu trưng này theo bất kỳ cách nào.

Tải xuống: google_logo.zip

Đừng sửa đổi thuộc tính. Đừng xoá, che khuất hoặc cắt bớt thông tin ghi công. Bạn không được sử dụng biểu trưng cùng dòng của Google (ví dụ: "Những bản đồ này đến từ [Google_logo]").

Duy trì việc phân bổ theo cách chặt chẽ. Nếu bạn sử dụng ảnh chụp màn hình hình ảnh trên Google bên ngoài nội dung được nhúng trực tiếp, hãy ghi rõ thuộc tính tiêu chuẩn như khi xuất hiện trong hình ảnh. Nếu cần, bạn có thể tuỳ chỉnh kiểu và vị trí của văn bản ghi công, miễn là văn bản đó nằm gần nội dung và dễ đọc đối với người xem hoặc độc giả thông thường. Bạn không được di chuyển phần phân bổ ra khỏi nội dung, chẳng hạn như ở cuối sách, phần ghi công của tệp/chương trình hoặc chân trang web.

Bao gồm cả nhà cung cấp dữ liệu bên thứ ba. Một số dữ liệu và hình ảnh trên các sản phẩm lập bản đồ của chúng tôi là của các nhà cung cấp không phải Google. Nếu bạn sử dụng hình ảnh như vậy, văn bản ghi công của bạn phải có tên "Google" và(các) nhà cung cấp dữ liệu có liên quan, chẳng hạn như "Dữ liệu bản đồ: Google, Maxar Technologies". Khi có nhà cung cấp dữ liệu bên thứ ba được trích dẫn cùng với hình ảnh, thì việc chỉ thêm chữ "Google" hoặc biểu trưng Google là không phù hợp.

Nếu bạn đang sử dụng Nền tảng Google Maps trên một thiết bị không hiển thị mô hình phân bổ phù hợp, vui lòng liên hệ với nhóm bán hàng của Google để thảo luận về các giấy phép phù hợp với trường hợp sử dụng của bạn.

Các yêu cầu khác về việc phân bổ giá trị đóng góp

Hãy làm theo các hướng dẫn này để truy xuất các thuộc tính của bên thứ ba và hiển thị các thuộc tính đó trong ứng dụng của bạn.

Truy xuất thuộc tính từ một địa điểm

Nếu ứng dụng của bạn hiển thị thông tin thu thập được bằng cách gọi lấy vị trí theo mã nhận dạng, thì ứng dụng cũng phải hiển thị thông tin thuộc tính của bên thứ ba về thông tin chi tiết về địa điểm đã nhận được.

API sẽ trả về một đối tượng Place. Để truy xuất các thuộc tính từ đối tượng Place, hãy gọi Place.getAttributions(). Phương thức này sẽ trả về một String hoặc một chuỗi trống nếu không có thuộc tính nào để hiển thị.

String placeId = "INSERT_PLACE_ID_HERE";
List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);

placesClient.fetchPlace(request).addOnSuccessListener((response) -> {
    Place place = response.getPlace();
    textView.append("Place found: " + place.getName());
    textView.append("Attributions: " + place.getAttributions());
}).addOnFailureListener((exception) -> {
    if (exception instanceof ApiException) {
        // Handle the error.
    }
});

Hiển thị ghi nhận tác giả cho một ảnh

Nếu ứng dụng của bạn cho thấy ảnh, thì bạn phải hiện thông tin ghi công cho mỗi ảnh có ảnh. PhotoMetadata, có thể chứa một trong hai loại thuộc tính:

Để nhận thuộc tính chuỗi cho một ảnh, hãy gọi PhotoMetadata.getAttributions(). Phương thức này sẽ trả về một chuỗi ký tự HTML hoặc một chuỗi trống nếu không có thuộc tính nào để hiển thị.

// Get the photo metadata from the Place object.
PhotoMetadata photoMetadata = place.getPhotoMetadatas().get(0);

// Get the attribution text.
String attributions = photoMetadata.getAttributions();

Để nhận thông tin ghi nhận tác giả cho một ảnh, hãy gọi PhotoMetadata.getAuthorAttributions(). Phương thức này trả về một đối tượng AuthorAttributions. Đối tượng này chứa List các đối tượng AuthorAttribution, một đối tượng cho mỗi tác giả.

// Get the photo metadata from the Place object.
PhotoMetadata photoMetadata = place.getPhotoMetadatas().get(0);

// Get the author attributions object.
AuthorAttributions authorAttributions = photoMetadata.getAuthorAttributions();
List<AuthorAttribution> authorAttributionList = authorAttributions.asList();

Hiển thị bài đánh giá

Một đối tượng Place có thể chứa tối đa 5 bài đánh giá, trong đó mỗi bài đánh giá được biểu thị bằng một đối tượng Review. Bạn có thể tuỳ ý hiển thị những bài đánh giá này trong ứng dụng của mình.

Bạn cũng nên hiển thị cách sắp xếp bài đánh giá cho người dùng cuối.

Để truy cập vào các bài đánh giá, hãy gọi Place.getReviews():

// Specify the fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.REVIEWS);

// Construct a request object, passing the place ID and fields array.
final FetchPlaceRequest request = FetchPlaceRequest.newInstance("INSERT_PLACE_ID_HERE", placeFields);

placesClient.fetchPlace(request).addOnSuccessListener((response) -> {
    Place place = response.getPlace();
    List<Review> reviews = place.getReviews();
    // For loop for iterating over the List
    for (int i = 0; i < reviews.size(); i++) {
      // For each review, get the Review object.
        Review placeReview = reviews.get(i);

      // Get any attribution and author attribution.
        String reviewAttribution = placeReview.getAttribution();
        AuthorAttribution authorAttribution = placeReview.getAuthorAttribution();

        // Display the review contents and attributions as necessary.
    }
}).addOnFailureListener((exception) -> {
    if (exception instanceof ApiException) {
        // Handle the error.
    }
});

Hiển thị các thuộc tính của bên thứ ba

Ghi nhận tác giả cho nhà cung cấp bên thứ ba chứa nội dung và đường liên kết ở định dạng HTML mà bạn phải duy trì và hiển thị cho người dùng ở định dạng được cung cấp. Bạn nên hiển thị thông tin này bên dưới thông tin chi tiết về địa điểm.

API tạo ra các thuộc tính cho mọi vị trí mà ứng dụng sử dụng. Các thuộc tính này được cung cấp theo lệnh gọi API, chứ không phải theo từng vị trí.

Một cách để hiển thị các thuộc tính là sử dụng TextView. Ví dụ:

TextView attributionsText = (TextView) findViewById(R.id.attributions);
String thirdPartyAttributions = place.getAttributions();
attributionsText.setText(thirdPartyAttributions);

Ví dụ về thuộc tính của bên thứ ba

Listings by <a href="https://www.example.com/">Example Company</a>

Xin lưu ý rằng mã địa điểm (dùng để xác định riêng một địa điểm) sẽ được miễn hạn chế lưu vào bộ nhớ đệm. Do đó, bạn có thể lưu trữ các giá trị mã địa điểm vô thời hạn. Mã địa điểm được trả về trong trường place_id trong SDK Maps dành cho phản hồi của Android.

Nguyên tắc về kiểu trình bày cho mô hình phân bổ trên Google

Dưới đây là các nguyên tắc về kiểu cho thuộc tính của Google trong CSS và HTML nếu bạn không thể sử dụng biểu trưng Google có thể tải xuống.

Không gian trống

Khoảng không gian trống xung quanh bản khoá phải bằng hoặc lớn hơn chiều cao của chữ "G" trong Google.

Khoảng cách giữa nội dung phân bổ và biểu trưng Google phải bằng một nửa chiều rộng của chữ "G".

Mức độ dễ đọc

Dòng tên tác giả phải luôn rõ ràng, dễ đọc và xuất hiện ở mức thay đổi màu phù hợp với nền nhất định. Luôn đảm bảo cung cấp đủ độ tương phản cho biến thể biểu trưng mà bạn chọn.

Màu

Sử dụng văn bản Google Material Gray 700 trên nền trắng hoặc sáng với tông màu đen tối đa từ 0% đến 40%.

Google
#5F6368
RGB 95 99 104
HSL 213 5 39
HSB 213 9 41

Trên nền tối hơn và trên nền ảnh chụp hoặc các mẫu không bận rộn, hãy sử dụng văn bản màu trắng cho dòng ghi tên tác giả và thuộc tính.

Google
#FFFFFF
RGB 255 255 255
HSL 0 0 100
HSB 0 0 100

Phông chữ

Hãy sử dụng phông chữ Roboto.

CSS mẫu

Khi áp dụng cho văn bản "Google", CSS sau đây sẽ hiển thị "Google" với phông chữ, màu sắc và khoảng cách thích hợp trên nền trắng hoặc sáng.

font-family: Roboto;
font-style: normal;
font-weight: 500;
font-size: 16px;
line-height: 16px;
padding: 16px;
letter-spacing: 0.0575em; /* 0.69px */
color: #5F6368;