+1

Street View trong Map Android API

  • Google street view cung cấp các ảnh 360 độ về những con đường thuộc khu vực mà nó bao phủ. Sau đây, tôi sẽ hướng dẫn các bạn cách sử dụng dịch vụ của Street View để cho người sử dụng app của bạn có được cái nhìn thực tế trên bản đồ, cung cấp cho người dùng những hình ảnh, bối cảnh thực tế về cái địa chỉ mà họ đang quan tâm. Với Google Maps Android API v2 thì phạm vi khả dụng giống như trên Google Maps app trên các thiết bị android. BẠN có thể tìm hiểu nhiều hơn về Street View và các khu vực được hỗ trợ trong About Street View. Để tạo được ứng dụng có Street View thì app của bạn chắc chắn phải sử dụng model class StreetViewPanorama và trong UI thì một panorama (bức ảnh toàn cảnh) được thể hiện bởi đối tượng StreetViewPanoramaFragment hoặc StreetViewPanoramaView.

  • Code demo về Street View bạn có thể lấy về từ đây StreetViewPanoramaBasicDemoActivity: Cơ bản về cách sử dụng Street View StreetViewPanoramaEventsDemoActivity: Lắng nghe các sự kiện StreetViewPanoramaNavigationDemoActivity: Điều khiển Street View Navigation StreetViewPanoramaOptionsDemoActivity: Thay đổi UI và tùy chỉnh gesture StreetViewPanoramaViewDemoActivity: Sử dụng StreetViewPanoramaView (thay vì một Fragment)

  • Tổng quan về Street View trong Google Maps Android API:Các API của Google Maps Android cung cấp một dịch vụ Street View cho việc thu thập và thao tác các hình ảnh được sử dụng trong Google Street View. Hình ảnh được trả về như ảnh toàn cảnh(panoramas).Mỗi Street View toàn cảnh là một ảnh, hoặc một bộ ảnh, cung cấp một view hiển thị đầy đủ 360 độ ở một địa điểm. Hình ảnh phù hợp với mọi góc độ, trong đó có thể xem 360 độ theo chiều ngang và 180 độ theo chiều dọc. StreetViewPanorama cung cấp một viewer mà chúng ta có thể xem các ảnh Panorama từ trung tâm của quả cầu. Bạn có thể thao tác các StreetViewPanoramaCamera để điều khiển zoom và định hướng (độ nghiêng và bearing) của camera.

  • Sử dụng API: Thực hiện theo các hướng dẫn dưới đây để thêm Street View panorama đến một fragment Android. Đó là cách đơn giản nhất để thêm Street View đến ứng dụng của bạn. Sau đó, đọc thêm về fragment, views, và tùy chỉnh các panorama.

    1. Thêm một Street View panorama: Thêm một đối tượng Fragment đến Activity và xử lý Street View panorama. Cách dễ nhất để làm là thêm một phần tử <fragment> đến layout của Activity.
    2. Sau đó implement OnStreetViewPanoramaReadyCallback interface và sử dụng phương thức callback onStreetViewPanoramaReady(StreetViewPanorama) để lấy một đối tượng StreetViewPanorama để xử lý.
    3. Gọi getStreetViewPanoramaAsync() trên fragment để đăng kí callback. Dưới đây sẽ chi tiết hơn về các bước thực hiện.

    Đầu tiên thêm một fragment: Thêm một phần tử <fragment> đến layout file của activity để định nghĩa một đối tượng Fragment. Trong phần tử này, cài đặt thuộc tính com.google.android.gms.maps.StreetViewPanoramaFragment (hoặc SupportStreetViewPanoramaFragment).

<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 Street View code: Để làm việc với Street View panorama bên trong app của bạn, bạn cần implement interface OnStreetViewPanoramaReadyCallback cà thiết lập một instance của callback trên một đối tượng StreetViewPanoramaFragment hoặc StreetViewPanoramaView. Bài hướng dẫn này sử dụng StreetViewPanoramaFragment, bởi vì đó là cách đơn giản nhất để thêm Street View vào trong app của bạn. Bước đầu tiên là implement callback interface:

public class MainActivity extends FragmentActivity
    implements OnStreetViewPanoramaReadyCallback {
...
}

Trong phương thức onCreate() của activity, cài đặt contentview như sau (với layout là main.xml):

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ...
}

Xử lý tiếp theo là gọi FragmentManager.findFragmentById(), thông qua resource ID của phần tử <fragment>. Chú ý resource ID R.id.streetviewpanorama được tự động thêm khi build layout file. SAu đó sử dụng getStreetViewPanoramaAsync() để thiết lập callback trên fragment.

StreetViewPanoramaFragment streetViewPanoramaFragment =
    (StreetViewPanoramaFragment) getFragmentManager()
        .findFragmentById(R.id.streetviewpanorama);
streetViewPanoramaFragment.getStreetViewPanoramaAsync(this);

CHÚ Ý: getStreetViewPanoramaAsync() phải được gọi từ main thread, và callback sẽ được thực thi trong main thread. Nếu dịch vụ Google Play không được cài đặt trên thiết bị của bạn, thì callback sẽ không được kích hoạt cho đến khi người dùng cài đặt các dịch vụ Play. Thêm nữa về cấu hình ban đầu: Không giống như một bản đồ, không thể cấu hình Street View panorama thông qua XML. Tuy nhiên, bạn có thể cấu hình panorama bằng cách thông qua một đối tượng StreetViewPanoramaOptions với các tùy chọn của bạn. Nếu bạn đang sử dụng StreetViewPanoramaFragment, thì sử dụng phương thức static StreetViewPanoramaFragment.newInstance(StreetViewPanoramaOptions options) để khởi tạo fragment và dựa vào đó để tuỳ chỉnh. Nếu bạn đang sử dụng StreetViewPanoramaView, thì sử dụng StreetViewPanoramaView(Context, StreetViewPanoramaOptions) constructor và dựa vào nó để cấu hình.

mSvpView = new StreetViewPanoramaView(this,
  new StreetViewPanoramaOptions().position(SAN_FRAN));
  • Tuỳ chỉnh để người dùng có thể điều khiển các chức năng: Theo mặc định, các chức năng sau đây có sẵn cho người dùng khi xem Street View panorama: panning, zoom, và di chuyển đến vị trí liền kề. Bạn có thể kích hoạt và vô hiệu hóa những chức năng sử dụng điều khiển thông qua phương thức trên StreetViewPanorama. Chức năng vẫn có thể sử dụng khi gesture bị vô hiệu hoá.

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí