
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 các kỳ quan thiên nhiên, tìm đường cho 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 khu vực có phạm vi phủ sóng. Phạm vi phủ sóng có sẵn
thông qua SDK cũng giống như phạm vi phủ só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 tại 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à thao tác với hình ảnh được 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 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 360 độ đầy đủ từ một vị trí. Hình ảnh tuân theo phép chiếu hình chữ nhật đều (Plate Carrée), chứa 360 độ chế độ xem ngang (bao trọn) 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 có hình ảnh được bao bọc 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 đối tượng GMSPanoramaView. Đối tượng này cung cấp một trình xem sẽ kết xuất ảnh toàn cảnh dưới dạng hình cầu, với một camera ở trung tâm. Bạn có thể kiểm soát hướng của camera theo phương thức lập trình, cũng như một số thuộc tính tuỳ chỉnh trình xem.
Truy cập vào 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 sau:
panoramaID- Mã nhận dạng duy nhất của ảnh toàn cảnh trong Chế độ xem đường phố. This
panoramaIDcó thể thay đổi theo thời gian và không phù hợp làm tài liệu tham khảo dài hạn hoặc được cố định giá trị trong mã, reference. Bạn nên dùngpanoramaIDđể cung cấp quyền truy cập theo phương thứ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ị dưới dạng
CLLocationCoordinate2D. Sử dụngcoordinateđể lưu trữ vĩnh viễn vị trí của ảnh toàn cảnh hoặc để chuyển đổi hành động của người dùng trên bản đồ thành hình ảnh trong 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ả hai phần siêu dữ liệu, cũng như một mảng đường liên kết đến các ả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
moveNearCoordinateyêu cầu ảnh toàn cảnh ở gần toạ độ.Phương thức
moveNearCoordinate:radiuscũng 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:sourcecho phép bạn chỉ định nguồn. Nguồn sẽ hữu ích nếu bạn chỉ muốn Chế độ xem đường phố 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í ở bên trong hoặc bên ngoài. Xin lưu ý rằng có thể không có ảnh toàn cảnh ở bên ngoài cho vị trí được chỉ định.Phương thức
moveNearCoordinate:radius:sourcecho 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 trình xem Chế độ xem đường phố
Các bước cơ bản để thêm trình xem là:
- (Một lần) Làm theo các bước trong phần Bắt đầu để tải SDK, lấy khoá và thêm các khung bắt buộc.
- Tạo hoặc cập nhật
ViewController. Nếu ảnh toàn cảnh sẽ xuất hiện khi bộ đ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à khởi tạo lớp
GMSPanoramaViewbằng phương thứcGMSPanoramaViewinitWithFrame:. Nếu bạn muốn dùng lớp này làm khung hiển thị duy nhất của bộ điều khiển khung hiển thị, thì bạn có thể dùngCGRectZerolàm khung của bản đồ – bản đồ sẽ tự động đổi kích thước. - Đặt đối tượng
GMSPanoramaViewlàm khung hiển thị của bộ điều khiển khung hiển thị. Ví dụ:self.view = panoView;. - Đặt vị trí của hình ảnh trong Chế độ xem đường phố bằng một phương thức như
moveNearCoordinate:.
Ví dụ bên dưới thêm trình 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ế các cử chỉ có sẵn. Theo mặc định, tất cả các thao tác di chuyển, 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 cho phép hoặc vô hiệu hoá các cử chỉ do người dùng kiểm soát; bạn vẫn có thể thay đổi theo phương thức lập trình khi cử chỉ bị vô hiệu hoá.
orientationGestures- Người dùng có thể định hướng lại camera bằng cách nhấn hoặc
kéo hay không. Đặt thành
NOđể vô hiệu hoá các thay đổi về hướng đối với camera. zoomGestures- Người dùng có thể chụm để thu phóng hay không. Đặt thành
NOđể vô hiệu hoá tính năng thu phóng. navigationGestures- Người dùng có thể thay đổi ảnh toàn cảnh đang 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 khung hiển thị để thay đổi
ảnh toàn cảnh. Đặt thành
NOđể vô hiệu hoá các thay đổi về đ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];
Khởi chạy Chế độ xem đường phố bằng Lược đồ URL
Bạn có thể xem hình ảnh trong Chế độ xem đường phố của Google trong ứng dụng Google Maps dành cho iOS. Bạn có thể khởi chạy ứng dụng Google Maps dành cho iOS ở chế độ xem đường phố bằng Lược đồ URL comgooglemaps bằng cách đặt tham số mapmode thành streetview. Dưới đây là ví dụ về 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à điểm quan sát (POV) trong Chế độ xem đường phố
GMSPanoramaCamera cho phép bạn đặt điểm quan sát của camera trong Chế độ xem đường phố dưới dạng tổ hợp của hướng, độ nghiêng và mức thu phóng.
Đoạn mã bên dưới sẽ định 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í trong Chế độ xem đường phố xác định vị trí tiêu điểm của camera cho một hình ảnh, nhưng không xác định hướng của camera cho hình ảnh đó.
Vì mục đích đó, đối tượng GMSOrientation xác định 2 thuộc tính:
headingxác định góc xoay quanh vị trí của camera theo độ tương đối so với hướng bắc thực. Hướng được đo theo chiều kim đồng hồ: hướng bắc thực là 0, hướng đông là 90, hướng nam là 180, hướng tây là 270.pitch(mặc định là0) xác định phương sai góc "lên" hoặc "xuống" so với độ nghiêng mặc định ban đầu của camera, thường là (nhưng không phải lúc nào cũng) ngang bằng phẳng. (Ví dụ: hình ảnh được chụp trên một ngọn đồi có thể sẽ có độ nghiêng mặc định không ngang bằng.) Góc nghiêng được đo bằng các giá trị dương khi nhìn lên (tối đa 90 độ thẳng lên và vuông góc với độ nghiêng mặc định) và các giá trị âm khi nhìn xuống (tối đa -90 độ thẳng xuống và vuông góc với độ nghiêng mặc định).
Zoom (thu phóng)
Chế độ xem đường 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 này trong trình xem bằng cách chụm để thu phóng.
Di chuyển camera
Sau khi tạo GMSPanoramaView và có camera đã định cấu hình hoặc camera 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ể chọn tạo ảnh động cho chuyển động của camera thu được. Ảnh động nội suy giữa các thuộc tính hiện tại của camera và các thuộc tính mới của camera.
Bạn có thể sửa đổi đối tượng GMSPanoramaCamera và đặt đối tượng đó trên thuộc tính camera của GMSPanoramaView. Thao tác này sẽ chuyển camera sang điểm quan sát 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à mức 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 quá trình 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ể kiểm soát 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 trên 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:
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 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 khung hiển thị.
Đặ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 trên ảnh toàn cảnh trong 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 tổng thể về các sự kiện
và danh sách phương thức trên
GMSPanoramaViewDelegate.