Hình ảnh về địa điểm

Chọn nền tảng: Android iOS JavaScript Dịch vụ web

Bạn có thể sử dụng SDK Địa điểm dành cho iOS để yêu cầu hiển thị ảnh địa điểm trong ứng dụng của mình. Ảnh do dịch vụ ảnh trả về đến từ nhiều nguồn, bao gồm cả chủ sở hữu doanh nghiệp và ảnh do người dùng đóng góp. Để truy xuất ảnh cho một địa điểm, bạn phải thực hiện các bước sau:

  1. Gọi [GMSPlacesClient fetchPlaceFromPlaceId], truyền một chuỗi có mã địa điểm và lệnh gọi lại. Thao tác này sẽ thực hiện lệnh gọi lại với đối tượng GMSPlacePhotoMetadataList.
  2. Trên đối tượng GMSPlacePhotoMetadataList, hãy truy cập vào thuộc tính results và chọn ảnh cần tải từ mảng.
  3. Để mỗi GMSPlacePhotoMetadata tải từ danh sách này, hãy gọi [GMSPlacesClient loadPlacePhoto:callback:] hoặc [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]. Các phần tử này sẽ gọi lệnh gọi lại với UIImage có thể sử dụng. Ảnh có thể có chiều rộng hoặc chiều cao tối đa là 1600 pixel.

Mã mẫu

Phương thức mẫu sau đây sẽ lấy một mã địa điểm và lấy ảnh đầu tiên trong danh sách được trả về. Bạn có thể sử dụng phương thức này làm mẫu cho phương thức mà bạn sẽ tạo trong ứng dụng của riêng mình.

Swift

// Specify the place data types to return (in this case, just photos).
let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.photos.rawValue))!

placesClient?.fetchPlace(fromPlaceID: "INSERT_PLACE_ID_HERE",
                         placeFields: fields,
                         sessionToken: nil, callback: {
  (place: GMSPlace?, error: Error?) in
  if let error = error {
    print("An error occurred: \(error.localizedDescription)")
    return
  }
  if let place = place {
    // Get the metadata for the first photo in the place photo metadata list.
    let photoMetadata: GMSPlacePhotoMetadata = place.photos![0]

    // Call loadPlacePhoto to display the bitmap and attribution.
    self.placesClient?.loadPlacePhoto(photoMetadata, callback: { (photo, error) -> Void in
      if let error = error {
        // TODO: Handle the error.
        print("Error loading photo metadata: \(error.localizedDescription)")
        return
      } else {
        // Display the first image and its attributions.
        self.imageView?.image = photo;
        self.lblText?.attributedText = photoMetadata.attributions;
      }
    })
  }
})

Objective-C

// Specify the place data types to return (in this case, just photos).
GMSPlaceField fields = (GMSPlaceFieldPhotos);

NSString *placeId = @"INSERT_PLACE_ID_HERE";

[_placesClient fetchPlaceFromPlaceID:placeId placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"An error occurred %@", [error localizedDescription]);
    return;
  }
  if (place != nil) {
    GMSPlacePhotoMetadata *photoMetadata = [place photos][0];
    [self->_placesClient loadPlacePhoto:photoMetadata callback:^(UIImage * _Nullable photo, NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error loading photo metadata: %@", [error localizedDescription]);
        return;
      } else {
        // Display the first image and its attributions.
        self->imageView.image = photo;
        self->lblText.attributedText = photoMetadata.attributions;
      }
    }];
  }
}];

Chức năng lưu vào bộ nhớ đệm

Ảnh được tải bằng [GMSPlacesClient loadPlacePhoto:callback:] hoặc [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] được lưu vào bộ nhớ đệm cả trên ổ đĩa và trong bộ nhớ qua hệ thống tải URL nền tảng trong NSURLCache dùng chung.

Để định cấu hình hoạt động lưu vào bộ nhớ đệm, bạn có thể thay đổi bộ nhớ đệm URL dùng chung bằng cách sử dụng [NSURLCache setSharedURLCache:] trong phương thức application:didFinishLaunchingWithOptions: của uỷ quyền ứng dụng.

Nếu không muốn ứng dụng của mình chia sẻ NSURLCache với SDK Địa điểm dành cho iOS, bạn có thể tạo một NSURLCache mới và sử dụng riêng phiên bản này trong ứng dụng mà không cần đặt nó làm bộ nhớ đệm dùng chung.

Phân bổ

Trong hầu hết các trường hợp, bạn có thể sử dụng hình ảnh địa điểm mà không cần ghi nhận tác giả hoặc sẽ bao gồm thông tin ghi nhận tác giả bắt buộc trong hình ảnh. Tuy nhiên, nếu thực thể GMSPlacePhotoMetadata được trả về có một thuộc tính, bạn phải đưa thuộc tính bổ sung đó vào ứng dụng của mình ở mỗi nơi hiển thị hình ảnh. Xin lưu ý rằng các đường liên kết trong mô hình phân bổ phải nhấn vào được. Xem tài liệu về mô hình phân bổ.

Hạn mức sử dụng

Việc truy xuất hình ảnh sẽ tốn một đơn vị hạn mức; không có giới hạn sử dụng để truy xuất siêu dữ liệu ảnh. Đọc thêm về mức sử dụng và cách thanh toán.