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

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

Bạn có thể nghiêng và xoay bản đồ trong SDK Maps dành cho Android với các cử chỉ dễ sử dụng, giúp người dùng có thể điều chỉnh bản đồ theo hướng thích hợp. Ở bất kỳ mức thu phóng nào, bạn có thể kéo bản đồ hoặc thay đổi phối cảnh với độ trễ rất thấp nhờ dấu vết nhỏ hơn của ô 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 trình bày các tính năng của máy ảnh:

Giới thiệu

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

Lưu ý: Một phép chiếu Mercator có chiều rộng hữu hạn theo chiều dọc nhưng có chiều cao vô hạn. Chúng tôi "cắt bớ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 vuông bản đồ kết quả, cho phép logic dễ dàng hơn lựa chọn hình xếp.

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 thực hiện bất kỳ thay đổi nào đối với điểm đánh dấu, lớp phủ hoặc đồ hoạ khác mà bạn đã thêm, mặc dù bạn có thể muốn thay đổi nội dung bổ sung để phù hợp hơn với chế độ xem mới.

Vì có thể theo dõi các cử chỉ của người dùng trên bản đồ, bạn có thể thay đổi bản đồ để phản hồi các yêu cầu của người dùng. Ví dụ: phương thức gọi lại OnMapClickListener.onMapClick() sẽ phản hồi với 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 đến đ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 điểm đánh dấu hoặc để phản hồi cử chỉ kéo trên đ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 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 dừ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 máy ảnh.

Vị trí máy ảnh

Chế độ xem bản đồ được mô phỏng như một máy ảnh nhìn xuống mặt phẳng. Vị trí của máy ảnh (và do đó việc hiển thị bản đồ) được xác định bởi các thuộc tính sau: target (vĩ độ/kinh độ của địa điểm), gob, tiltthu 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 là vĩ độ và kinh độ.

Vĩ độ có thể nằm trong khoảng từ -85 đến 85 độ, tính cả hai mốc này. 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 độ từ -180 đến 180 độ, tính cả hai mốc này. Các giá trị trên hoặc dưới phạm vi này sẽ được bao bọc để nằm trong phạm vi (-180, 180). Ví dụ: 480, 840 và 1200 sẽ được gói với góc 120 độ.

Ổ trục (hướng)

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

Vòng bi 0 có nghĩa là đỉnh của bản đồ chỉ điểm về phía bắc. Giá trị góc phương vị 90 có nghĩa là đỉnh của bản đồ sẽ di chuyển về phía đông (90 độ trên la bàn). Giá trị 180 có nghĩa là đỉnh của các điểm bản đồ đến hạn ở phía nam.

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

Nghiêng (góc nhìn)

nghiêng Giá trị 0 tương ứng với một máy ảnh được hướng thẳng xuống dưới. Các giá trị lớn hơn 0 tương ứng với máy ảnh được di chuyển về phía đường chân trời theo số độ đã chỉ định. Khi bạn thay đổi góc nhìn, bản đồ sẽ xuất hiện ở góc nhìn, với các tính năng ở xa xuất hiện nhỏ hơn và các tính năng lân cận xuất hiện 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 nhìn bằng 0 độ. Hình ảnh đầu tiên thể hiện một sơ đồ về vị trí này; vị trí 1 là vị trí máy ảnh và vị trí 2 là vị trí bản đồ hiện tại. Bản đồ kết quả sẽ hiển thị bên dưới.

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

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

Ảnh chụp màn hình bản đồ có máy ảnh ở góc nhìn 45 độ, ở mức thu phóng 18.
Bản đồ xuất hiện với góc nhìn 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 thành 18.
Góc nhìn của camera là 45 độ.

