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 đưa tin.
Video này cho thấy cách bạn có thể sử dụng dịch vụ Chế độ xem đường phố để mang đến cho người dùng trải nghiệm thực tế về một địa chỉ trên bản đồ, cung cấp cho họ bối cảnh hữu ích về điểm đến hoặc bất kỳ địa điểm nào mà họ quan tâm.
Phạm vi hỗ trợ thông qua Google Maps Android API v2 cũng giống như phạm vi hỗ trợ cho ứng dụng Google Maps trên thiết bị Android. 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 bài viết Giới thiệu về Chế độ xem đường phố.
Lớp StreetViewPanorama mô hình hoá ảnh toàn cảnh trong Chế độ xem đường phố
trong ứng dụng của bạn. Trong giao diện người dùng, ảnh toàn cảnh được biểu thị
bằng đối tượng StreetViewPanoramaFragment hoặc
StreetViewPanoramaView.
Mã mẫu
Kho lưu trữ ApiDemos trên GitHub có các mẫu minh hoạ cách sử dụng Chế độ xem đường phố.
Mẫu Kotlin:
- StreetViewPanoramaBasicDemoActivity: Các kiến thức cơ bản về cách sử dụng Chế độ xem đường phố
- StreetViewPanoramaEventsDemoActivity: Lắng nghe các sự kiện
- StreetViewPanoramaNavigationDemoActivity: Kiểm soát ảnh toàn cảnh trong Chế độ xem đường phố theo phương thức lập trình
- StreetViewPanoramaOptionsDemoActivity: Thay đổi giao diện người dùng và các lựa chọn về cử chỉ
- StreetViewPanoramaViewDemoActivity: Sử dụng
StreetViewPanoramaView(thay vì Fragment) - SplitStreetViewPanoramaAndMapDemoActivity: Sử dụng một hoạt động hiển thị chế độ xem đường phố và bản đồ
Mẫu Java:
- StreetViewPanoramaBasicDemoActivity: Các kiến thức cơ bản về cách sử dụng Chế độ xem đường phố
- StreetViewPanoramaEventsDemoActivity: Lắng nghe các sự kiện
- StreetViewPanoramaNavigationDemoActivity: Kiểm soát ảnh toàn cảnh trong Chế độ xem đường phố theo phương thức lập trình
- StreetViewPanoramaOptionsDemoActivity: Thay đổi giao diện người dùng và các lựa chọn về cử chỉ
- StreetViewPanoramaViewDemoActivity: Sử dụng
StreetViewPanoramaView(thay vì Fragment) - SplitStreetViewPanoramaAndMapDemoActivity: Tạo một hoạt động hiển thị chế độ xem đường phố và bản đồ
Tổng quan về Chế độ xem đường phố trong Maps SDK cho Android
Maps SDK cho Android cung cấp dịch vụ Chế độ xem đường phố để thu thập và thao tác với hình ảnh được dùng trong Chế độ xem đường phố của Google. Hình ảnh được trả về dưới dạng ảnh toàn cảnh.
Mỗi ảnh toàn cảnh trong Chế độ xem đường phố là một hình ảnh hoặc tập hợp 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 (Plate Carrée), chứa 360 độ chế độ xem ngang (toàn bộ ảnh bao quanh) và 180 độ chế độ xem dọc (từ trên xuống dưới). Ả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 quanh bề mặt hai chiều của hình cầu đó.
StreetViewPanorama cung cấp một trình xem kết xuất ảnh toàn cảnh dưới dạng hình cầu có camera ở trung tâm. Bạn có thể thao tác với
StreetViewPanoramaCamera để kiểm soát mức thu phóng
và hướng (độ nghiêng và góc phương vị) của camera.
Bắt đầu
Thiết lập dự án
Làm theo hướng dẫn bắt đầu sử dụng để thiết lập dự án SDK Bản đồ dành cho Android.
Kiểm tra xem ảnh toàn cảnh trong Chế độ xem đường phố có dùng được hay không trước khi thêm ảnh toàn cảnh
Thư viện ứng dụng SDK dịch vụ Google Play có một số mẫu Chế độ xem đường phố mà bạn có thể nhập vào dự án và dùng làm cơ sở để phát triển. Hãy xem phần giới thiệu để biết hướng dẫn về cách nhập các mẫu.
Maps SDK cho Thư viện tiện ích Android
là một thư viện mã nguồn mở gồm các lớp hữu ích cho nhiều
ứng dụng. Kho lưu trữ GitHub có
tiện ích siêu dữ liệu Chế độ xem đường phố.
Tiện ích này kiểm tra xem một vị trí có được Chế độ xem đường phố hỗ trợ hay không. Bạn có thể tránh gặp lỗi khi thêm ảnh toàn cảnh trong Chế độ xem đường phố vào ứng dụng Android bằng cách gọi tiện ích siêu dữ liệu này và chỉ thêm ảnh toàn cảnh trong Chế độ xem đường phố nếu phản hồi là OK.
Sử dụng API
Làm theo hướng dẫn bên dưới để thêm ảnh toàn cảnh trong Chế độ xem đường phố vào một mảnh Android. Đây là cách đơn giản nhất để thêm Chế độ xem đường phố vào ứng dụng của bạn. Sau đó, hãy đọc thêm về các mảnh, khung hiển thị và cách tuỳ chỉnh ảnh toàn cảnh.
Thêm ảnh toàn cảnh trong Chế độ xem đường phố
Làm theo các bước bên dưới để thêm ảnh toàn cảnh trong Chế độ xem đường phố như ảnh này:
Tóm tắt:
- Thêm đối tượng Fragment vào
Hoạt động sẽ xử lý Ảnh toàn cảnh trong
Chế độ xem đường phố. Cách dễ nhất để làm việc này là
thêm phần tử
<fragment>vào tệp bố cục choActivity. - Triển khai giao diện
OnStreetViewPanoramaReadyCallbackvà sử dụng phương thức gọi lạionStreetViewPanoramaReady(StreetViewPanorama)để lấy một trình xử lý cho đối tượngStreetViewPanorama. - Gọi
getStreetViewPanoramaAsync()trên mảnh để đăng ký lệnh gọi lại.
Dưới đây là thông tin chi tiết hơn về từng bước.
Thêm một mảnh
Thêm phần tử <fragment> vào tệp bố cục của hoạt động để xác định đối tượng
Fragment. Trong phần tử này, hãy đặt thuộc tính class thành com.google.android.gms.maps.StreetViewPanoramaFragment (hoặc SupportStreetViewPanoramaFragment).
Dưới đây là ví dụ về một mảnh trong tệp bố cục:
<fragment
android:name="com.google.android.gms.maps.StreetViewPanoramaFragment"
android:id="@+id/streetviewpanorama"
android:layout_width="match_parent"
android:layout_height="match_parent"/>Thêm mã Chế độ xem đường phố
Để làm việc với ảnh toàn cảnh trong Chế độ xem đường phố bên trong ứng dụng,
bạn cần triển khai giao diện
OnStreetViewPanoramaReadyCallback
và đặt một thực thể của lệnh gọi lại trên đối tượng
StreetViewPanoramaFragment hoặc
StreetViewPanoramaView. Hướng dẫn này sử dụng StreetViewPanoramaFragment vì đây là cách đơn giản nhất để thêm Chế độ xem đường phố vào ứng dụng của bạn. Bước đầu tiên là triển khai giao diện gọi lại:
Kotlin
class StreetViewActivity : AppCompatActivity(), OnStreetViewPanoramaReadyCallback { // ... } private fun newView() { val sanFrancisco = LatLng(37.754130, -122.447129) val view = StreetViewPanoramaView( this, StreetViewPanoramaOptions().position(sanFrancisco) ) } private fun setLocationOfThePanorama(streetViewPanorama: StreetViewPanorama) { val sanFrancisco = LatLng(37.754130, -122.447129) // Set position with LatLng only. streetViewPanorama.setPosition(sanFrancisco) // Set position with LatLng and radius. streetViewPanorama.setPosition(sanFrancisco, 20) // Set position with LatLng and source. streetViewPanorama.setPosition(sanFrancisco, StreetViewSource.OUTDOOR) // Set position with LaLng, radius and source. streetViewPanorama.setPosition(sanFrancisco, 20, StreetViewSource.OUTDOOR) streetViewPanorama.location.links.firstOrNull()?.let { link: StreetViewPanoramaLink -> streetViewPanorama.setPosition(link.panoId) } } private fun zoom(streetViewPanorama: StreetViewPanorama) { val zoomBy = 0.5f val camera = StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.panoramaCamera.zoom + zoomBy) .tilt(streetViewPanorama.panoramaCamera.tilt) .bearing(streetViewPanorama.panoramaCamera.bearing) .build() } private fun pan(streetViewPanorama: StreetViewPanorama) { val panBy = 30f val camera = StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.panoramaCamera.zoom) .tilt(streetViewPanorama.panoramaCamera.tilt) .bearing(streetViewPanorama.panoramaCamera.bearing - panBy) .build() } private fun tilt(streetViewPanorama: StreetViewPanorama) { var tilt = streetViewPanorama.panoramaCamera.tilt + 30 tilt = if (tilt > 90) 90f else tilt val previous = streetViewPanorama.panoramaCamera val camera = StreetViewPanoramaCamera.Builder(previous) .tilt(tilt) .build() } private fun animate(streetViewPanorama: StreetViewPanorama) { // Keeping the zoom and tilt. Animate bearing by 60 degrees in 1000 milliseconds. val duration: Long = 1000 val camera = StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.panoramaCamera.zoom) .tilt(streetViewPanorama.panoramaCamera.tilt) .bearing(streetViewPanorama.panoramaCamera.bearing - 60) .build() streetViewPanorama.animateTo(camera, duration) } }
Java
public class StreetViewActivity extends AppCompatActivity implements OnStreetViewPanoramaReadyCallback { // ... } private void newView() { LatLng sanFrancisco = new LatLng(37.754130, -122.447129); StreetViewPanoramaView view = new StreetViewPanoramaView(this, new StreetViewPanoramaOptions().position(sanFrancisco)); } private void setLocationOfThePanorama(StreetViewPanorama streetViewPanorama) { LatLng sanFrancisco = new LatLng(37.754130, -122.447129); // Set position with LatLng only. streetViewPanorama.setPosition(sanFrancisco); // Set position with LatLng and radius. streetViewPanorama.setPosition(sanFrancisco, 20); // Set position with LatLng and source. streetViewPanorama.setPosition(sanFrancisco, StreetViewSource.OUTDOOR); // Set position with LaLng, radius and source. streetViewPanorama.setPosition(sanFrancisco, 20, StreetViewSource.OUTDOOR); StreetViewPanoramaLocation location = streetViewPanorama.getLocation(); if (location != null && location.links != null) { streetViewPanorama.setPosition(location.links[0].panoId); } } private void zoom(StreetViewPanorama streetViewPanorama) { float zoomBy = 0.5f; StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.getPanoramaCamera().zoom + zoomBy) .tilt(streetViewPanorama.getPanoramaCamera().tilt) .bearing(streetViewPanorama.getPanoramaCamera().bearing) .build(); } private void pan(StreetViewPanorama streetViewPanorama) { float panBy = 30; StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.getPanoramaCamera().zoom) .tilt(streetViewPanorama.getPanoramaCamera().tilt) .bearing(streetViewPanorama.getPanoramaCamera().bearing - panBy) .build(); } private void tilt(StreetViewPanorama streetViewPanorama) { float tilt = streetViewPanorama.getPanoramaCamera().tilt + 30; tilt = (tilt > 90) ? 90 : tilt; StreetViewPanoramaCamera previous = streetViewPanorama.getPanoramaCamera(); StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder(previous) .tilt(tilt) .build(); } private void animate(StreetViewPanorama streetViewPanorama) { // Keeping the zoom and tilt. Animate bearing by 60 degrees in 1000 milliseconds. long duration = 1000; StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.getPanoramaCamera().zoom) .tilt(streetViewPanorama.getPanoramaCamera().tilt) .bearing(streetViewPanorama.getPanoramaCamera().bearing - 60) .build(); streetViewPanorama.animateTo(camera, duration); } }
Trong phương thức onCreate()
của Activity, hãy đặt tệp bố cục làm khung hiển thị nội dung. Ví dụ: nếu tệp bố cục có tên là main.xml, hãy sử dụng mã này:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_street_view) val streetViewPanoramaFragment = supportFragmentManager .findFragmentById(R.id.street_view_panorama) as SupportStreetViewPanoramaFragment streetViewPanoramaFragment.getStreetViewPanoramaAsync(this) }
Java
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_street_view); SupportStreetViewPanoramaFragment streetViewPanoramaFragment = (SupportStreetViewPanoramaFragment) getSupportFragmentManager() .findFragmentById(R.id.street_view_panorama); streetViewPanoramaFragment.getStreetViewPanoramaAsync(this); }
Lấy một trình xử lý cho mảnh bằng cách gọi
FragmentManager.findFragmentById(),
truyền mã tài nguyên của phần tử <fragment>.
Xin lưu ý rằng mã tài nguyên R.id.streetviewpanorama sẽ tự động được thêm vào dự án Android khi bạn tạo tệp bố cục.
Sau đó, hãy sử dụng getStreetViewPanoramaAsync()
để đặt lệnh gọi lại trên mảnh.
Kotlin
val streetViewPanoramaFragment = supportFragmentManager .findFragmentById(R.id.street_view_panorama) as SupportStreetViewPanoramaFragment streetViewPanoramaFragment.getStreetViewPanoramaAsync(this)
Java
SupportStreetViewPanoramaFragment streetViewPanoramaFragment = (SupportStreetViewPanoramaFragment) getSupportFragmentManager() .findFragmentById(R.id.street_view_panorama); streetViewPanoramaFragment.getStreetViewPanoramaAsync(this);
Sử dụng phương thức gọi lại
onStreetViewPanoramaReady(StreetViewPanorama)
để truy xuất một thực thể không rỗng của
StreetViewPanorama, sẵn sàng sử dụng.
Kotlin
override fun onStreetViewPanoramaReady(streetViewPanorama: StreetViewPanorama) { val sanFrancisco = LatLng(37.754130, -122.447129) streetViewPanorama.setPosition(sanFrancisco) }
Java
@Override public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) { LatLng sanFrancisco = new LatLng(37.754130, -122.447129); streetViewPanorama.setPosition(sanFrancisco); }
Tìm hiểu thêm về cách định cấu hình trạng thái ban đầu
Không giống như bản đồ, bạn không thể định cấu hình trạng thái ban đầu của ảnh toàn cảnh trong Chế độ xem đường phố thông qua XML. Tuy nhiên, bạn có thể định cấu hình
ảnh toàn cảnh theo phương thức lập trình bằng cách truyền vào đối tượng
StreetViewPanoramaOptions
chứa các lựa chọn mà bạn đã chỉ định.
- Nếu bạn đang sử dụng
StreetViewPanoramaFragment, hãy sử dụngStreetViewPanoramaFragment.newInstance(StreetViewPanoramaOptions options)phương thức nhà máy tĩnh để tạo mảnh và truyền vào các lựa chọn mà bạn đã định cấu hình tuỳ chỉnh. - Nếu bạn đang sử dụng
StreetViewPanoramaView, hãy sử dụngStreetViewPanoramaView(Context, StreetViewPanoramaOptions)hàm khởi tạo và truyền vào các lựa chọn mà bạn đã định cấu hình tuỳ chỉnh.
Kotlin
val sanFrancisco = LatLng(37.754130, -122.447129) val view = StreetViewPanoramaView( this, StreetViewPanoramaOptions().position(sanFrancisco) )
Java
LatLng sanFrancisco = new LatLng(37.754130, -122.447129); StreetViewPanoramaView view = new StreetViewPanoramaView(this, new StreetViewPanoramaOptions().position(sanFrancisco));
Tìm hiểu thêm về StreetViewPanoramaFragment
StreetViewPanoramaFragment là một lớp con của
lớp Fragment Android và cho phép bạn đặt Ảnh toàn cảnh trong Chế độ xem đường phố vào một Fragment Android.
Các đối tượng StreetViewPanoramaFragment đóng vai trò là vùng chứa cho ảnh toàn cảnh và
cung cấp quyền truy cập vào đối tượng StreetViewPanorama.
StreetViewPanoramaView
StreetViewPanoramaView, một lớp con của lớp Android
View, cho phép bạn đặt ảnh toàn cảnh trong Chế độ xem đường phố vào View Android. View đại diện cho một vùng hình chữ nhật trên màn hình và là một khối xây dựng cơ bản cho các ứng dụng Android và tiện ích. Tương tự như a
StreetViewPanoramaFragment, StreetViewPanoramaView đóng vai trò là vùng chứa
cho ảnh toàn cảnh, hiển thị các tính năng cốt lõi thông qua đối tượng StreetViewPanorama. Người dùng lớp này phải chuyển tiếp tất cả các phương thức vòng đời của activity, chẳng hạn như onCreate(), onDestroy(), onResume() và onPause()) đến các phương thức tương ứng trong lớp StreetViewPanoramaView.
Tuỳ chỉnh tính năng do người dùng kiểm soát
Theo mặc định, người dùng có thể sử dụng tính năng sau đây khi xem ảnh toàn cảnh trong Chế độ xem đường phố: kéo, thu phóng và di chuyển đến các ảnh toàn cảnh liền kề. Bạn có thể bật và tắt các cử chỉ do người dùng kiểm soát
thông qua các phương thức trên StreetViewPanorama. Bạn vẫn có thể thay đổi theo phương thức lập trình khi tắt cử chỉ.
Đặt vị trí của ảnh toàn cảnh
Để đặt vị trí của ảnh toàn cảnh trong Chế độ xem đường phố, hãy gọi
StreetViewPanorama.setPosition(), truyền LatLng.
Bạn cũng có thể truyền radius và source làm các tham số không bắt buộc.
Bán kính sẽ hữu ích nếu bạn muốn mở rộng hoặc thu hẹp khu vực mà Chế độ xem đường phố sẽ tìm ảnh toàn cảnh phù hợp. Bán kính bằng 0 có nghĩa là ảnh toàn cảnh phải được liên kết chính xác với LatLng đã chỉ định.
Bán kính mặc định là 50 mét. Nếu có nhiều ảnh toàn cảnh trong khu vực phù hợp, API sẽ trả về kết quả phù hợp nhất.
Nguồn sẽ hữu ích nếu bạn chỉ muốn Chế độ xem đường phố tìm ảnh toàn cảnh ở ngoài trời. Theo mặc định, ảnh toàn cảnh trong Chế độ xem đường phố có thể ở bên trong các địa điểm như bảo tàng, toà nhà công cộng, quán cà phê và doanh nghiệp. Xin lưu ý rằng có thể không có ảnh toàn cảnh ở ngoài trời cho vị trí đã chỉ định.
Kotlin
val sanFrancisco = LatLng(37.754130, -122.447129) // Set position with LatLng only. streetViewPanorama.setPosition(sanFrancisco) // Set position with LatLng and radius. streetViewPanorama.setPosition(sanFrancisco, 20) // Set position with LatLng and source. streetViewPanorama.setPosition(sanFrancisco, StreetViewSource.OUTDOOR) // Set position with LaLng, radius and source. streetViewPanorama.setPosition(sanFrancisco, 20, StreetViewSource.OUTDOOR)
Java
LatLng sanFrancisco = new LatLng(37.754130, -122.447129); // Set position with LatLng only. streetViewPanorama.setPosition(sanFrancisco); // Set position with LatLng and radius. streetViewPanorama.setPosition(sanFrancisco, 20); // Set position with LatLng and source. streetViewPanorama.setPosition(sanFrancisco, StreetViewSource.OUTDOOR); // Set position with LaLng, radius and source. streetViewPanorama.setPosition(sanFrancisco, 20, StreetViewSource.OUTDOOR);
Ngoài ra, bạn có thể đặt vị trí dựa trên mã ảnh toàn cảnh bằng cách truyền panoId đến StreetViewPanorama.setPosition().
Để truy xuất mã ảnh toàn cảnh cho các ảnh toàn cảnh liền kề, trước tiên hãy sử dụng
getLocation()
để truy xuất StreetViewPanoramaLocation.
Đối tượng này chứa mã của ảnh toàn cảnh hiện tại và một mảng các đối tượng StreetViewPanoramaLink, mỗi đối tượng chứa mã của một ảnh toàn cảnh được kết nối với ảnh toàn cảnh hiện tại.
Kotlin
streetViewPanorama.location.links.firstOrNull()?.let { link: StreetViewPanoramaLink -> streetViewPanorama.setPosition(link.panoId) }
Java
StreetViewPanoramaLocation location = streetViewPanorama.getLocation(); if (location != null && location.links != null) { streetViewPanorama.setPosition(location.links[0].panoId); }
Phóng to và thu nhỏ
Bạn có thể thay đổi mức thu phóng theo phương thức lập trình bằng cách đặt
StreetViewPanoramaCamera.zoom.
Việc đặt mức thu phóng thành 1.0 sẽ phóng to hình ảnh lên gấp 2 lần.
Đoạn mã sau đây sử dụng StreetViewPanoramaCamera.Builder() để tạo một camera mới có độ nghiêng và góc phương vị của camera hiện có, đồng thời tăng mức thu phóng lên 50%.
Kotlin
val zoomBy = 0.5f val camera = StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.panoramaCamera.zoom + zoomBy) .tilt(streetViewPanorama.panoramaCamera.tilt) .bearing(streetViewPanorama.panoramaCamera.bearing) .build()
Java
float zoomBy = 0.5f; StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.getPanoramaCamera().zoom + zoomBy) .tilt(streetViewPanorama.getPanoramaCamera().tilt) .bearing(streetViewPanorama.getPanoramaCamera().bearing) .build();
Đặt hướng camera (điểm quan sát)
Bạn có thể xác định hướng của camera trong Chế độ xem đường phố
bằng cách đặt góc phương vị và độ nghiêng trên
StreetViewPanoramaCamera.
- góc phương vị
- Hướng mà camera đang hướng đến, được chỉ định bằng độ theo chiều kim đồng hồ từ hướng bắc thực, xung quanh vị trí camera. Hướng bắc thực là 0, hướng đông là 90, hướng nam là 180, hướng tây là 270.
- nghiêng
- Độ nghiêng lên hoặc xuống theo trục Y. Phạm vi là từ -90 đến 0 đến 90, trong đó -90 là nhìn thẳng xuống, 0 là nhìn thẳng vào đường chân trời và 90 là nhìn thẳng lên. Phương sai được đo từ độ cao mặc định ban đầu của camera, thường là (nhưng không phải lúc nào cũng vậy) nằm ngang. Ví dụ: hình ảnh được chụp trên một ngọn đồi có thể sẽ có độ cao mặc định không nằm ngang.
Đoạn mã sau đây sử dụng StreetViewPanoramaCamera.Builder() để tạo một camera mới có mức thu phóng và độ nghiêng của camera hiện có, đồng thời thay đổi góc phương vị đi 30 độ sang trái.
Kotlin
val panBy = 30f val camera = StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.panoramaCamera.zoom) .tilt(streetViewPanorama.panoramaCamera.tilt) .bearing(streetViewPanorama.panoramaCamera.bearing - panBy) .build()
Java
float panBy = 30; StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.getPanoramaCamera().zoom) .tilt(streetViewPanorama.getPanoramaCamera().tilt) .bearing(streetViewPanorama.getPanoramaCamera().bearing - panBy) .build();
Đoạn mã sau đây nghiêng camera lên trên 30 độ.
Kotlin
var tilt = streetViewPanorama.panoramaCamera.tilt + 30 tilt = if (tilt > 90) 90f else tilt val previous = streetViewPanorama.panoramaCamera val camera = StreetViewPanoramaCamera.Builder(previous) .tilt(tilt) .build()
Java
float tilt = streetViewPanorama.getPanoramaCamera().tilt + 30; tilt = (tilt > 90) ? 90 : tilt; StreetViewPanoramaCamera previous = streetViewPanorama.getPanoramaCamera(); StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder(previous) .tilt(tilt) .build();
Tạo hiệu ứng động cho chuyển động của camera
Để tạo hiệu ứng động cho chuyển động của camera, hãy gọi
StreetViewPanorama.animateTo().
Hiệu ứng động nội suy giữa các thuộc tính camera hiện tại và các thuộc tính camera mới. Nếu bạn muốn chuyển thẳng đến camera mà không có hiệu ứng động, bạn có thể đặt thời lượng thành 0.
Kotlin
// Keeping the zoom and tilt. Animate bearing by 60 degrees in 1000 milliseconds. val duration: Long = 1000 val camera = StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.panoramaCamera.zoom) .tilt(streetViewPanorama.panoramaCamera.tilt) .bearing(streetViewPanorama.panoramaCamera.bearing - 60) .build() streetViewPanorama.animateTo(camera, duration)
Java
// Keeping the zoom and tilt. Animate bearing by 60 degrees in 1000 milliseconds. long duration = 1000; StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.getPanoramaCamera().zoom) .tilt(streetViewPanorama.getPanoramaCamera().tilt) .bearing(streetViewPanorama.getPanoramaCamera().bearing - 60) .build(); streetViewPanorama.animateTo(camera, duration);
Hình ảnh sau đây cho thấy kết quả khi bạn lên lịch chạy hiệu ứng động ở trên sau mỗi 2000 mili giây bằng cách sử dụng
Handler.postDelayed():