Máy ảnh và chế độ xem

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

Bản đồ trong SDK Maps dành cho Android có thể được nghiêng và xoay bằng các cử chỉ dễ dàng, cho phép người dùng điều chỉnh bản đồ theo hướng phù hợp với họ. Ở bất kỳ mức thu phóng nào, bạn có thể xoay bản đồ hoặc thay đổi góc nhìn của bản đồ với độ trễ rất ít nhờ vào mức sử dụng nhỏ hơn của các ô bản đồ dựa trên vectơ.

Mã mẫu

Kho lưu trữ Apidemos trên GitHub bao gồm một mẫu minh hoạ các tính năng của máy ảnh:

Giới thiệu

Giống như Google Maps trên web, SDK Maps dành cho Android thể hiện bề mặt của thế giới (hình cầu) trên màn hình của thiết bị (một mặt phẳng) bằng cách sử dụng phép chiếu Mercator. Theo hướng đông và hướng tây, bản đồ lặp lại vô hạn khi thế giới tự xoay quanh mình. Theo hướng bắc và nam, bản đồ sẽ bị giới hạn trong khoảng 85 độ bắc và 85 độ nam.

Lưu ý: Phép chiếu Mercator có chiều rộng hữu hạn theo chiều dọc nhưng chiều cao vô hạn về vĩ độ. Chúng tôi "cắt" hình ảnh bản đồ cơ sở bằng cách sử dụng phép chiếu Mercator ở khoảng +/- 85 độ để tạo hình dạng bản đồ hình vuông, cho phép lựa chọn thẻ thông tin dễ dàng hơn.

SDK bản đồ dành cho Android cho phép bạn thay đổi điểm nhìn của người dùng trên bản đồ bằng cách sửa đổi máy ảnh của bản đồ.

Các thay đổi đối với máy ảnh sẽ không làm thay đổi điểm đánh dấu, lớp phủ hay đồ hoạ khác mà bạn đã thêm, mặc dù bạn có thể muốn thay đổi những điểm bổ sung cho phù hợp hơn với khung hiển thị mới.

Vì có thể theo dõi các cử chỉ của người dùng trên bản đồ, nên bạn có thể thay đổi bản đồ để phản hồi yêu cầu của người dùng. Ví dụ: phương thức gọi lại OnMapClickListener.onMapClick() phản hồi chỉ bằng một lần nhấn trên bản đồ. Vì phương thức này nhận được vĩ độ và kinh độ của vị trí nhấn, nên bạn có thể phản hồi bằng cách kéo hoặc thu phóng tới điểm đó. Có các phương thức tương tự để phản hồi thao tác nhấn vào bong bóng của một điểm đánh dấu hoặc để phản hồi thao tác kéo trên một điểm đánh dấu.

Bạn cũng có thể theo dõi chuyển động của máy ảnh để ứng dụng của bạn sẽ nhận được thông báo khi máy ảnh bắt đầu di chuyển, hiện đang di chuyển hoặc ngừng di chuyển. Để biết thông tin chi tiết, hãy xem hướng dẫn về sự kiện thay đổi camera.

Vị trí máy ảnh

Chế độ xem bản đồ được mô hình hoá như một máy ảnh nhìn xuống trên một mặt phẳng phẳng. Vị trí của máy ảnh (và do đó việc hiển thị của bản đồ) được chỉ định bởi các thuộc tính sau: mục tiêu (vĩ độ/kinh độ của vị trí), góc trục, nghiêngthu phóng.

Sơ đồ thuộc tính của máy ảnh

Mục tiêu (vị trí)

Mục tiêu của máy ảnh là vị trí của trung tâm bản đồ, được xác định dưới dạng toạ độ theo vĩ độ và kinh độ.

Vĩ độ có thể nằm trong khoảng từ -85 đến 85 độ. Các giá trị trên hoặc dưới phạm vi này sẽ được gắn với giá trị gần nhất trong phạm vi này. Ví dụ: việc chỉ định vĩ độ là 100 sẽ đặt giá trị thành 85. Kinh độ nằm trong khoảng từ -180 đến 180 độ. Các giá trị trên hoặc dưới phạm vi này sẽ được gói sao cho nằm trong phạm vi (-180, 180). Ví dụ: 480, 840 và 1200 đều sẽ được gói thành 120 độ.

