Chính sách và thông tin ghi nhận quyền tác giả cho Places SDK for iOS

Tài liệu này liệt kê các yêu cầu dành riêng cho tất cả ứng dụng được phát triển bằng SDK Địa điểm dành cho iOS, bao gồm cả dịch vụ Tự động hoàn thành địa điểm là một phần của API đó. Bạn có thể tìm thấy thông tin chung hơn cho nhà phát triển Google Maps trong Điều khoản dịch vụ của Nền tảng Google Maps.

Chính sách

Phần này mô tả các chính sách liên quan đến SDK Địa điểm dành cho iOS. Các chính sách cung cấp hướng dẫn và yêu cầu triển khai thực tế để giúp bạn sử dụng Dịch vụ một cách chính xác và phù hợp với kỳ vọng của Nền tảng Google Maps.

Trường hợp ngoại lệ đối với các hạn chế về bộ nhớ đệm

Xin lưu ý rằng mã địa điểm (dùng để xác định duy nhất một địa điểm) được miễn các hạn chế về 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 các phản hồi API. Tìm hiểu cách lưu, làm mới và quản lý mã địa điểm trong hướng dẫn về Mã địa điểm.

Các quốc gia và vùng lãnh thổ thuộc Khu vực kinh tế Châu Âu

Sản phẩm này có Điều khoản dịch vụ riêng cho những khách hàng có địa chỉ thanh toán ở Khu vực kinh tế Châu Âu (EEA) và cũng có thể có chức năng riêng. Trước khi xây dựng bằng Nền tảng Google Maps, hãy xem các điều khoản và thông tin dành riêng cho EEA sau đây:

Nếu địa chỉ thanh toán của bạn không ở EEA, thì các điều khoản dịch vụ sau đây sẽ áp dụng cho bạn:

Yêu cầu về thông tin ghi công của Google Maps

Phần này cung cấp các yêu cầu và nguyên tắc về thông tin ghi công để hiển thị Google Maps và Nội dung thông qua các ứng dụng của bạn.

Ví dụ phân bổ

Sau đây là ví dụ về thông tin ghi công cho Bộ công cụ giao diện người dùng Địa điểm.

Ví dụ về việc ghi nhận tác giả của Places UI Kit trên bản đồ không phải của Google
Thông tin ghi công bắt buộc được áp dụng cho thành phần thu gọn Thông tin chi tiết về địa điểm. Trên bản đồ không phải của Google này, thông tin ghi công của Google Maps hiển thị rõ ràng và nội dung của Nền tảng Google Maps được phân biệt trực quan với nội dung khác.

Hiển thị thông tin ghi công của Google Maps

Bạn phải tuân theo các yêu cầu về thông tin ghi công của Google Maps khi hiển thị Nội dung từ các API của Nền tảng Google Maps trong ứng dụng hoặc trang web của mình. Bạn không cần thêm thông tin ghi công bổ sung nếu Nội dung xuất hiện trên Bản đồ Google mà thông tin ghi công đã hiển thị.

Thông tin ghi công của Google Maps được đưa vào

Đối với thông tin ghi công của Google Maps đã được Nền tảng Google Maps cung cấp trong giao diện người dùng, chẳng hạn như trong Bộ công cụ giao diện người dùng Địa điểm:

  • Đừng xoá thông tin ghi công được đưa vào bất kể thông tin đó xuất hiện ở đâu. Đừng sửa đổi, ẩn, hoặc che khuất thông tin ghi công và đảm bảo thông tin đó hiển thị rõ ràng trên nền.
  • Luôn phân biệt trực quan Nội dung của Nền tảng Google Maps với nội dung khác bằng cách sử dụng các dấu hiệu trên giao diện người dùng, chẳng hạn như đường viền, màu nền, bóng hoặc khoảng trắng vừa đủ.
  • Khi thực hiện các sửa đổi trực quan, bạn phải tuân thủ tất cả các yêu cầu về thông tin ghi công của Google Maps

Thông tin ghi công nên ở dạng biểu trưng Google Maps bất cứ khi nào có thể. Trong trường hợp không gian bị hạn chế, bạn có thể sử dụng văn bản Google Maps. Người dùng cuối phải luôn biết rõ nội dung nào do Google Maps cung cấp.

