Chế độ xem phố

Chọn nền tảng: Android iOS JavaScript

Chế độ xem phố của Google Maps cho phép bạn khám phá các địa điểm trên khắp thế giới thông qua hình ảnh đường phố 360 độ. Bạn có thể khám phá các địa danh trên thế giới, xem các địa điểm tự nhiên, điều hướng cho một chuyến đi hoặc ngắm cảnh bên ngoài doanh nghiệp của bạn.

Tổng quan

Chế độ xem phố của Google cung cấp chế độ xem toàn cảnh 360 độ từ những con đường được chỉ định trong suốt khu vực bao phủ. Mức độ phù hợp có sẵn thông qua SDK cũng tương tự như đối với ứng dụng Google Maps dành cho iOS hoặc https://maps.google.com/. Bạn có thể đọc thêm về Chế độ xem phố và xem các khu vực được hỗ trợ trên bản đồ tương tác, tại bài viết Giới thiệu về Chế độ xem phố.

SDK Maps dành cho iOS cung cấp dịch vụ Chế độ xem phố để lấy và thao tác với hình ảnh được sử dụng trong Chế độ xem phố của Google Maps. Hình ảnh Chế độ xem phố được trả về dưới dạng ảnh toàn cảnh và được xem từ bên trong trình xem Chế độ xem phố — một đối tượng thuộc loại GMSPanoramaView.

Ảnh toàn cảnh trong Chế độ xem phố

Mỗi ảnh toàn cảnh ở Chế độ xem phố là một hình ảnh hoặc một nhóm hình ảnh cung cấp chế độ xem 360 độ đầy đủ từ một vị trí. Hình ảnh tuân theo hình chiếu hình cầu toàn cảnh (Plate Carrée), trong đó có góc nhìn ngang 360 độ (bao quanh toàn bộ) và 180 độ theo chiều dọc (từ thẳng lên đến thẳng xuống). Ảnh toàn cảnh 360 độ kết quả xác định một phép chiếu trên một hình cầu có hình ảnh được bao bọc ở bề mặt hai chiều của hình cầu đó.

Bạn có thể xem ảnh toàn cảnh của Chế độ xem phố bằng đối tượng GMSPanoramaView. Đối tượng này cung cấp cho người xem một ảnh toàn cảnh như một hình cầu, với một máy ảnh ở giữa. Bạn có thể điều khiển hướng của máy ảnh bằng cách lập trình, cũng như một số thuộc tính tùy chỉnh trình xem.

Truy cập dữ liệu Chế độ xem phố

Ảnh toàn cảnh trong Chế độ xem phố được xác định bằng một trong hai siêu dữ liệu:

panoramaID
Mã nhận dạng duy nhất của ảnh toàn cảnh ở Chế độ xem phố. panoramaID này có thể thay đổi theo thời gian và không phù hợp với người dùng trong dài hạn, hoặc được mã hoá cứng. panoramaID là công cụ tốt nhất để cung cấp quyền truy cập có lập trình vào các hình ảnh Chế độ xem phố khác nhau.
coordinate
Vị trí chính xác của hình ảnh này, được biểu thị dưới dạng CLLocationCoordinate2D. Hãy sử dụng coordinate để lưu trữ lâu dài một vị trí toàn cảnh hoặc để dịch các hành động của người dùng trên bản đồ thành hình ảnh Chế độ xem phố.

Cả panoramaIDcoordinate đều được lưu trữ dưới dạng thuộc tính của đối tượng GMSPanorama. Bạn có thể yêu cầu GMSPanorama từ GMSPanoramaService bằng cách sử dụng coordinate hoặc panoramaID. Đối tượng thu được sẽ bao gồm cả hai siêu dữ liệu, cũng như một mảng các đường liên kết đến ảnh toàn cảnh lân cận.

Đặt vị trí cho ảnh toàn cảnh

Bạn có thể đặt vị trí cho ảnh toàn cảnh của Chế độ xem phố dựa trên toạ độ.

  • Phương thức moveNearCoordinate yêu cầu ảnh toàn cảnh gần tọa độ.

  • Phương thức moveNearCoordinate:radius tương tự, nhưng cho phép bạn chỉ định bán kính tìm kiếm, tính bằng mét, xung quanh toạ độ.

  • Phương thức moveNearCoordinate:source cho phép bạn chỉ định một nguồn. Một nguồn hữu ích nếu bạn muốn hạn chế Chế độ xem phố để chỉ tìm các ảnh toàn cảnh bên ngoài. Theo mặc định, ảnh toàn cảnh của các vị trí nằm bên trong hoặc bên ngoài. Lưu ý rằng ảnh toàn cảnh ngoài trời có thể không tồn tại đối với vị trí được chỉ định.

  • Phương thức moveNearCoordinate:radius:source cho phép bạn chỉ định cả bán kính và nguồn.