Góc phương vị (hướng)

Góc phương tiện máy ảnh chỉ định hướng la bàn, được đo bằng độ từ phía bắc thực, tương ứng với cạnh trên cùng của bản đồ. Nếu bạn vẽ một đường dọc từ tâm bản đồ đến cạnh trên cùng của bản đồ, góc phương vị sẽ tương ứng với hướng của máy ảnh (được đo bằng độ) so với hướng bắc thực.

Góc phương vị bằng 0 có nghĩa là đỉnh của bản đồ trỏ về hướng Bắc thực. Giá trị góc phương vị 90 có nghĩa là điểm trên bản đồ đến hạn về phía đông (90 độ trên la bàn). Giá trị 180 có nghĩa là điểm cao nhất của các điểm trên bản đồ nằm ở phía nam.

API Maps cho phép bạn thay đổi phương hướng của bản đồ. Ví dụ: một người lái xe ô tô thường quay bản đồ đường để căn chỉnh cho phù hợp với hướng đi của họ, trong khi người đi bộ đường dài sử dụng bản đồ và la bàn thường định hướng bản đồ để một đường thẳng đứng chỉ về phía Bắc.

Nghiêng (góc xem)

Độ nghiêng xác định vị trí của máy ảnh trên một vòng cung ngay trên vị trí trung tâm của bản đồ, được đo bằng độ tính từ điểm thấp nhất (hướng trỏ ngay bên dưới máy ảnh). Giá trị 0 tương ứng với máy ảnh được đặt thẳng xuống. Các giá trị lớn hơn 0 tương ứng với máy ảnh được đặt hướng về phía đường chân trời theo số độ được chỉ định. Khi bạn thay đổi góc xem, bản đồ sẽ xuất hiện dưới dạng phối cảnh, với các đối tượng ở xa xuất hiện nhỏ hơn và các đối tượng ở gần hiển thị lớn hơn. Các hình minh hoạ sau đây minh hoạ điều này.

Trong các hình ảnh bên dưới, góc xem là 0 độ. Hình ảnh đầu tiên cho thấy sơ đồ minh hoạ; vị trí 1 là vị trí máy ảnh và vị trí 2 là vị trí hiện tại trên bản đồ. Bản đồ thu được sẽ hiển thị bên dưới.

Ảnh chụp màn hình bản đồ với máy ảnh được đặt ở góc xem 0 độ, ở mức thu phóng 18 độ.
Bản đồ sẽ hiển thị với góc nhìn mặc định của camera.
Sơ đồ cho thấy vị trí mặc định của máy ảnh, ngay trên vị trí trên bản đồ, ở góc 0 độ.
Góc xem mặc định của máy ảnh.

Trong các hình ảnh bên dưới, góc xem là 45 độ. Lưu ý rằng máy ảnh di chuyển một nửa theo một vòng cung giữa khoảng không thẳng (0 độ) và mặt đất (90 độ) để đến vị trí 3. Máy ảnh vẫn đang trỏ vào điểm trung tâm của bản đồ, nhưng khu vực được biểu thị bằng đường ở vị trí 4 hiện đã hiển thị.

Ảnh chụp màn hình bản đồ với máy ảnh được đặt ở góc xem 45 độ, ở mức thu phóng 18 độ.
Bản đồ hiển thị với góc xem là 45 độ.
Sơ đồ cho thấy góc nhìn của camera được đặt thành 45 độ, với mức thu phóng vẫn được đặt là 18.
Góc xem của camera là 45 độ.

Bản đồ trong ảnh chụp màn hình này vẫn được căn giữa trên cùng một điểm như trong bản đồ gốc, nhưng các đối tượng khác đã xuất hiện ở phía trên cùng của bản đồ. Khi bạn tăng góc vượt quá 45 độ, các đối tượng giữa máy ảnh và vị trí bản đồ xuất hiện lớn hơn tương ứng, trong khi các đối tượng nằm ngoài vị trí bản đồ sẽ xuất hiện nhỏ hơn theo tỷ lệ, tạo ra hiệu ứng ba chiều.

Zoom (thu phóng)

