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 Maps SDK cho Android bằng các cử chỉ dễ dàng, giúp người dùng có thể đ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 đều có thể kéo bản đồ hoặc thay đổi phối cảnh của bản đồ với độ trễ rất thấp nhờ kích thước 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 có một mẫu minh hoạ các tính năng của camera:

Giới thiệu

Giống như Google Maps trên web, Maps SDK cho Android thể hiện bề mặt của thế giới (hình cầu) trên màn hình thiết bị (mặt phẳng) bằng cách sử dụng phép chiếu Mercator. Theo hướng đông và tây, bản đồ được lặp lại vô hạn khi thế giới bao bọc liền mạch xung quanh chính nó. Theo hướng bắc và nam, bản đồ bị giới hạn ở 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 kinh độ nhưng có chiều cao vô hạn theo vĩ độ. Chúng tôi "cắt" hình ảnh bản đồ cơ sở bằng phép chiếu Mercator ở khoảng +/- 85 độ để tạo hình vuông cho bản đồ thu được, giúp logic lựa chọn ô trở nên dễ dàng hơn.

Maps SDK 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 camera của bản đồ.

Những thay đổi đối với camera sẽ không làm thay đổi điểm đánh dấu, lớp phủ hoặc các hình ảnh đồ hoạ khác mà bạn đã thêm, mặc dù bạn có thể muốn thay đổi các nội dung bổ sung để phù hợp hơn với chế độ xem mới.

Vì có thể lắng nghe 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 một thao tác nhấn vào 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 phương thức tương tự cũng có sẵn để phản hồi các lần 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 các chuyển động của camera để ứng dụng nhận được thông báo khi camera bắt đầu di chuyể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 camera.

Vị trí camera

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 camera (và việc hiển thị của bản đồ) được xác định bởi các thuộc tính sau: nhắm mục tiêu (vĩ độ/kinh độ của địa điểm), đeo, nghiêng và thu phóng.

Sơ đồ thuộc tính của camera

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

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

Vĩ độ có thể nằm trong khoảng từ -85 đến 85 độ. Các giá trị nằm ngoài phạm vi này sẽ được giới hạn ở giá trị gần nhất trong phạm vi này. Ví dụ: nếu bạn chỉ định vĩ độ là 100, thì giá trị sẽ được đặt thành 85. Kinh độ nằm trong khoảng từ -180 đến 180 độ, bao gồm cả -180 và 180. Các giá trị nằm ngoài phạm vi này sẽ được điều chỉnh để 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 vị của camera chỉ định hướng la bàn, được đo bằng độ từ hướng bắc thực, tương ứng với cạnh trên của bản đồ. Nếu bạn vẽ một đường thẳng đứng từ tâm bản đồ đến cạnh trên của bản đồ, thì góc phương vị sẽ tương ứng với hướng của camera (đo bằng độ) so với hướng bắc thực.

Góc phương vị bằng 0 có nghĩa là phần trên cùng của bản đồ chỉ về hướng bắc thực. Giá trị góc phương vị 90 có nghĩa là phần trên cùng của bản đồ hướng về phía đông (90 độ trên la bàn). Giá trị 180 có nghĩa là phần trên cùng của bản đồ hướng về phía nam.

API Maps cho phép bạn thay đổi hướng của bản đồ. Ví dụ: người lái xe ô tô thường xoay bản đồ đường đi cho phù hợp với hướng di chuyển 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 đồ sao cho đường thẳng đứng chỉ về hướng bắc.

Độ nghiêng (góc xem)

Độ nghiêng xác định vị trí của camera trên một cung tròn ngay phía trên vị trí trung tâm của bản đồ, được đo bằng độ từ thiên để (hướng chỉ thẳng xuống dưới camera). Giá trị 0 tương ứng với camera hướng thẳng xuống. Giá trị lớn hơn 0 tương ứng với máy ảnh nghiê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 theo phối cảnh, trong đó các đối tượng ở xa sẽ nhỏ hơn và các đối tượng ở gần sẽ lớn hơn. Hình minh hoạ sau đây cho thấy điều này.

Trong các hình ảnh bên dưới, góc nhìn là 0 độ. Hình ảnh đầu tiên cho thấy sơ đồ của việc này; vị trí 1 là vị trí của camera và vị trí 2 là vị trí hiện tại trên bản đồ. Bản đồ kết quả được hiển thị bên dưới.

Ảnh chụp màn hình bản đồ có camera đặt ở 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 camera.
Sơ đồ cho thấy vị trí mặc định của camera, ngay phía trên vị trí bản đồ, ở góc 0 độ.
Góc xem mặc định của camera.

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

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

Khi tăng mức thu phóng thêm 1, chiều rộng của thế giới trên màn hình sẽ tăng gấp đôi. 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 thế giới có chiều rộng khoảng 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ố, bao gồm 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 biết 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: Lục địa/đại lục
  • 10: Thành phố
  • 15: Đường phố
  • 20: Toà nhà