Bản đồ trong ảnh chụp màn hình này vẫn căn giữa cùng một điểm với bản đồ gốc, nhưng nhiều tính năng khác đã xuất hiện ở đầu bản đồ. Khi bạn tăng góc vượt quá 45 độ, các tính năng giữa máy ảnh và vị trí bản đồ sẽ xuất hiện lớn hơn theo tỷ lệ, trong khi các tính năng khác vị trí bản đồ trông 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 xác định tỷ lệ của bản đồ. Ở mức thu phóng lớn hơn, bạn có thể xem nhiều thông tin hơn trên màn hình, trong khi ở mức thu phóng nhỏ hơn, bạn có thể xem thêm nhiều nội dung khác 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 256dp (pixel không phụ thuộc vào mật độ).

Việc tăng mức thu phóng thêm 1 lần 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ụ: ở cấp thu phóng 2, toàn thế giới rộng khoảng 1024dp.

Mức thu phóng không được là số nguyên. Phạm vi mức thu phóng được bản đồ cho phép phụ thuộc vào một số yếu tố bao gồm mục tiêu, loại bản đồ và kích thước màn hình. Bất kỳ số nào nằm ngoài phạm vi sẽ được chuyển đổi sang 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ãnh thổ
  • 10: Thành phố
  • 15: Đường phố
  • 20: Tòa nhà
Những hình ảnh sau đây cho thấy hình ảnh trực quan 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
Một bản đồ ở mức thu phóng 5.
Ảnh chụp màn hình bản đồ ở mức thu phóng 15
Một bản đồ ở mức thu phóng 15.
Ảnh chụp màn hình bản đồ ở mức thu phóng 20
Một bản đồ ở mức thu phóng 20.

Đang di chuyển máy ảnh

API Maps cho phép bạn thay đổi phần nào trên thế giới sẽ hiển thị 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 (trái ngược với việc di chuyển bản đồ).

Khi thay đổi máy ảnh, bạn có thể tạo ảnh động cho chuyển động của máy ảnh thu được. Ảnh động sẽ nội suy giữa thuộc tính máy ảnh hiện tại và thuộc tính máy ảnh mới. 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 nơi 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 bằng cách sử dụng CameraUpdateFactory. Bạn có các tuỳ chọ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 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 CameraUpdate thay đổi mức thu phóng thành giá trị đã cho, đồng thời giữ nguyên tất cả các thuộc tính khác.

CameraUpdateFactory.zoomBy(float)CameraUpdateFactory.zoomBy(float, Point) 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. Phần sau cố định một điểm nhất định trên màn hình để điểm đó vẫn ở cùng một vị trí (vĩ độ/kinh độ) và vì vậy có thể thay đổi vị trí của máy ảnh để đạ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ụ: tính năng này hữu ích để kiểm soát trải nghiệm của người dùng nếu ứng dụng của bạn hiển thị một khu vực đượ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ủ ô tuỳ chỉnh với một tập hợp các mức thu phóng có giới hạn.

Java


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

      

Kotlin


private lateinit var map: GoogleMap

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

      

Xin lưu ý rằng một số yếu tố kỹ thuật cần xem xét có thể khiến API không 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ở.

Đang thay đổi vị trí máy ảnh

Có hai phương thức thuận tiện cho các thay đổi vị trí phổ biến. CameraUpdateFactory.newLatLng(LatLng) cung cấp cho bạn 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 CameraUpdate để thay đổi vĩ độ, kinh độ và mức thu phóng của máy ảnh, đồng thời giữ lại tất cả các thuộc tính khác.

Để hoàn toàn linh hoạt trong việc thay đổi vị trí máy ảnh, hãy sử dụng CameraUpdateFactory.newCameraPosition(CameraPosition) để cung cấp cho bạn một CameraUpdate di chuyển máy ảnh đến vị trí đã chọn. Bạn có thể lấy CameraPosition trực tiếp bằng cách sử dụng new CameraPosition() hoặc với CameraPosition.Builder bằ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ố lượng pixel được chỉ định. Giá trị x dương giúp máy ảnh di chuyển sang phải để bản đồ có vẻ như đã di chuyển sang trái. Giá trị y dương khiến máy ảnh di chuyển xuống, khiến bản đồ có vẻ như đã di chuyển lên. Ngược lại, các giá trị x âm làm cho 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 phủ định khiến 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 máy ảnh có góc xoay 90 độ, thì phía đông sẽ là "lên".

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