Mức thu phóng của máy ảnh sẽ xác định tỷ lệ của bản đồ. Ở mức thu phóng lớn hơn, người dùng có thể nhìn thấy nhiều chi tiết hơn trên màn hình, trong khi ở mức thu phóng nhỏ hơn, nhiều người có thể nhìn thấy nhiều thế giới hơn trên màn hình. Ở mức thu phóng 0, tỷ lệ của bản đồ sao cho toàn bộ thế giới có chiều rộng khoảng 256 dp (các pixel không phụ thuộc vào mật độ).

Tăng mức thu phóng thêm 1 sẽ nhân đôi chiều rộng của thế giới trên màn hình. Do đó, ở mức thu phóng N, chiều rộng của thế giới là khoảng 256 * 2N dp. Ví dụ: ở mức thu phóng 2, toàn bộ thế giới có chiều rộng xấp xỉ 1024 dp.

Mức thu phóng không cần phải là số nguyên. Phạm vi mức thu phóng mà bản đồ cho phép phụ thuộc vào một số yếu tố như mục tiêu, loại bản đồ và kích thước màn hình. Mọi số nằm ngoài phạm vi sẽ được chuyển đổi thành giá trị hợp lệ gần nhất tiếp theo, có thể là mức thu phóng tối thiểu hoặc mức thu phóng tối đa. Danh sách sau đây cho thấy mức độ chi tiết gần đúng mà bạn có thể thấy ở mỗi mức thu phóng:

  • 1: Thế giới
  • 5: Vùng đất/lục địa
  • 10: Thành phố
  • 15: Đường phố
  • 20: Toà nhà
Các hình ảnh sau đây cho thấy hình ảnh của các mức thu phóng khác nhau:
Ảnh chụp màn hình bản đồ ở mức thu phóng 5
Bản đồ ở mức thu phóng 5.
Ảnh chụp màn hình bản đồ ở mức thu phóng 15
Bản đồ ở mức thu phóng 15.
Ảnh chụp màn hình bản đồ ở mức thu phóng 20
Bản đồ ở mức thu phóng 20.

Di chuyển camera

API Maps cho phép bạn thay đổi phần nào của thế giới sẽ xuất hiện trên bản đồ. Bạn có thể thực hiện việc này bằng cách thay đổi vị trí của máy ảnh (thay vì di chuyển bản đồ).

Khi thay đổi camera, bạn có thể tạo ảnh động cho chuyển động của camera. Ảnh động nội suy giữa các thuộc tính máy ảnh hiện tại và các thuộc tính mới của máy ảnh. Bạn cũng có thể kiểm soát thời lượng của ảnh động.

Để thay đổi vị trí của máy ảnh, bạn phải chỉ định vị trí bạn muốn di chuyển máy ảnh bằng cách sử dụng CameraUpdate. API Maps cho phép bạn tạo nhiều loại CameraUpdate khác nhau bằng cách sử dụng CameraUpdateFactory. Bạn có thể chọn trong các phương án sau đây:

Thay đổi mức thu phóng và đặt mức thu phóng tối thiểu/tối đa

CameraUpdateFactory.zoomIn()CameraUpdateFactory.zoomOut() cung cấp cho bạn CameraUpdate thay đổi mức thu phóng thêm 1, 0 trong khi vẫn giữ nguyên tất cả các thuộc tính khác.

CameraUpdateFactory.zoomTo(float) cung cấp cho bạn một CameraUpdate thay đổi mức thu phóng thành giá trị đã cho, trong khi vẫn giữ nguyên tất cả các thuộc tính khác.

CameraUpdateFactory.zoomBy(float)CameraUpdateFactory.zoomBy(float, Point) cung cấp cho bạn CameraUpdate tăng (hoặc giảm nếu giá trị là âm) mức thu phóng theo giá trị đã cho. Sau đó, điểm này sẽ sửa điểm đã cho trên màn hình để điểm này vẫn ở cùng một vị trí (vĩ độ/kinh độ) và có thể thay đổi vị trí của camera để đạt được điều này.

Bạn có thể thấy hữu ích khi đặt mức thu phóng tối thiểu và/hoặc tối đa ưu tiên. Ví dụ: thuộc tính này rất hữu ích khi kiểm soát trải nghiệm của người dùng nếu ứng dụng của bạn cho thấy một vùng được xác định xung quanh một địa điểm yêu thích, hoặc nếu bạn đang sử dụng lớp phủ xếp kề tuỳ chỉnh với một tập hợp các mức thu phóng có giới hạn.

Kotlin