Hình ảnh sau đây cho thấy giao diện của các mức thu phóng:
Ả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.

Cách di chuyển máy quay

Maps API cho phép bạn thay đổi phần nào của 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 camera (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à 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 camera, bạn phải chỉ định vị trí mà bạn muốn di chuyển camera bằng cách sử dụng CameraUpdate. Maps API cho phép bạn tạo nhiều loại CameraUpdate bằ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() và CameraUpdateFactory.zoomOut() cung cấp cho bạn một 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, đồng thời giữ nguyên tất cả các thuộc tính khác.

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

Bạn có thể thấy việc đặt mức thu phóng tối thiểu và/hoặc tối đa ưu tiên là hữu ích. Ví dụ: điều này rất 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 xác định xung quanh một đ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 nhóm mức thu phóng giới hạn.

Kotlin

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

      

Java

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

      

Xin lưu ý rằng có một số yếu tố kỹ thuậ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 so với các ô bản đồ cơ sở.

Thay đổi vị trí camera

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 một CameraUpdate để thay đổi vĩ độ và kinh độ của camera, đồng thời 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 camera, đồng thời giữ nguyên tất cả các thuộc tính khác.

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

Di chuyển (cuộn)

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

Đặt ra ranh giới

Đặt 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 hiển thị ở mức thu phóng lớn nhất có thể. Ví dụ: nếu đang hiển thị tất cả các trạm xăng trong phạm vi 8 km tính từ vị trí hiện tại của người dùng, thì bạn có thể di chuyển camera sao cho tất cả các trạm xăng đều xuất hiện trên màn hình. Để làm 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) để lấy CameraUpdate thay đổi vị trí camera sao cho LatLngBounds đã cho vừa 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 ranh giới đã cho và cạnh của bản đồ sẽ ít nhất bằng khoảng đệm đã chỉ định. Xin lưu ý rằng độ nghiêng và hướng của bản đồ đều sẽ là 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));

      

Đặt bản đồ ở giữa một khu vực

Trong một số trường hợp, bạn có thể muốn căn giữa camera trong một ranh giới thay vì bao gồm cả các đường biên ngoài cùng. Ví dụ: để căn giữa camera 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 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.getCenter() phương thức. Phương thức getCenter() sẽ trả về 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));

      

Một phương thức nạp chồng, 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 mục đích là các giá trị này tương ứng với kích thước của bản đồ. Hình chữ nhật được đặt sao cho tâm của hình chữ nhật giống với tâm của chế độ xem bản đồ (để 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 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 camera sau khi bản đồ đã trải qua quá trình bố cục. Trong quá trình bố trí, 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 phức tạp hơn newLatLngBounds(boundary, width, height, padding) bất cứ 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ị từ các đối số mà bạn truyền.

Hạn chế thao tác kéo của người dùng trong một khu vực nhất định

Trong các trường hợp trên, bạn đặt ranh giới của bản đồ nhưng 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 trung tâm vĩ độ/kinh độ của tiêu điểm trên bản đồ (mục tiêu của camera) để người dùng chỉ có thể cuộn và kéo trong các ranh giới này. Ví dụ: một ứng dụng bán lẻ cho trung tâm mua sắm hoặc sân bay có thể muốn giới hạn bản đồ trong một ranh giới cụ thể, cho phép người dùng di chuyển và kéo trong ranh giới đó.

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

      

Biểu đồ sau đây minh hoạ một trường hợp khi mục tiêu của máy ảnh bị giới hạn trong 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à kéo, miễn là mục tiêu của camera vẫn nằm trong khu vực giới hạn. Dấu thập đại diện cho mục tiêu của camera:

Biểu đồ cho thấy LatLngBounds của camera 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 giới hạn đã xác định. Ví dụ: nếu bạn đặt mục tiêu của camera ở 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ể di chuyển thêm vào khu vực đó. Sơ đồ sau đây minh hoạ trường hợp này. Dấu chữ thập đại diện cho mục tiêu của camera:

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

Trong biểu đồ sau, mục tiêu của camera có giới hạn rất hẹp, khiến người dùng có rất ít cơ hội cuộn hoặc kéo bản đồ. Dấu chữ thập đại diện cho mục tiêu của máy ảnh:

Biểu đồ cho thấy LatLngBounds của camera nhỏ hơn khung nhìn.

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 trở nên dễ chịu hơn, đặc biệt là đối với các bướ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 mượt mà đến 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í cần di chuyển camera.
callback
Một đối tượng triển khai GoogleMap.CancellableCallback. Giao diện tổng quát này để xử lý các tác vụ xác định hai phương thức `onCancel()` và `onFinished()`. Đố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 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));