Java


LatLngBounds australiaBounds = new LatLngBounds(
    new LatLng(-44, 113), // SW bounds
    new LatLng(-10, 154)  // NE bounds
);
map.moveCamera(CameraUpdateFactory.newLatLngBounds(australiaBounds, 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))

      

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

Trong một số trường hợp, bạn có thể muốn căn giữa máy ảnh trong một ranh giới thay vì bao gồm các đường viền cực đoan. Ví dụ: căn giữa máy ảnh trên 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 một 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.Phương thức getCenter(). Phương thức getCenter() sẽ trả về trung tâm địa lý của LatLngBounds.

Java


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

      

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

      

Phương thức nạp chồng phương thức newLatLngBounds(boundary, width, height, padding) cho phép bạn chỉ định chiều rộng và chiều cao tính bằng pixel cho một hình chữ nhật với ý định rằng các chiều rộng 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 nó giống với chế độ xem của bản đồ (sao cho nếu kích thước được chỉ định giống với kích thước của chế độ xem bản đồ, thì hình chữ nhật sẽ trùng với chế độ xem của bản đồ). CameraUpdate được trả về sẽ di chuyển máy ảnh sao cho LatLngBounds được chỉ định nằm ở giữa màn hình trong hình chữ nhật nhất định ở 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 định dạng này sẽ được dùng để di chuyển máy ảnh sau khi bản đồ đã trải qua bố cục. Trong quá trình bố cục, API sẽ tính toán ranh giới hiển thị của bản đồ cần thiết để chiếu chính xác hộp giới hạn. Để so sánh, bạn có thể sử dụng CameraUpdate được trả về bằng phương thức newLatLngBounds(boundary, width, height, padding) phức tạp hơn bất kỳ lúc nào, ngay cả trước khi bản đồ đã trải qua bố cục, vì API tính toán ranh giới hiển thị của các đối số mà bạn truyền.

Hạn chế thao tác di chuyển của người dùng đến một khu vực nhất định

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

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

      

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)

      

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

Sơ đồ minh hoạ máy ảnh LatLngBounds lớn hơn
      khung nhìn.

Bản đồ luôn lấp đầy khung nhìn, ngay cả khi việc đó dẫn đến khung nhìn hiển thị các khu vực nằm ngoài giới hạn đã 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 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ơ đồ dưới đây minh hoạ tình huống này. Hình chữ thập đại diện cho mục tiêu máy ảnh:

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

Trong sơ đồ sau, mục tiêu máy ảnh có các giới hạn rất hạn chế, mang lại cho người dùng 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 máy ảnh:

Sơ đồ minh hoạ máy ảnh LatLngBounds nhỏ hơn
      khung nhìn.

Đang cập nhật chế độ xem máy ảnh

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

Bạn có thể làm cho trải nghiệm người dùng trở nên dễ chịu hơn, đặc biệt là khi 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ẽ chuyển dễ dàng sang các thuộc tính mới. Biểu mẫu chi tiết nhất của phương thức này, GoogleMap.animateCamera(cameraUpdate, duration, callback), cung cấp ba đối số:

cameraUpdate
CameraUpdate mô tả vị trí di chuyển máy ảnh.
callback
Đối tượng triển khai GoogleMap.CancellableCallback. Giao diện chung cho các tác vụ xử lý này xác định hai phương thức `onCancel()` và `onfinish()`. Đối với ảnh động, các phương thức được gọi trong các 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 chuyển động mới của máy ảnh.

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 minh hoạ một số cách phổ biến để di chuyển máy ảnh.

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

      

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