Chế độ xem phố

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

Chế độ xem đường phố của Google cung cấp ảnh toàn cảnh 360 độ từ các tuyến đườ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 có ý nghĩa về điểm đến hoặc bất kỳ địa điểm nào họ quan tâm.

Phạm vi cung cấp thông qua Google Maps Android API phiên bản 2 giống với phạm vi cung cấp của ứ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 Giới thiệu về Chế độ xem đường phố.

Lớp StreetViewPanorama lập mô hình ả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 bao gồm các mẫu minh hoạ cách sử dụng Chế độ xem đường phố.

Mẫu Kotlin:

Mẫu Java:

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ố để lấy 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 một nhóm hình ảnh cung cấp chế độ xem 360 độ đầy đủ từ một vị trí duy nhất. Hình ảnh tuân thủ phép chiếu hình chữ nhật (Plate Carrée), bao gồm chế độ xem ngang 360 độ (bao quanh hoàn toàn) và chế độ xem dọc 180 độ (từ thẳng lên đến thẳng xuống). Ảnh toàn cảnh 360 độ thu được xác định một phép chiếu trên hình cầu với hình ảnh được bao bọc trên 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 ở giữa. Bạn có thể thao tác với StreetViewPanoramaCamera để điều khiển 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 Android Maps SDK cho Android.

Kiểm tra xem có ảnh toàn cảnh trong Chế độ xem đường phố 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 bao gồm một vài mẫu Chế độ xem đường phố mà bạn có thể nhập vào dự án của mình và sử dụng làm cơ sở để phát triển. Xem phần giới thiệu để biết hướng dẫn về cách nhập mẫu.

Maps SDK cho Thư viện tiện ích Android là một thư viện nguồn mở gồm các lớp hữu ích cho nhiều ứng dụng. Trong kho lưu trữ GitHub có tiện ích siêu dữ liệu của 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 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. Đó 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ề mảnh, khung hiển thị và tuỳ chỉnh ảnh toàn cảnh.

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

Hãy làm theo các bước dưới đây để thêm ảnh toàn cảnh trong Chế độ xem đường phố như sau:

Bản minh hoạ ảnh toàn cảnh trong Chế độ xem đường phố

Tóm tắt:

  1. Thêm đối tượng Fragment vào Activity 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 cho Activity.
  2. Triển khai giao diện OnStreetViewPanoramaReadyCallback và sử dụng phương thức gọi lại onStreetViewPanoramaReady(StreetViewPanorama) để lấy đối tượng StreetViewPanorama.
  3. 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 về từng bước.

Thêm 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 chế độ xem nội dung. Ví dụ: nếu tệp bố cục có tên là main.xml, hãy sử dụng mã sau:

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);
}


      

Xử lý mảnh bằng cách gọi FragmentManager.findFragmentById(), truyền mã tài nguyên của phần tử <fragment>. Lưu ý rằng mã nhận dạng 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ác 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);
}


      

Thông tin 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 một đối tượng StreetViewPanoramaOptions chứa các tuỳ chọn mà bạn 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));

      

Thông tin khác về StreetViewPanoramaFragment

StreetViewPanoramaFragment là một lớp con của lớp Android Fragment và cho phép bạn đặt ảnh toàn cảnh trong Chế độ xem đường phố vào một mảnh Android. Đố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 View của Android, cho phép bạn đặt ảnh toàn cảnh trong Chế độ xem đường phố vào một View của Android. View đại diện cho một vùng hình chữ nhật trên màn hình và là thành phần cơ bản cho các ứng dụng Android và tiện ích. Tương tự như 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 các tính năng sau khi xem ảnh toàn cảnh trong Chế độ xem đường phố: xoay, thu phóng và di chuyển đến các ảnh toàn cảnh lân cận. 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 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 dưới dạng 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 được 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, thì API sẽ trả về kết quả phù hợp nhất.

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 ở ngoài trời. Theo mặc định, ảnh toàn cảnh trong Chế độ xem đường phố có thể là 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 ảnh toàn cảnh ngoài trời có thể không tồn tại cho vị trí được 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ận dạng ảnh toàn cảnh bằng cách truyền panoId đến StreetViewPanorama.setPosition().

Để truy xuất mã nhận dạng ảnh toàn cảnh cho ả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ã nhận dạng 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ã nhận dạng 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. Nếu bạn đặt mức thu phóng thành 1,0, hình ảnh sẽ được phóng to gấp 2 lần.

Đoạn mã sau sử dụng StreetViewPanoramaCamera.Builder() để tạo một camera mới có độ nghiêng và hướng 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 (góc nhìn)

Bạn có thể xác định hướng của camera Chế độ xem đường phố bằng cách đặt góc phương vị và độ nghiêng trên StreetViewPanoramaCamera.

bearing
Hướng mà camera đang chỉ, được chỉ định bằng độ theo chiều kim đồng hồ từ hướng bắc thực, xung quanh quỹ tích camera. Hướng chính bắ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 của 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 lường từ độ cao mặc định ban đầu của camera, thường (nhưng không phải lúc nào cũng) là phương ngang phẳng. Ví dụ: một hình ảnh được chụp trên một ngọn đồi có thể sẽ có độ dốc mặc định không nằm ngang.

Đoạn mã sau đây sử dụng StreetViewPanoramaCamera.Builder() để tạo một máy ảnh mới có độ thu phóng và độ nghiêng của máy ảnh hiện có, đồng thời thay đổi góc phương vị 30 độ sang bên 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 ảnh động cho chuyển động của camera

Để tạo ảnh động cho các chuyển động của camera, hãy gọi StreetViewPanorama.animateTo(). Ảnh động nội suy giữa các thuộc tính camera hiện tại và thuộc tính camera mới. Nếu muốn chuyển thẳng đến máy ảnh mà không có ảnh độ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 để ảnh động ở trên chạy sau mỗi 2000 mili giây, sử dụng Handler.postDelayed():

Bản minh hoạ ảnh động ảnh toàn cảnh trong Chế độ xem đường phố