Bên trái: Thông tin ghi công biểu trưng Google Maps, Bên phải: Thông tin ghi công bằng văn bản Google Maps
Bên trái: Ví dụ về thông tin ghi công bằng biểu trưng Google Maps, Bên phải: Ví dụ về thông tin ghi công bằng văn bản Google Maps

Thông tin ghi công bằng biểu trưng

Hãy tuân theo các yêu cầu sau để sử dụng biểu trưng Google Maps trong ứng dụng hoặc trang web của bạn.
Các biến thể được chấp nhận cho thông tin ghi nhận quyền sở hữu biểu trưng Google Maps
Ví dụ về các biến thể được chấp nhận cho thông tin ghi công bằng biểu trưng Google Maps

Tải biểu trưng Google Maps xuống

Sử dụng các tệp biểu trưng chính thức của Google Maps. Tải các biểu trưng xuống bên dưới và làm theo nguyên tắc trong phần này.

Tải các thành phần thông tin ghi công của Google Maps xuống

Khi sử dụng biểu trưng Google Maps, hãy tuân theo các nguyên tắc sau.

  • Đừng sửa đổi biểu trưng theo bất kỳ cách nào.
  • Duy trì tỷ lệ khung hình của biểu trưng để tránh bị méo.
  • Sử dụng biểu trưng có đường viền trên nền rối mắt, chẳng hạn như bản đồ hoặc hình ảnh.
  • Sử dụng biểu trưng không có đường viền trên nền đơn giản, chẳng hạn như màu đồng nhất hoặc gradient tinh tế.

Quy cách về kích thước biểu trưng

Hãy tuân theo các quy cách về kích thước sau đây cho biểu trưng Google Maps:
  • Chiều cao tối thiểu của biểu trưng: 16dp
  • Chiều cao tối đa của biểu trưng: 19dp
  • Khoảng trắng tối thiểu của biểu trưng: 10dp ở bên trái, bên phải và trên cùng, 5dp ở dưới cùng

Để tìm hiểu về dp, hãy xem Mật độ pixel trên trang web Material Design.

Biểu trưng Google Maps cho biết khoảng trống tối thiểu và phạm vi kích thước chấp nhận được
Ví dụ về biểu trưng Google Maps cho thấy khoảng trắng tối thiểu và phạm vi kích thước được chấp nhận

Khả năng tiếp cận của biểu trưng

Hãy tuân theo các yêu cầu về khả năng tiếp cận sau đây cho biểu trưng Google Maps:
  • Duy trì độ tương phản có thể tiếp cận giữa biểu trưng và nền.
  • Đưa vào nhãn hỗ trợ tiếp cận có văn bản Google Maps.
Các biến thể không được chấp nhận và vấn đề về khả năng tiếp cận đối với thông tin ghi nhận quyền sở hữu biểu trưng Google Maps
Ví dụ về các biến thể không được chấp nhận và các vấn đề về khả năng tiếp cận đối với thông tin ghi công bằng biểu trưng Google Maps

Thông tin ghi công dạng văn bản

Nếu kích thước giao diện của bạn không hỗ trợ việc sử dụng biểu trưng Google Maps, bạn có thể viết Google Maps bằng văn bản. Hãy tuân theo các nguyên tắc sau:

Các biến thể được chấp nhận của thông tin ghi nhận nguồn bằng văn bản trên Google Maps
Ví dụ về các biến thể được chấp nhận của thông tin ghi công bằng văn bản Google Maps
  • Đừng sửa đổi văn bản Google Maps theo bất kỳ cách nào:
    • Đừng thay đổi cách viết hoa của Google Maps
    • Đừng xuống dòng Google Maps
    • Đừng bản địa hoá Google Maps sang ngôn ngữ khác.
    • Ngăn trình duyệt dịch Google Maps bằng cách sử dụng thuộc tính HTML translate="no".
