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 xem hình ảnh bên ngoài doanh nghiệp của mình.
Tổng quan
Chế độ xem đường phố của Google cung cấp chế độ xem toàn cảnh 360 độ từ những con đường được chỉ định trong toàn bộ khu vực phủ sóng. Phạm vi bao phủ có sẵn thông qua SDK cũng giống như mức độ phù hợp 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 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à bạn có thể xem hình ảnh đó 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 của Chế độ xem đường phố là một hình ảnh hoặc một tập hợp hình ảnh, cung cấp chế độ xem toàn bộ 360 độ từ một vị trí duy nhất. Các hình ảnh sẽ phù hợp với phép chiếu hình cầu toàn cảnh (Plate Carree), có chế độ xem 360 độ theo chiều ngang (toàn bộ 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 sẽ xác định phép chiếu trên một hình cầu với hình ảnh được bao bọc theo bề mặt hai chiều của hình cầu đó.
Ảnh toàn cảnh của Chế độ xem đường phố có thể xem được bằng đối tượng GMSPanoramaView
. Đối tượng này cung cấp một 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 đoạ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. Bạn nên sử dụngpanoramaID
để 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ụngcoordinate
để lưu trữ liên tục vị trí 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ả panoramaID
và coordinate
đề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ả 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 Chế độ xem đường phố dựa trên toạ độ.
Phương thức
moveNearCoordinate
yêu cầu ảnh toàn cảnh gần toạ độ.Phương thức
moveNearCoordinate:radius
tương tự như vậy 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ẽ 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 của 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 cho 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à:
- (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.
- 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 khung hiển thị này hiển thị, hãy nhớ tạo ảnh toàn cảnh trong phương thứcloadView
. - Tạo và tạo thực thể cho một lớp
GMSPanoramaView
bằng phương thứcGMSPanoramaView
initWithFrame:
. Nếu dùng chế độ xem này làm khung hiển thị 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 đồ sẽ tự động đổi kích thước. - Đặt đối tượng
GMSPanoramaView
làm khung hiển thị của trình kiểm soát khung hiển thị, ví dụ:self.view = panoView;
. - Đặ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 hỗ trợ. 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 theo chương trình khi cử chỉ bị tắt.
orientationGestures
- Liệu người dùng có thể đổi hướng 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. Đặt thành
NO
để tắt tính năng thu phóng. navigationGestures
- Liệu người dùng có thể thay đổi chế độ hiển thị ảnh toàn cảnh nào 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 khung hiển thị để thay đổi ảnh toàn cảnh. Đặt thành
NO
để tắt các thay đổi về cách điều hướng.
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];
Ra mắt Chế độ xem đường phố bằng Lược đồ URL
Hình ảnh trong Chế độ xem đường phố của Google có thể xem được từ 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
. Bên dưới là ví dụ về một URL sẽ khởi chạy Chế độ xem đường phố. Để 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 đặt điểm nhìn của máy ảnh Chế độ xem đường phố kết hợp cả tiêu đề, độ cao và mức thu phóng.
Nhóm đ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 độ tương đối so với hướng bắc thực. Các hướng được đo theo chiều kim đồng hồ: phía bắc thự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 "lên" hoặc "xuống" so với độ cao mặc định ban đầu của máy ảnh, thường là phẳng theo chiều ngang. (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 phải là chiều ngang.) Góc độ cao được đo bằng các giá trị dương nhìn lên (lên đến +90 độ thẳng lên và trực giao với độ cao mặc định) và các 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 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à thiết bị có máy ảnh mặc định hoặc được định cấu hình, bạn có thể thay đổi bằng một trong nhiều cách. Khi thay đổi máy ảnh, bạn có thể tạo ảnh động cho chuyển động thu được của máy ảnh. Ả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 góc nhìn mới mà không cần ảnh động. Bạn có thể tạo GMSCameraPosition
để định cấu hình bất kỳ tổ hợp hướng và thu phóng nào.
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 máy quay bằng Core Animation. Dữ liệu 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 đườ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;
Điểm đánh dấu sẽ thay đổi kích thước theo tỷ lệ 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 trở nên 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ể nghe các sự kiện xảy ra trên ả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
. Hãy xem
hướng dẫn chung về sự kiện và danh sách phương thức trên
GMSPanoramaViewDelegate
.