Xem hình ảnh trong Chế độ xem phố

Thêm người xem Chế độ xem phố

Các bước cơ bản để thêm người xem là:

  1. (Một lần) Làm theo các bước trong phần Bắt đầu để tải SDK, nhận một khoá và thêm các khung bắt buộc.
  2. Tạo hoặc cập nhật ViewController. Nếu ảnh toàn cảnh sẽ hiển thị khi trình điều khiển chế độ xem này hiển thị, hãy nhớ tạo chế độ xem này trong phương thức loadView.
  3. Tạo và tạo thực thể cho một lớp GMSPanoramaView bằng cách sử dụng phương thức GMSPanoramaView initWithFrame:. Nếu bạn sử dụng chế độ xem này làm chế độ xem duy nhất của bộ điều khiển chế độ xem, thì CGRectZero có thể được dùng làm khung của bản đồ – bản đồ này sẽ được đổi kích thước tự động.
  4. Đặt đối tượng GMSPanoramaView làm thành phần hiển thị điều khiển thành phần hiển thị, ví dụ: self.view = panoView;.
  5. Đặt vị trí của hình ảnh Chế độ xem phố bằng một phương thức như moveNearCoordinate:.

Ví dụ dưới đây sẽ thêm người xem Chế độ xem phố vào một ứng dụng.

Swift

import GoogleMaps

class StreetView: UIViewController {

  override func loadView() {
    let panoView = GMSPanoramaView(frame: .zero)
    self.view = panoView

    panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312))
  }
}
      

Objective-C

#import "StreetView.h"
@import GoogleMaps;

@interface StreetView ()

@end

@implementation StreetView

- (void)loadView {
  GMSPanoramaView *panoView = [[GMSPanoramaView alloc] initWithFrame:CGRectZero];
  self.view = panoView;

  [panoView moveNearCoordinate:CLLocationCoordinate2DMake(-33.732, 150.312)];
}

@end
      

Tùy chỉnh trình xem

Bạn có thể tùy chỉnh trình xem bằng cách hạn chế những cử chỉ có sẵn. Theo mặc định, tính năng kéo, thu phóng và di chuyển đến ảnh toàn cảnh bên cạnh đều được bật. Các cử chỉ riêng lẻ được kiểm soát thông qua các thuộc tính của GMSPanoramaView. Các thuộc tính này cho phép hoặc tắt các cử chỉ do người dùng kiểm soát; bạn vẫn có thể thực hiện các thay đổi có lập trình khi tắt cử chỉ.

orientationGestures
Liệu người dùng có thể định hướng lại máy ảnh bằng cách nhấn hay kéo không. Đặt thành NO để tắt các thay đổi về hướng cho máy ảnh.
zoomGestures
Người dùng có thể chụm để thu phóng hay không. Hãy đặt thành NO để tắt tính năng thu phóng.
navigationGestures
Người dùng có thể thay đổi ảnh toàn cảnh hay không. Người dùng có thể nhấn một lần vào các đường liên kết di chuyển hoặc nhấn đúp vào chế độ xem để thay đổi chế độ toàn cảnh Được đặt thành NO để tắt các thay đổi về thao tác.

Bạn có thể bật hoặc tắt tất cả các cử chỉ cùng một lúc bằng phương thức setAllGesturesEnabled:.

Swift

panoView.setAllGesturesEnabled(false)
      

Objective-C

[panoView setAllGesturesEnabled:NO];
      

Khởi chạy Chế độ xem phố bằng Lược đồ URL

Bạn có thể xem hình ảnh trong Chế độ xem phố của Google từ bên trong ứng dụng Google Maps dành cho iOS. Bạn có thể chạy ứng dụng Google Maps dành cho iOS ở chế độ xem phố bằng Lược đồ URL comgooglemaps bằng cách đặt thông số mapmode thành streetview. Ví dụ về URL sẽ chạy Chế độ xem phố sẽ xuất hiện bên dưới. Để biết thêm thông tin, hãy tham khảo tài liệu về Lược đồ URL.

comgooglemaps://?center=46.414382,10.013988&mapmode=streetview

Vị trí trong Chế độ xem phố và điểm xem (POV)

GMSPanoramaCamera cho phép bạn thiết lập góc nhìn của máy ảnh Chế độ xem phố bằng cách kết hợp giữa tiêu đề, cao độ và thu phóng.

Các đoạn mã dưới đây sẽ hướng máy ảnh về phía nam và hơi hướng xuống dưới.

Swift

panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
      

Objective-C

panoView.camera = [GMSPanoramaCamera cameraWithHeading:180
                                                 pitch:-10
                                                  zoom:1];
      

Hướng