Các biến thể không được chấp nhận của thông tin ghi nhận nguồn văn bản trên Google Maps
Ví dụ về các biến thể không được chấp nhận của thông tin ghi công bằng văn bản Google Maps
  • Tạo kiểu cho văn bản Google Maps như mô tả trong bảng sau:

    Yêu cầu về kiểu văn bản Google Maps
    Thuộc tính Kiểu
    Bộ phông chữ Roboto. Bạn không bắt buộc phải tải phông chữ.
    Bộ phông chữ dự phòng Bất kỳ phông chữ thân văn bản sans serif nào đã được sử dụng trong sản phẩm của bạn hoặc "Sans-Serif" để gọi phông chữ mặc định của hệ thống
    Kiểu phông chữ Bình thường
    Độ đậm phông chữ 400
    Màu phông chữ Trắng, đen (#1F1F1F) hoặc xám (#5E5E5E). Duy trì độ tương phản có thể tiếp cận (4,5:1) với nền.
    Cỡ chữ Cỡ chữ tối thiểu: 12sp
    Cỡ chữ tối đa: 16sp
    Để tìm hiểu về sp, hãy xem Đơn vị cỡ chữ trên trang web Material Design.
    Khoảng cách giữa chữ cái Bình thường

Ví dụ về CSS

CSS sau đây hiển thị Google Maps với kiểu chữ và màu sắc phù hợp trên nền trắng hoặc sáng.

@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');

.GMP-attribution {
font-family: Roboto, Sans-Serif;
font-style: normal;
font-weight: 400;
font-size: 1rem;
letter-spacing: normal;
white-space: nowrap;
color: #5e5e5e;
}

Yêu cầu về hình ảnh

Hãy tuân theo các yêu cầu sau đối với cách xử lý trực quan thông tin ghi công của Google Maps.
  • Đặt thông tin ghi công ở gần đầu hoặc cuối nội dung và trong cùng một vùng chứa trực quan. Đối với một dòng nội dung, bạn có thể đặt thông tin ghi công ở bên phải hoặc bên trái.

  • Phân biệt trực quan Nội dung của Nền tảng Google Maps với nội dung khác bằng cách sử dụng các dấu hiệu trên giao diện người dùng, chẳng hạn như đường viền, màu nền, bóng hoặc khoảng trắng vừa đủ.

  • Đừng trình bày sai về Google Maps bằng cách ghi công cho nội dung không phải của Nền tảng Google Maps.
  • Xác minh rằng thông tin ghi công luôn hiển thị và dễ đọc. Đừng xoá, ẩn, che khuất hoặc sửa đổi thông tin đó.

Các hình sau đây cho thấy ví dụ về các yêu cầu trực quan này.

Ví dụ về thông tin ghi nhận quyền tác giả của Google Maps được đặt ở trên cùng, dưới cùng và bên cạnh nội dung
Ví dụ về thông tin ghi công của Google Maps được đặt ở trên cùng, dưới cùng và bên cạnh nội dung

Ví dụ về 2 cách phân biệt Nội dung trên Google Maps (điểm xếp hạng địa điểm) với nội dung khác
Ví dụ về 2 phương pháp phân biệt Nội dung của Google Maps (xếp hạng địa điểm) với nội dung khác

Không che khuất thông tin ghi nhận quyền sở hữu của Google Maps hoặc trộn thông tin này với nội dung của các nguồn khác
Đừng che khuất thông tin ghi công của Google Maps hoặc trộn thông tin đó với nội dung từ các nguồn khá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 bản đồ của chúng tôi đến từ các nhà cung cấp không phải là Google. Đối với một số sản phẩm, chẳng hạn như Map Tiles API, chúng tôi có thể cung cấp cho bạn thông tin ghi công bắt buộc cho nhà cung cấp dữ liệu bên thứ ba. Khi đó, văn bản thông tin ghi công của bạn phải có tên "Google Maps" 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 Google cung cấp thông tin ghi công của bên thứ ba, việc chỉ đưa vào "Google Maps" hoặc biểu trưng Google không phải là thông tin ghi công phù hợp.

Các yêu cầu khác về thông tin ghi công

Thông tin ghi công cho các nhà cung cấp bên thứ ba chứa nội dung và đường liên kết mà bạn phải hiển thị cho người dùng ở định dạng được cung cấp. Google khuyên bạn nên cho ứng dụng hiển thị thông tin này bên dưới thông tin chi tiết về địa điểm.

Thông tin ghi công của bên thứ ba do API trả về không bao gồm thông tin ghi công của Google. Bạn phải tự đưa thông tin ghi công này vào như mô tả trong phần Hiển thị biểu trưng và thông tin ghi công của Google.

Hãy làm theo các hướng dẫn sau để truy xuất thông tin ghi công của bên thứ ba cho một địa điểm hoặc một nhóm địa điểm.

Truy xuất thông tin ghi công cho một địa điểm

Khi truy xuất một địa điểm bằng cách lấy địa điểm theo mã nhận dạng, bạn có thể truy xuất thông tin ghi công cho địa điểm đó từ attributions thuộc tính trên GMSPlace.

attributions được cung cấp dưới dạng đối tượng NSAttributedString.

Truy xuất thông tin ghi công cho một nhóm địa điểm

Nếu ứng dụng của bạn hiển thị thông tin thu được bằng cách yêu cầu địa điểm hiện tại của thiết bị, thì ứng dụng đó phải hiển thị thông tin ghi công của bên thứ ba cho thông tin chi tiết về địa điểm được hiển thị. Bạn có thể truy xuất thông tin ghi công cho tất cả các địa điểm được truy xuất trong yêu cầu, từ thuộc tính attributions trên GMSPlaceLikelihoodList.

attributions được cung cấp dưới dạng đối tượng NSAttributedString mà bạn có thể truy cập và hiển thị theo cách tương tự như attributions trên một địa điểm, như mô tả ở trên.

Thông tin ghi công của kết quả tìm kiếm

Ở Châu Âu, khi sử dụng bảng xếp hạng không bị can thiệp của Google, các sản phẩm tìm kiếm phải có văn bản giải thích không quá 1 lần nhấp để mô tả các yếu tố chính và trọng số của các yếu tố chính xác định thứ hạng kết quả tìm kiếm. Văn bản giải thích:

Tiêu đề: Giới thiệu về các kết quả này

Nội dung: Khi bạn tìm kiếm các doanh nghiệp hoặc địa điểm ở gần một vị trí, Google Maps sẽ hiển thị kết quả tại địa phương. Một số yếu tố — chủ yếu là mức độ liên quan, khoảng cách và sự nổi bật — được kết hợp để giúp tìm ra kết quả tốt nhất cho nội dung tìm kiếm của bạn.

Nút 1: Tìm hiểu thêm
"Tìm hiểu thêm" văn bản phải liên kết đến bài viết trong Trung tâm trợ giúp.

Nút 2: OK

Hiển thị thông tin ghi công cho ảnh

Nếu ứng dụng của bạn hiển thị ảnh, bạn phải cho thấy mọi attributionsauthorAttributions cho từng ảnh có thông tin ghi công.

  • Để truy cập vào mọi thông tin ghi công, hãy sử dụng GMSPlacePhotoMetadata.attributions. Thuộc tính này là NSAttributedString hoặc nil nếu không có thông tin ghi công nào để hiển thị.
  • Để truy cập vào mọi thông tin ghi công của tác giả, hãy sử dụng GMSPlacePhotoMetadata.authorAttributions. Thuộc tính này chứa một mảng các GMSPlaceAuthorAttribution đối tượng.

Swift

GMSPlacesClient.sharedClient().lookUpPhotosForPlaceID(placeID) { (photos, error) -> Void in
  if let error = error {
    // TODO: handle the error.
    print("Error: \(error.description)")
  } else {
    // Get attribution for the first photo in the list.
    if let photo = photos?.results.first {
      let attributions = photo.attributions
    }
  }
}
    

Objective-C

[[GMSPlacesClient sharedClient]
    lookUpPhotosForPlaceID:placeID
      callback:^(GMSPlacePhotoMetadataList *_Nullable photos,
                  NSError *_Nullable error) {
        if (error) {
          // TODO: handle the error.
          NSLog(@"Error: %@", [error description]);
        } else {
          // Get attribution for the first photo in the list.
          if (photos.results.count > 0) {
            GMSPlacePhotoMetadata *photo = photos.results.firstObject;
            NSAttributedString *attributions = photo.attributions;
          }
        }
      }];
    

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

Đối tượng GMSPlace 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 GMSPlaceReview. Bạn có thể tuỳ ý hiển thị các bài đánh giá này trong ứng dụng của mình.

Khi hiển thị các bài đánh giá do người dùng Google đóng góp, bạn phải đặt tên của tác giả ở gần. Khi có trong trường thông tin ghi công của tác giả của đối tượng GMSPlaceReview, bạn nên đưa cả ảnh của tác giả và đường liên kết đến hồ sơ của họ. Hình ảnh sau đây cho thấy ví dụ về bài đánh giá về một công viên:

Hiển thị thông tin ghi nhận tác giả

Google cũng khuyên bạn nên cho người dùng cuối biết cách sắp xếp các bài đánh giá.

Cách truy cập vào các bài đánh giá:

Swift

// Define a Place ID.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

// Specify the place data types to return.
let myProperties: [GMSPlaceProperty] = [.name, .website, .reviews]

// Create the GMSFetchPlaceRequest object.
let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties)