private lateinit var map: GoogleMap

    map.setMinZoomPreference(6.0f)
    map.setMaxZoomPreference(14.0f)

      

Java


private GoogleMap map;
    map.setMinZoomPreference(6.0f);
    map.setMaxZoomPreference(14.0f);

      

Xin lưu ý rằng một số cân nhắc về mặt kỹ thuật có thể ngăn API cho phép người dùng thu phóng quá thấp hoặc quá cao. Ví dụ: vệ tinh hoặc địa hình có thể có mức thu phóng tối đa thấp hơn ô bản đồ cơ sở.

Thay đổi vị trí máy ảnh

Có hai phương thức thuận tiện cho những thay đổi phổ biến về vị trí. CameraUpdateFactory.newLatLng(LatLng) cung cấp cho bạn một CameraUpdate thay đổi vĩ độ và kinh độ của máy ảnh, trong khi vẫn giữ nguyên tất cả các thuộc tính khác. CameraUpdateFactory.newLatLngZoom(LatLng, float) cung cấp cho bạn một CameraUpdate thay đổi vĩ độ, kinh độ và mức thu phóng của máy ảnh, trong khi vẫn giữ nguyên mọi thuộc tính khác.

Để linh hoạt hoàn toàn trong việc thay đổi vị trí máy ảnh, hãy sử dụng CameraUpdateFactory.newCameraPosition(CameraPosition) cung cấp cho bạn CameraUpdate để di chuyển máy ảnh đến một vị trí nhất định. Bạn có thể lấy CameraPosition trực tiếp bằng cách sử dụng new CameraPosition() hoặc qua CameraPosition.Builder sử dụng new CameraPosition.Builder().

Kéo (cuộn)

CameraUpdateFactory.scrollBy(float, float) cung cấp cho bạn một CameraUpdate thay đổi vĩ độ và kinh độ của máy ảnh để bản đồ di chuyển theo số pixel được chỉ định. Giá trị x dương làm cho máy ảnh di chuyển sang phải, để bản đồ dường như đã di chuyển sang trái. Giá trị y dương làm cho máy ảnh di chuyển xuống, vì vậy, bản đồ dường như đã di chuyển lên trên. Ngược lại, giá trị x âm khiến máy ảnh di chuyển sang trái, do đó, bản đồ dường như đã di chuyển sang phải và giá trị y âm làm cho máy ảnh di chuyển lên. Thao tác cuộn tương ứng với hướng hiện tại của máy ảnh. Ví dụ: nếu camera có góc phương vị 90 độ, thì hướng đông là "hướng lên".

Đặt ranh giới

Thiết lập ranh giới của bản đồ

Đôi khi, bạn nên di chuyển máy ảnh để toàn bộ khu vực bạn quan tâm có thể được nhìn thấy ở mức thu phóng lớn nhất có thể. Ví dụ: nếu bạn đang hiển thị tất cả các trạm xăng trong vòng 5 dặm tính từ vị trí hiện tại của người dùng, bạn có thể muốn di chuyển camera để tất cả đều hiển thị trên màn hình. Để thực hiện việc này, trước tiên, hãy tính toán LatLngBounds mà bạn muốn hiển thị trên màn hình. Sau đó, bạn có thể dùng CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds, int padding) để có được một CameraUpdate thay đổi vị trí máy ảnh sao cho LatLngBounds đã cho khớp hoàn toàn trong bản đồ, có tính đến khoảng đệm (tính bằng pixel) được chỉ định. CameraUpdate được trả về đảm bảo rằng khoảng cách (tính bằng pixel) giữa các giới hạn đã cho và cạnh của bản đồ sẽ ít nhất bằng khoảng đệm đã chỉ định. Hãy lưu ý rằng cả độ nghiêng và hệ số góc của bản đồ đều sẽ bằng 0.

Kotlin



val australiaBounds = LatLngBounds(
    LatLng((-44.0), 113.0),  // SW bounds
    LatLng((-10.0), 154.0) // NE bounds
)
map.moveCamera(CameraUpdateFactory.newLatLngBounds(australiaBounds, 0))

      

Java


LatLngBounds australiaBounds = new LatLngBounds(
    new LatLng(-44, 113), // SW bounds
    new LatLng(-10, 154)  // NE bounds
);
map.moveCamera(CameraUpdateFactory.newLatLngBounds(australiaBounds, 0));

      

