Chế độ xem phố

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

Chế độ xem đường 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 360 độ ở cấp đường phố. Bạn có thể khám phá các địa danh trên thế giới, xem những kỳ quan thiên nhiên, điều hướng một chuyến đi hoặc cho thấy bên ngoài doanh nghiệp của bạn.

Tổng quan

Chế độ xem đường phố của Google cung cấp chế độ xem toàn cảnh 360 độ từ các con đường được chỉ định trong suốt khu vực phủ sóng. Phạm vi áp dụng có sẵn thông qua SDK giống như phạm vi áp dụng của ứ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 đường phố và xem các khu vực được hỗ trợ trên bản đồ tương tác, trong bài viết Giới thiệu về Chế độ xem đường phố.

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

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

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

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

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

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

panoramaID
Mã nhận dạng duy nhất của ảnh toàn cảnh trong Chế độ xem đường phố. panoramaID này có thể thay đổi theo thời gian và không phù hợp để làm tệp đối chiếu dài hạn hoặc được mã hoá cứng. Tốt nhất là nên sử dụng panoramaID để cung cấp quyền truy cập có lập trình vào các hình ảnh khác nhau trong Chế độ xem đường phố.
coordinate
Vị trí chính xác của hình ảnh này, được biểu thị bằng CLLocationCoordinate2D. Sử dụng coordinate để lưu trữ liên tục vị trí ảnh toàn cảnh hoặc để chuyển các hành động của người dùng trên bản đồ thành hình ảnh Chế độ xem đường 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 phần 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 ở gần.

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

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

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

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

  • Phương thức moveNearCoordinate:source cho phép bạn chỉ định một nguồn. Nguồn sẽ rất hữu ích nếu bạn muốn hạn chế Chế độ xem đường phố chỉ tìm ảnh toàn cảnh bên ngoài. Theo mặc định, ảnh toàn cảnh về các vị trí sẽ ở 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 đường phố

Thêm người xem Chế độ xem đường 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 khoá và thêm các khung cần thiết.
  2. Tạo hoặc cập nhật ViewController. Nếu ảnh toàn cảnh sẽ hiển thị khi bộ điều khiển chế độ xem này hiển thị, hãy nhớ tạo ảnh toàn cảnh trong phương thức loadView.
  3. Tạo và tạo thực thể cho một lớp GMSPanoramaView bằng phương thức GMSPanoramaView initWithFrame:. Nếu dùng khung hiển thị này làm khung hiển thị duy nhất của bộ điều khiển khung hiển thị, thì CGRectZero có thể được dùng làm khung của bản đồ — bản đồ sẽ được tự động đổi kích thước.
  4. Đặt đối tượng GMSPanoramaView làm chế độ xem của bộ điều khiển chế độ xem, ví dụ: self.view = panoView;.
  5. Đặt vị trí của hình ảnh Chế độ xem đường phố bằng một phương thức như moveNearCoordinate:.

Ví dụ bên dưới thêm người xem Chế độ xem đường 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
      

Tuỳ chỉnh trình xem

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

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

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 đường phố với Lược đồ URL

Hình ảnh trong Chế độ xem đường phố của Google có thể xem được 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 đường phố với Lược đồ URL comgooglemaps bằng cách đặt tham số mapmode thành streetview. Ví dụ về URL sẽ chạy Chế độ xem đường phố 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í và góc nhìn (POV) trong Chế độ xem đường phố

GMSPanoramaCamera cho phép bạn kết hợp tiêu đề, độ cao và thu phóng với máy ảnh Chế độ xem đường phố.

Các đoạn mã dưới đây sẽ hướng camera về phía nam và hơi 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 đường 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ì mục đích đó, đối tượng GMSOrientation xác định 2 thuộc tính:

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

Zoom (thu phóng)

Chế độ xem đường phố hỗ trợ nhiều mức độ chi tiết của 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.

Di chuyển camera

Sau khi tạo GMSPanoramaView và ứng dụng này có một camera được định cấu hình hoặc mặc định, bạn có thể thay đổi camera theo một trong nhiều cách. Khi thay đổi camera, bạn có thể tạo ảnh động cho chuyển động của camera. Ảnh động sẽ nội suy giữa các thuộc tính của máy ảnh hiện tại 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 này trên thuộc tính camera của GMSPanoramaView. Thao tác này sẽ điều chỉnh máy ảnh theo điểm 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à tính năng 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 cho hiệu ứ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 camera bằng Core Animation. Bạn có thể sử dụng tính năng này thông qua CALayer tuỳ chỉnh trên GMSPanoramaView, GMSPanoramaLayer.

Điểm đánh dấu trong Chế độ xem đường 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 các thuộc tính tương ứng của đố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ẽ mở rộng kích thước dưới dạng hàm của khoảng cách giữa vị trí của điểm đánh dấu và vị trí của GMSCameraView. 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.

Đặt thuộc tính panoramaView thành nil để xoá thuộc tính đó khỏi GMSPanoramaView.

Swift

marker.panoramaView = nil
      

Objective-C

marker.panoramaView = nil;
      

Sự kiện

Bạn có thể theo dõi các sự kiện xảy ra trong ảnh toàn cảnh của Chế độ xem đường 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. Xem hướng dẫn chung về sự kiện và danh sách phương thức trên GMSPanoramaViewDelegate.