client.fetchPlaceWithRequest(fetchPlaceRequest: fetchPlaceRequest, callback: {
  (place: GMSPlace?, error: Error?) in
  if let error = error {
    print("An error occurred: \(error.localizedDescription)")
    return
  }
  if let place = place {
    let firstReview: GMSPlaceReview = place.reviews![0]

    // Use firstReview to access review text, authorAttribution, and other fields.

  }
})

Objective-C

// Define a Place ID.
NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs";

// Specify the place data types to return, including reviews.
NSArray<GMSPlaceProperty *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite,GMSPlacePropertyReviews];

GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties];

[placesClient fetchPlaceWithRequest: fetchPlaceRequest, callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) {
  if (error) {
    // TODO: handle the error.
    NSLog(@"Error: %@", [error description]);
  } else {
    // Get first review.
    GMSPlaceReview *firstReview = [place reviews][0];

    // Use firstReview to access review text, authorAttribution, and other fields.

  }
}];

Hiển thị thông tin ghi công của bên thứ ba

Thông tin ghi công cho các nhà cung cấp bên thứ ba được cung cấp dưới dạng đối tượng NSAttributedString chứa nội dung và đường liên kết mà bạn phải giữ nguyên và hiển thị cho người dùng.

Bạn nên hiển thị thông tin ghi công bằng UITextView vì các đường liên kết trong thông tin ghi công phải hoạt động. Để đảm bảo các đường liên kết hoạt động, hãy đặt một uỷ quyền trên UITextView và đặt phương thức shouldInteractWithURL của UITextViewDelegate để trả về YES.