Vị trí Chế độ xem phố xác định vị trí của tiêu điểm máy ảnh cho một hình ảnh, nhưng không xác định hướng của máy ảnh cho hình ảnh đó. Với mục đích đó, đối tượng GMSOrientation xác định hai thuộc tính:

  • heading xác định góc xoay xung quanh vị trí máy ảnh theo độ tương đối so với hướng bắc thực tế. Các tiêu đề được đo theo chiều kim đồng hồ: đúng về phía bắc là 0, phía đông là 90, phía nam là 180, phía tây là 270.
  • pitch (0 mặc định) xác định phương sai góc "up" hoặc "down" so với cao độ mặc định ban đầu của máy ảnh, thường là (nhưng không phải lúc nào) ngang. (Ví dụ: một hình ảnh được chụp trên đồi có thể biểu thị một cao độ mặc định không nằm ngang). Các góc độ cao được đo bằng các giá trị dương nhìn lên (lên thẳng 90 độ và hướng trực tiếp đến cao độ mặc định) và giá trị âm (giảm xuống -90 độ) và thẳng đứng với độ cao mặc định.

Zoom (thu phóng)

Chế độ xem phố hỗ trợ nhiều mức độ chi tiết hình ảnh thông qua việc sử dụng tính năng thu phóng. Bạn có thể đặt mức thu phóng theo phương thức lập trình hoặc người dùng có thể thay đổi mức trong trình xem bằng cách chụm để thu phóng.

Đang di chuyển máy ảnh

Sau khi bạn tạo GMSPanoramaView và có máy ảnh đã định cấu hình hoặc máy ảnh mặc định, bạn có thể thay đổi máy ảnh bằng một trong các cách sau. Khi thay đổi máy ảnh, bạn có thể tạo ảnh động cho chuyển động của máy ảnh thu được. Ảnh động sẽ nội suy giữa các thuộc tính hiện tại của máy ảnh và các thuộc tính mới của máy ảnh.

Bạn có thể sửa đổi đối tượng GMSPanoramaCamera và đặt đối tượng đó trên thuộc tính GMSPanoramaView&hl=vi camera. Thao tác này sẽ chụp máy ảnh từ góc nhìn mới mà không có ảnh động. Bạn có thể tạo GMSCameraPosition để định cấu hình mọi tổ hợp hướng và thu phóng.

Swift

panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
      

Objective-C

panoView.camera = [GMSPanoramaCamera cameraWithHeading:180
                                                 pitch:-10
                                                  zoom:1];
      

Bạn có thể tạo ảnh động chuyển đổi bằng cách gọi phương thức animateToCamera:animationDuration: của GMSPanoramaView. Ngoài ra, bạn có thể điều khiển máy ảnh bằng Ảnh động chính. Tính năng này được cung cấp thông qua CALayer tuỳ chỉnh trên GMSPanoramaView, GMSPanoramaLayer.

Điểm đánh dấu trong Chế độ xem phố

Đối tượng GMSPanoramaView có thể hiển thị điểm đánh dấu bản đồ. Bạn có thể sử dụng cùng một đối tượng GMSMarker trên đối tượng GMSMapView hoặc GMSPanoramaView bằng cách đặt thuộc tính tương ứng cho đối tượng đó:

Swift

// Create a marker at the Eiffel Tower
let position = CLLocationCoordinate2D(latitude: 48.858, longitude: 2.294)
let marker = GMSMarker(position: position)

// Add the marker to a GMSPanoramaView object named panoView
marker.panoramaView = panoView

// Add the marker to a GMSMapView object named mapView
marker.map = mapView
      

Objective-C

// Create a marker at the Eiffel Tower
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(48.858,2.294);
GMSMarker *marker = [GMSMarker markerWithPosition:position];

// Add the marker to a GMSPanoramaView object named panoView
marker.panoramaView = panoView;

// Add the marker to a GMSMapView object named mapView
marker.map = mapView;
      

Các điểm đánh dấu sẽ điều chỉnh kích thước theo hàm khoảng cách giữa vị trí của điểm đánh dấu và vị trí của GMSCameraView#39; Nếu khoảng cách này quá lớn, điểm đánh dấu sẽ trở nên quá nhỏ để hiển thị và sẽ bị ẩn khỏi chế độ xem.

Thiết lập thuộc tính panoramaView thành nil để xoá thuộc tính này khỏi GMSPanoramaView.

Swift

marker.panoramaView = nil
      

Objective-C

marker.panoramaView = nil;
      

Sự kiện

Bạn có thể nghe các sự kiện xảy ra trên ảnh toàn cảnh của Chế độ xem phố, chẳng hạn như khi người dùng nhấn vào ảnh toàn cảnh. Để theo dõi các sự kiện, bạn phải triển khai giao thức GMSPanoramaViewDelegate. Hãy xem hướng dẫn tổng thể về sự kiện và danh sách các phương thức trên GMSPanoramaViewDelegate.