Căn giữa bản đồ trong một khu vực

Trong một số trường hợp, bạn nên căn giữa camera trong một ranh giới thay vì bao gồm các đường viền cực đại. Ví dụ: để căn giữa máy ảnh vào một quốc gia trong khi vẫn duy trì mức thu phóng không đổi. Trong trường hợp này, bạn có thể sử dụng phương thức tương tự, bằng cách tạo LatLngBounds và sử dụng CameraUpdateFactory.newLatLngZoom(LatLng latLng, float zoom) với LatLngBounds.getCenter(). Phương thức getCenter() sẽ trả về trung tâm địa lý của LatLngBounds.

Kotlin



val australiaBounds = LatLngBounds(
    LatLng((-44.0), 113.0),  // SW bounds
    LatLng((-10.0), 154.0) // NE bounds
)
map.moveCamera(CameraUpdateFactory.newLatLngZoom(australiaBounds.center, 10f))

      

Java


LatLngBounds australiaBounds = new LatLngBounds(
    new LatLng(-44, 113), // SW bounds
    new LatLng(-10, 154)  // NE bounds
);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(australiaBounds.getCenter(), 10));

      

Khi phương thức nạp chồng phương thức, newLatLngBounds(boundary, width, height, padding), bạn có thể chỉ định chiều rộng và chiều cao tính bằng pixel cho hình chữ nhật, với ý định rằng các chiều rộng và chiều cao này tương ứng với kích thước của bản đồ. Hình chữ nhật này được định vị sao cho tâm của hình chữ nhật đó giống với tâm của khung hiển thị bản đồ (để nếu kích thước được chỉ định giống với kích thước của khung hiển thị bản đồ, thì hình chữ nhật đó trùng với khung hiển thị của bản đồ). CameraUpdate được trả về sẽ di chuyển camera sao cho LatLngBounds được chỉ định nằm giữa màn hình trong hình chữ nhật đã cho ở mức thu phóng lớn nhất có thể, có tính đến khoảng đệm cần thiết.

Lưu ý: Chỉ sử dụng phương thức đơn giản hơn newLatLngBounds(boundary, padding) để tạo CameraUpdate nếu phương thức này được dùng để di chuyển máy ảnh sau khi bản đồ trải qua quá trình bố cục. Trong quá trình bố cục, API sẽ tính toán các ranh giới hiển thị của bản đồ cần thiết để chiếu hộp giới hạn một cách chính xác. Để so sánh, bạn có thể sử dụng CameraUpdate mà phương thức phức tạp hơn newLatLngBounds(boundary, width, height, padding) trả về bất cứ lúc nào, ngay cả trước khi bản đồ trải qua quá trình bố cục, vì API sẽ tính toán ranh giới hiển thị dựa trên các đối số mà bạn truyền.

Hạn chế việc kéo người dùng đến một vùng nhất định

Trong các trường hợp trên, bạn sẽ đặt các ranh giới của bản đồ nhưng sau đó người dùng có thể cuộn hoặc xoay ra ngoài các ranh giới này. Thay vào đó, bạn nên ràng buộc các giới hạn trung tâm vĩ độ/lng của tiêu điểm bản đồ (mục tiêu máy ảnh) để người dùng chỉ có thể cuộn và xoay trong những giới hạn này. Ví dụ: một ứng dụng bán lẻ tại một trung tâm mua sắm hoặc sân bay có thể muốn ràng buộc bản đồ ở một giới hạn cụ thể, cho phép người dùng cuộn và xoay trong các giới hạn đó.

Kotlin



// Create a LatLngBounds that includes the city of Adelaide in Australia.
val adelaideBounds = LatLngBounds(
    LatLng(-35.0, 138.58),  // SW bounds
    LatLng(-34.9, 138.61) // NE bounds
)

// Constrain the camera target to the Adelaide bounds.
map.setLatLngBoundsForCameraTarget(adelaideBounds)

      

Java


// Create a LatLngBounds that includes the city of Adelaide in Australia.
LatLngBounds adelaideBounds = new LatLngBounds(
    new LatLng(-35.0, 138.58), // SW bounds
    new LatLng(-34.9, 138.61)  // NE bounds
);

// Constrain the camera target to the Adelaide bounds.
map.setLatLngBoundsForCameraTarget(adelaideBounds);

      