Swift

...
  self.attributionTextView.delegate = self
...

// MARK: - UITextViewDelegate

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL,
  inRange characterRange: NSRange) -> Bool {
  // Make links clickable.
  return true
}
    

Objective-C

...
  self.attributionTextView.delegate = self;
...

#pragma mark - UITextViewDelegate

- (BOOL)textView:(UITextView *)textView
    shouldInteractWithURL:(NSURL *)url
                  inRange:(NSRange)characterRange {
  // Make links clickable.
  return YES;
}
    

Ví dụ về thông tin ghi công của bên thứ ba

Thông tin ghi công của bên thứ ba thường bao gồm văn bản có đường liên kết. Ví dụ:

Trang thông tin của Công ty ví dụ

Trong ví dụ trên, dải văn bản Công ty ví dụ được bao phủ bởi một thuộc tính NSLink.

Tính năng tự động hoàn thành cho địa chỉ của người dùng cuối

Khi người dùng cuối sử dụng chức năng Tự động hoàn thành trong Ứng dụng khách hàng của bạn để nhập trước địa chỉ đường phố và địa chỉ đường phố đó sẽ được người dùng cuối cung cấp đầy đủ và chính xác mà không cần tính năng Tự động hoàn thành, thì địa chỉ mà người dùng cuối đã chọn sẽ không tuân theo các hạn chế về Nội dung của Google Maps trong Thỏa thuận về Nền tảng Google Maps. Trường hợp ngoại lệ này chỉ áp dụng cho địa chỉ đường phố do người dùng cuối chọn và chỉ dành cho giao dịch cụ thể của người dùng cuối đó; trường hợp ngoại lệ này không áp dụng cho danh sách địa chỉ được đề xuất do chức năng Tự động hoàn thành cung cấp hoặc cho Nội dung khác của Google Maps. Trường hợp ngoại lệ này không áp dụng cho bất kỳ chức năng tra cứu địa chỉ hoặc địa điểm yêu thích nào do các Dịch vụ khác của Nền tảng Google Maps cung cấp.

Tự động hoàn thành địa chỉ của người dùng cuối

Trong hình ảnh trước, danh sách địa chỉ ở bên trái vẫn tuân theo các hạn chế về Nội dung của Google Maps. Sau khi người dùng cuối chọn địa chỉ mà họ muốn, địa chỉ đó sẽ không tuân theo các hạn chế về Nội dung của Google Maps chỉ nhằm mục đích giao dịch áp dụng của người dùng cuối đó.