Sơ đồ dưới đây minh hoạ một trường hợp máy ảnh mục tiêu bị hạn chế ở một khu vực lớn hơn khung nhìn một chút. Người dùng có thể cuộn và kéo, miễn là mục tiêu của máy ảnh vẫn nằm trong khu vực bị giới hạn. Chữ thập biểu thị mục tiêu máy ảnh:

Sơ đồ cho thấy LatLngBounds của máy ảnh lớn hơn khung nhìn.

Bản đồ luôn lấp đầy khung nhìn, ngay cả khi khung nhìn hiển thị các khu vực nằm ngoài ranh giới đã xác định. Ví dụ: nếu bạn đặt mục tiêu máy ảnh ở một góc của khu vực bị giới hạn, thì khu vực bên ngoài góc sẽ hiển thị trong khung nhìn nhưng người dùng không thể cuộn thêm vào khu vực đó. Sơ đồ sau đây minh hoạ trường hợp này. Hình chữ thập biểu thị mục tiêu máy ảnh:

Sơ đồ cho thấy mục tiêu máy ảnh được đặt ở góc dưới cùng bên phải của máy ảnh LatLngBounds.

Trong sơ đồ dưới đây, mục tiêu máy ảnh có các giới hạn rất hạn chế, khiến người dùng có rất ít cơ hội để cuộn hoặc xoay bản đồ. Hình chữ thập đại diện cho mục tiêu của máy ảnh:

Sơ đồ cho thấy LatLngBounds của máy ảnh nhỏ hơn khung nhìn.

Đang cập nhật chế độ xem camera

Để áp dụng CameraUpdate cho bản đồ, bạn có thể di chuyển camera ngay lập tức hoặc tạo ảnh động cho camera một cách mượt mà. Để di chuyển camera ngay lập tức bằng CameraUpdate đã cho, bạn có thể gọi GoogleMap.moveCamera(CameraUpdate).

Bạn có thể làm cho trải nghiệm người dùng hài lòng hơn, đặc biệt là đối với các di chuyển ngắn, bằng cách tạo ảnh động cho thay đổi đó. Để thực hiện việc này thay vì gọi GoogleMap.moveCamera, hãy gọi GoogleMap.animateCamera. Bản đồ sẽ di chuyển suôn sẻ sang các thuộc tính mới. Dạng chi tiết nhất của phương thức này, GoogleMap.animateCamera(cameraUpdate, duration, callback), cung cấp 3 đối số:

cameraUpdate
CameraUpdate mô tả vị trí di chuyển camera.
callback
Đối tượng triển khai GoogleMap.CancellableCallback. Giao diện chung dùng để xử lý các tác vụ này xác định hai phương thức "onCancel()" và "onFinish()". Đối với ảnh động, các phương thức này được gọi trong những trường hợp sau:
onFinish()
Được gọi nếu ảnh động hoàn tất mà không bị gián đoạn.
onCancel()

Được gọi nếu ảnh động bị gián đoạn bằng cách gọi stopAnimation() hoặc bắt đầu một chuyển động mới của camera.

Ngoài ra, điều này cũng có thể xảy ra nếu bạn gọi GoogleMap.stopAnimation().

duration
Thời lượng mong muốn của ảnh động (tính bằng mili giây) dưới dạng int.

Các đoạn mã sau đây minh hoạ một số cách phổ biến để di chuyển camera.

Kotlin



val sydney = LatLng(-33.88, 151.21)
val mountainView = LatLng(37.4, -122.1)

// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 15f))

// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn())

// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10f), 2000, null)

// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
val cameraPosition = CameraPosition.Builder()
    .target(mountainView) // Sets the center of the map to Mountain View
    .zoom(17f)            // Sets the zoom
    .bearing(90f)         // Sets the orientation of the camera to east
    .tilt(30f)            // Sets the tilt of the camera to 30 degrees
    .build()              // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition))

      

Java


LatLng sydney = new LatLng(-33.88,151.21);
LatLng mountainView = new LatLng(37.4, -122.1);

// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 15));

// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn());

// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(mountainView )      // Sets the center of the map to Mountain View
    .zoom(17)                   // Sets the zoom
    .bearing(90)                // Sets the orientation of the camera to east
    .tilt(30)                   // Sets the tilt of the camera to 30 degrees
    .build();                   // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));