Với SDK bản đồ dành cho iOS, bạn có thể thay đổi điểm nhìn của người dùng trên bản đồ bằng cách thay đổi camera của bản đồ.
Với SDK Maps dành cho iOS, người dùng của bạn có thể nghiêng và xoay bản đồ để điều chỉnh chúng theo một hướng hữu ích cho bối cảnh của trẻ. Ở mọi mức thu phóng , người dùng có thể xoay bản đồ hoặc thay đổi phối cảnh của nó với độ trễ rất thấp.
Các thay đổi đối với máy ảnh sẽ không thay đổi điểm đánh dấu, hình nhiều đường hoặc thành phần đồ hoạ khác mà bạn điều chỉnh được thêm, mặc dù bạn có thể muốn thay đổi những bổ sung này cho phù hợp hơn với chế độ xem mới.
Chế độ xem bản đồ
SDK bản đồ dành cho iOS sử dụng Bộ đo lường phép chiếu để thể hiện bề mặt của thế giới (hình cầu) trên màn hình thiết bị của bạn (hình phẳng máy bay).
Vị trí camera
Chế độ xem bản đồ được mô hình hoá như một máy ảnh nhìn xuống mặt phẳng. Vị trí của máy ảnh (và do đó kết xuất bản đồ) được chỉ định bởi các thuộc tính sau: target (vĩ độ/kinh độ vị trí), góc, nghiêng, và thu phóng.
![Sơ đồ thuộc tính của camera](https://developers.google.cn/static/maps/documentation/android-sdk/images/camera.png?authuser=4&hl=vi)
Mục tiêu (vị trí)
Mục tiêu máy ảnh là vị trí của tâm bản đồ, được chỉ định là vĩ độ và kinh độ.
Vĩ độ có thể nằm trong khoảng từ -85 đến 85 độ. Giá trị ở trên hoặc thấp hơn 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ụ: chỉ định vĩ độ là 100 sẽ đặt giá trị thành 85. Kinh độ nằm trong khoảng từ -180 đến 180 độ. Giá trị cao hơn hoặc thấp hơn phạm vi sẽ được gói sao cho chúng nằm trong phạm vi (-180, 180). Để ví dụ: 480, 840 và 1200 đều sẽ được bọc ở 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ào cạnh trên 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ủa bản đồ, góc phương vị tương ứng với hướng của máy ảnh (được đo bằng độ) thành hướng chính bắc.
Góc bằng 0 có nghĩa là đỉnh bản đồ trỏ đến hướng bắc thực sự. Giá trị mang 90 có nghĩa là điểm đầu của các điểm trên bản đồ về hướng đông (90 độ trên la bàn). Một giá trị 180 có nghĩa là điểm trên cùng của các điểm trên bản đồ đến ở hướng nam.
API Maps cho phép bạn thay đổi góc phương vị của bản đồ. Ví dụ: một người lái xe ô tô thường xoay bản đồ đường đi để căn chỉnh nó 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 đồ sao cho một đường thẳng đứng chỉ về hướng 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 phía trên bản đồ vị trí trung tâm, được đo bằng độ từ phần thấp nhất (hướng chỉ ngay bên dưới camera). Giá trị 0 tương ứng với một camera đã chỉ xuống. Giá trị lớn hơn 0 tương ứng với một máy ảnh được hướng về phía đường chân trời số độ được chỉ định. Khi bạn thay đổi góc nhìn, bản đồ sẽ xuất hiện trong 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 lân cận xuất hiện lớn hơn. Nội dung sau đây hình minh hoạ minh hoạ điều này.
Trong các hình dưới đây, góc nhìn là 0 độ. Hình ảnh đầu tiên cho thấy sơ đồ của điều này; vị trí 1 là vị trí camera và vị trí 2 là vị trí hiện tại trên bản đồ. Bản đồ kết quả sẽ hiển thị bên dưới nó.
![]() |
![]() |
Trong các hình dưới đây, góc nhìn là 45 độ. Lưu ý rằng camera di chuyển theo nửa vòng cung giữa đường thẳng từ trên cao (0 độ) đến mặt đất (90 độ), vào vị trí 3. Máy ảnh vẫn đang hướng vào điểm giữa của bản đồ, nhưng khu vực được biểu thị bằng dòng ở vị trí 4 giờ đây sẽ hiển thị.
![]() |
![]() |
Bản đồ trong ảnh chụp màn hình này vẫn được căn giữa cùng một điểm như trong bản đồ gốc, nhưng nhiều đối tượng địa lý khác đã xuất hiện ở phía trên cùng của bản đồ. Khi bạn tăng góc trên 45 độ, đối tượng giữa máy ảnh và bản đồ vị trí xuất hiện lớn hơn tương ứng, trong khi các đối tượng nằm ngoài vị trí trên bản đồ xuất hiện nhỏ hơn tương ứng, mang lại 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 có thể thấy nhiều chi tiết hơn trên màn hình ở mức thu phóng nhỏ hơn có thể nhìn thấy nhiều khu vực hơn thế giới trên màn hình. Ở mức thu phóng bằng 0, tỷ lệ của bản đồ là tỷ lệ của toàn bộ thế giới chiều rộng khoảng 256 điểm.
Việc tăng mức thu phóng lên 1 sẽ tăng gấp đô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 xấp xỉ 256 * 2N điểm. Ví dụ: ở mức thu phóng 2, toàn bộ thế giới xấp xỉ 1024 điểm.
Mức thu phóng không cần phải là một số nguyên. Phạm vi thu phóng cấp độ mà bản đồ cho phép phụ thuộc vào một số yếu tố bao gồm cả 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 dải ô 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 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à
![]() |
![]() |
![]() |
Đặt vị trí camera ban đầu
Đặt vị trí camera ban đầu bằng
GMSCameraPosition
cho phép bạn đặt vĩ độ và kinh độ của mục tiêu cùng với
phương vị, độ nghiêng và thu phóng.
Để đặt vị trí máy ảnh ban đầu, hãy tạo đối tượng GMSMapViewOptions
và đặt
thuộc tính camera
sang GMSCameraPosition
. Sau đó chuyển các tuỳ chọn của bạn đến
GMSMapView
hàm khởi tạo tiện lợi.
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 16) let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:16]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
Bạn cũng có thể tạo đối tượng GMSMapView
bằng cách sử dụng khởi tạo UIView
mặc định
. Trong trường hợp này, vị trí camera sẽ bắt đầu từ vị trí mặc định và bạn
thay đổi mật khẩu đó sau khi tạo.
Swift
let options = GMSMapViewOptions() options.frame = self.view.bounds let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.frame = self.view.bounds; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
Thay đổi vị trí camera
Bạn có thể lập trình để thay đổi vị trí của camera để đặt vị trí,
phương vị, độ nghiêng và thu phóng. Mặc dù GMSMapView
cung cấp một số phương thức mà bạn
Có thể sử dụng để thay đổi vị trí của máy ảnh, bạn thường sử dụng GMSCameraPosition
hoặc
GMSCameraUpdate
:
GMSCameraPosition
chứa các thuộc tính và phương thức mà bạn dùng để thay đổi mọi vị trí của máy ảnh tham số: mục tiêu, góc phương vị, độ nghiêng và thu phóng.GMSCameraUpdate
cho phép bạn thay đổi mục tiêu, góc phương vị, độ nghiêng và thu phóng đồng thời chứa các phương pháp thuận tiện để hỗ trợ cuộn, thu phóng nâng cao, căn giữa trong ranh giới định sẵn và hơn thế nữa.
Khi di chuyển camera, bạn có thể chọn "chụp nhanh" CANNOT TRANSLATE vị trí, nghĩa là không có ảnh động hoặc tạo hiệu ứng động cho quá trình di chuyển. Ví dụ: nếu bạn tạo ảnh động thay đổi đối với vị trí mục tiêu của máy ảnh, ảnh động di chuyển từ vị trí trước đó đến vị trí mới.
Ảnh động nội suy giữa các thuộc tính camera hiện tại và các thuộc tính mới các thuộc tính khác của camera. Bạn có thể kiểm soát thời lượng của ảnh động bằng cách sử dụng lớp Core Ảnh động.
Sử dụng GMSCameraPosition
Cách thay đổi máy ảnh bằng
GMSCameraPosition
!
bạn tạo một đối tượng mới hoặc sao chép đối tượng hiện có rồi đặt đối tượng đó trên
Đối tượng GMSMapView
. Dùng đối tượng GMSCameraPosition
để điều chỉnh camera
vị trí mới có hoặc không có hoạt ảnh.
Sử dụng đối tượng GMSCameraPosition
để định cấu hình mọi thuộc tính của máy ảnh như
vĩ độ, kinh độ, mức thu phóng, góc phương vị và góc nhìn. Sau đó, bạn có thể dùng đối tượng đó
để đặt thuộc tính camera
của GMSMapView
.
Swift
let fancy = GMSCameraPosition( latitude: -33, longitude: 151, zoom: 6, bearing: 270, viewingAngle: 45 ) mapView.camera = fancy
Objective-C
GMSCameraPosition *fancy = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6 bearing:30 viewingAngle:45]; [mapView setCamera:fancy];
Bỏ qua mọi thuộc tính GMSCameraPosition
mà bạn muốn đặt thành giá trị mặc định.
Để tạo ảnh động cho thao tác di chuyển, hãy sử dụng phương thức animateToCameraPosition:
thay vì
đặt thuộc tính camera
.
Sử dụng GMSCameraUpdate
GMSCameraUpdate
cho phép bạn cập nhật vị trí máy ảnh và chọn chụp ảnh hoặc tạo hiệu ứng động
vị trí mới đó. Ưu điểm của GMSCameraUpdate
là sự tiện lợi. Bạn có thể
sử dụng GMSCameraPosition
để thực hiện các tác vụ tương tự như GMSCameraUpdate
, nhưng
GMSCameraUpdate
cung cấp các phương thức trợ giúp khác để giúp bạn dễ dàng
thao tác với máy ảnh.
Ví dụ: để sử dụng GMSCameraPosition
nhằm tăng mức thu phóng hiện tại, bạn
trước tiên phải xác định mức thu phóng hiện tại, sau đó tạo một
Đối tượng GMSCameraPosition
trong đó bạn đặt mức thu phóng thành giá trị lớn hơn 1
mức thu phóng hiện tại.
Ngoài ra, hãy tạo đối tượng GMSCameraUpdate
bằng phương thức zoomIn:
.
Sau đó, hãy cập nhật máy ảnh bằng cách truyền đối tượng GMSCameraUpdate
đến phương thức
GMSMapView
animateWithCameraUpdate:
.
Swift
// Zoom in one zoom level let zoomCamera = GMSCameraUpdate.zoomIn() mapView.animate(with: zoomCamera)
Objective-C
// Zoom in one zoom level GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn]; [mapView animateWithCameraUpdate:zoomCamera];
Sử dụng phương thức GMSMapView
moveCamera:
để điều chỉnh vị trí mới cho máy ảnh
thay thế.
Trong ví dụ tiếp theo, bạn sử dụng GMSCameraUpdate
để tạo ảnh động cho chuyển động của camera
để đặt quảng cáo vào trung tâm là Vancouver.
Swift
// Center the camera on Vancouver, Canada let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11) let vancouverCam = GMSCameraUpdate.setTarget(vancouver) mapView.animate(with: vancouverCam)
Objective-C
// Center the camera on Vancouver, Canada CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11); GMSCameraUpdate *vancouverCam = [GMSCameraUpdate setTarget:vancouver]; [mapView animateWithCameraUpdate:vancouverCam];
Tạo một đối tượng GMSCameraUpdate
Tạo đối tượng GMSCameraUpdate
bằng cách sử dụng một trong các phương thức của đối tượng đó.
zoomIn:
vàzoomOut:
- Thay đổi mức thu phóng hiện tại thêm 1.0 mà vẫn giữ nguyên tất cả các thuộc tính khác đều như nhau.
zoomTo:
- Thay đổi mức thu phóng về giá trị đã cho, trong khi vẫn giữ nguyên tất cả thuộc tính giống nhau.
zoomBy:
- Tăng (hoặc giảm nếu giá trị là âm) mức thu phóng theo giá trị đã cho.
zoomBy:atPoint:
- Tăng (hoặc giảm nếu giá trị là số âm) mức thu phóng theo giá trị đã cho, trong khi vẫn giữ nguyên trên màn hình.
setTarget:
- Thay đổi vĩ độ và kinh độ của máy ảnh mà vẫn giữ nguyên tất cả thuộc tính khác.
setTarget:zoom:
- Thay đổi vĩ độ, kinh độ và mức thu phóng của máy ảnh trong khi bảo toàn tất cả các thuộc tính khác.
setCamera:
- Đặt
GMSCameraPosition
mới. scrollByX:Y:
- Thay đổi vĩ độ và kinh độ của máy ảnh để di chuyển bản đồ theo số điểm xác định. Giá trị x dương khiến máy ảnh phải di chuyển sang phải, để bản đồ dường như đã di chuyển sang sang trái. Giá trị y dương làm cho camera di chuyển xuống, do đó bản đồ dường như đã di chuyển lên. Thao tác cuộn tương ứng với dòng điện của camera đầu ra. Ví dụ: nếu camera có góc 90 độ, thì phía đông là "lên".
fitBounds:
- Chuyển đổi máy ảnh để căn giữa các giới hạn đã chỉ định trên màn hình tại mức thu phóng lớn nhất có thể. Áp dụng giá trị mặc định khoảng đệm đến giới hạn 64 điểm.
fitBounds:withPadding:
- Chuyển đổi máy ảnh để căn giữa các ranh giới đã chỉ định trên ở mức thu phóng lớn nhất có thể. Sử dụng phương thức này để chỉ định cùng khoảng đệm, tính theo điểm, cho tất cả các cạnh của hộp giới hạn.
fitBounds:withEdgeInsets:
- Chuyển đổi máy ảnh để căn giữa các ranh giới đã chỉ định trên
ở mức thu phóng lớn nhất có thể. Với
UIEdgeInsets
, bạn chỉ định khoảng đệm cho mỗi bên của hộp giới hạn một cách độc lập.
Sử dụng GMSMapView
để thay đổi một thuộc tính
GMSMapView
cung cấp một số phương pháp cho phép bạn di chuyển camera mà không cần dùng
Đối tượng GMSCameraPosition
hoặc đối tượng GMSCameraUpdate
. Với các phương pháp này, chẳng hạn như
dưới dạng animateToLocation:
hoặc animateToZoom:
, bạn có thể tạo ảnh động cho một thay đổi đối với
thuộc tính camera đơn.
Ví dụ: sử dụng phương thức toViewingAngle:
để tạo ảnh động cho một thay đổi đối với máy ảnh
nghiêng.
Swift
mapView.animate(toViewingAngle: 45)
Objective-C
[mapView animateToViewingAngle:45];
Đặt mục tiêu (vị trí)
Vị trí xác định trung tâm của bản đồ. Các vị trí được chỉ định theo
vĩ độ và kinh độ, và được biểu thị bằng cách lập trình bằng
CLLocationCoordinate2D
, được tạo bằng CLLocationCoordinate2DMake
.
Sử dụng GMSCameraPosition
để thay đổi vị trí. Trong ví dụ này, bản đồ chụp nhanh
sang vị trí mới.
Swift
let target = CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208) mapView.camera = GMSCameraPosition(target: target, zoom: 6)
Objective-C
CLLocationCoordinate2D target = CLLocationCoordinate2DMake(-33.868, 151.208); mapView.camera = [GMSCameraPosition cameraWithTarget:target zoom:6];
Để tạo hoạt ảnh cho sự thay đổi và xoay bản đồ đến vị trí mới, bạn có thể sử dụng
animateToCameraPosition:
thay vì đặt thuộc tính camera
. Hoặc
sử dụng phương thức animateToLocation:
trên GMSMapView
.
Swift
mapView.animate(toLocation: CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208))
Objective-C
[mapView animateToLocation:CLLocationCoordinate2DMake(-33.868, 151.208)];
Bạn cũng có thể tạo đối tượng GMSCameraUpdate
để di chuyển camera. Sử dụng
scrollByX:Y:
, để chỉ định số điểm cần cuộn
máy ảnh theo hướng X và Y. Trong ví dụ này, bạn cuộn camera 200
trỏ sang phải và hướng xuống dưới 100:
Swift
// Move the camera 200 points to the right, and 100 points downwards let downwards = GMSCameraUpdate.scrollBy(x: 200, y: 100) mapView.animate(with: downwards)
Objective-C
// Move the camera 200 points to the right, and 100 points downwards GMSCameraUpdate *downwards = [GMSCameraUpdate scrollByX:200.0 Y:100.0]; [mapView animateWithCameraUpdate:downwards];
Đặt góc phương tiện (hướng)
Góc phương vị là hướng la bàn, được đo bằng độ từ hướng chính bắc, đối với cạnh trên của bản đồ. Ví dụ: góc toạ độ 90 độ cho thấy một bản đồ nơi cạnh trên chỉ hướng về phía đông.
Đặt phương hướng theo phương thức lập trình bằng GMSCameraPosition
hoặc GMSCameraUpdate
hoặc bằng phương thức animateToBearing:
của GMSMapView
.
Swift
mapView.animate(toBearing: 0)
Objective-C
[mapView animateToBearing:0];
Đặt độ nghiêng (góc xem)
Góc nhìn là vị trí của camera trên một vòng cung nằm ngay phía trên vị trí tâm của bản đồ và bề mặt Trái Đất, được đo bằng độ từ thấp nhất (hướng trỏ ngay dưới máy ảnh). Khi bạn thay đổi góc nhìn, bản đồ xuất hiện trong phối cảnh, với đặc điểm nằm giữa máy ảnh và vị trí trên bản đồ xuất hiện lớn hơn theo tỷ lệ và các đối tượng nằm ngoài vị trí trên bản đồ xuất hiện nhỏ hơn tương ứng, mang lại hiệu ứng ba chiều.
Góc nhìn có thể nằm trong khoảng từ 0 (trỏ xuống bản đồ), và lên đến mức tối đa phụ thuộc vào mức thu phóng. Đối với mức thu phóng 16 hoặc cao hơn, giá trị tối đa góc là 65 độ. Đối với mức thu phóng 10 hoặc thấp hơn, góc tối đa là 30 độ.
Đặt góc xem theo phương thức lập trình bằng GMSCameraPosition
hoặc
GMSCameraUpdate
hoặc bằng phương thức animateToViewingAngle:
của GMSMapView
.
Swift
mapView.animate(toViewingAngle: 45)
Objective-C
[mapView animateToViewingAngle:45];
Đặt mức 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 chi tiết hơn trên màn hình, còn ở mức thu phóng nhỏ hơn, bạn có thể quan sát nhiều hơn thế giới.
Đặt chế độ thu phóng theo phương thức lập trình bằng GMSCameraPosition
, GMSCameraUpdate
hoặc
bằng phương thức animateToZoom:
của GMSMapView
.
Swift
mapView.animate(toZoom: 12)
Objective-C
[mapView animateToZoom:12];
Ví dụ sau đây sử dụng phương thức zoomIn:
để tạo GMSCameraUpdate
để tạo hiệu ứng phóng to một cấp từ mức hiện tại.
Swift
// Zoom in one zoom level let zoomCamera = GMSCameraUpdate.zoomIn() mapView.animate(with: zoomCamera)
Objective-C
// Zoom in one zoom level GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn]; [mapView animateWithCameraUpdate:zoomCamera];
Đặt giới hạn
Để di chuyển camera sao cho toàn bộ khu vực quan tâm có thể nhìn thấy ở mức lớn nhất mức thu phóng có thể đạt được, đặt ranh giới cho chế độ xem camera. Ví dụ: nếu bạn muốn hiển thị tất cả các trạm xăng trong phạm vi 5 dặm xung quanh hãy di chuyển camera để tất cả các camera đều hiển thị trên màn hình:
- Tính
GMSCoordinateBounds
mà bạn muốn hiển thị trên màn hình. - Sử dụng phương thức
cameraForBounds:insets:
củaGMSMapView
để trả về một phương thức mớiGMSCameraPosition
.
Việc đặt các giới hạn này đảm bảo rằng GMSCoordinateBounds
đã cho hoàn toàn vừa vặn
trong kích thước của bản đồ hiện tại. Lưu ý rằng phương pháp này đặt độ nghiêng và góc
của bản đồ đến 0.
Ví dụ sau đây minh hoạ cách thay đổi máy ảnh để các thành phố về Vancouver và Calgary đều xuất hiện trong cùng một chế độ xem.
Swift
let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11) let calgary = CLLocationCoordinate2D(latitude: 51.05,longitude: -114.05) let bounds = GMSCoordinateBounds(coordinate: vancouver, coordinate: calgary) let camera = mapView.camera(for: bounds, insets: UIEdgeInsets())! mapView.camera = camera
Objective-C
CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11); CLLocationCoordinate2D calgary = CLLocationCoordinate2DMake(51.05, -114.05); GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:vancouver coordinate:calgary]; GMSCameraPosition *camera = [mapView cameraForBounds:bounds insets:UIEdgeInsetsZero]; mapView.camera = camera;
Hạn chế lia máy của người dùng trong một khu vực nhất định
Các tình huống này thiết lập ranh giới của bản đồ nhưng sau đó người dùng có thể cuộn hoặc xoay nằm ngoài những giới hạn này. Thay vào đó, bạn nên ràng buộc toạ độ ranh giới giữa 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ẻ cho trung tâm mua sắm hoặc sân bay có thể muốn ràng buộc bản đồ theo các ranh giới cụ thể, cho phép người dùng cuộn và xoay trong các giới hạn đó.
Để hạn chế xoay ở những giới hạn cụ thể, hãy đặt thuộc tính cameraTargetBounds
của
GMSMapView
thành một đối tượng GMSCoordinateBounds
xác định các giới hạn bắt buộc.
Để sau này loại bỏ quy định hạn chế này, hãy đặt cameraTargetBounds
thành giá trị 0.
Swift
mapView.cameraTargetBounds = bounds
Objective-C
mapView.cameraTargetBounds = bounds;
Sơ đồ dưới đây minh hoạ một tình huống trong đó mục tiêu của máy ảnh bị ràng buộc vào khu vực lớn hơn khung nhìn một chút. 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 vùng giới hạn. Chiến lược phát hành đĩa đơn chữ thập biểu thị mục tiêu máy ảnh:
![Sơ đồ cho thấy giới hạn của máy ảnh lớn hơn giới hạn
khung nhìn.](https://developers.google.cn/static/maps/documentation/ios-sdk/images/latlngbounds-camera1.png?authuser=4&hl=vi)
Bản đồ luôn lấp đầy khung nhìn, ngay cả khi việc đó khiế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 định vị mục tiêu máy ảnh tại góc của khu vực bị giới hạn, phần nằm ngoài góc 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 đó. Chiến lược phát hành đĩa đơn biểu đồ dưới đây minh hoạ tình huống này. Chữ thập tượng trưng cho máy ảnh mục tiêu:
![Sơ đồ cho thấy mục tiêu của máy ảnh nằm ở góc dưới cùng bên phải của
giới hạn máy ảnh.](https://developers.google.cn/static/maps/documentation/ios-sdk/images/latlngbounds-camera2.png?authuser=4&hl=vi)
Trong sơ đồ dưới đây, mục tiêu của máy ảnh có giới hạn rất hạn chế, cung cấp người dùng có rất ít cơ hội để cuộn hoặc xoay bản đồ. Chữ thập biểu thị mục tiêu máy ảnh:
![Sơ đồ cho thấy giới hạn của máy ảnh nhỏ hơn
khung nhìn.](https://developers.google.cn/static/maps/documentation/ios-sdk/images/latlngbounds-camera3.png?authuser=4&hl=vi)
Đặt mức thu phóng tối thiểu hoặc tối đa
Các hằng số toàn cục kGMSMinZoomLevel
và kGMSMaxZoomLevel
xác định
giá trị thu phóng tối thiểu hoặc tối đa. Theo mặc định, minZoom
và maxZoom
các thuộc tính của GMSMapView
được đặt thành các hằng số này.
Để giới hạn phạm vi các mức thu phóng hiện có cho bản đồ, hãy đặt giá trị nhỏ nhất và tối đa mức thu phóng. Mã sau đây giới hạn mức độ thu phóng trong khoảng từ 10 đến 15.
Swift
let camera = GMSCameraPosition( latitude: 41.887, longitude: -87.622, zoom: 12 ) let mapView = GMSMapView(frame: .zero, camera: camera) mapView.setMinZoom(10, maxZoom: 15)
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.887 longitude:-87.622 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; [mapView setMinZoom:10 maxZoom:15];
Bạn phải đặt phạm vi thu phóng bằng phương thức setMinZoom:maxZoom:
; tuy nhiên, bạn
có thể đọc các giá trị hiện tại bằng cách sử dụng thuộc tính minZoom
và maxZoom
. Chiến dịch này
Phương pháp này rất hữu ích khi chỉ hạn chế một trong các giá trị. Mã sau đây
chỉ thay đổi mức thu phóng tối thiểu.
Swift
mapView.setMinZoom(12, maxZoom: mapView.maxZoom)
Objective-C
[mapView setMinZoom:12 maxZoom:mapView.maxZoom];
Nếu, sau khi cập nhật mức thu phóng tối thiểu và tối đa, mức thu phóng của máy ảnh được đặt thành nằm ngoài phạm vi mới, mức thu phóng hiện tại sẽ tự động cập nhật thành hiển thị giá trị hợp lệ gần nhất. Ví dụ: trong mã sau, mức thu phóng ban đầu được định nghĩa là 4. Khi phạm vi thu phóng sau đó được đặt thành 10-15, mức thu phóng hiện tại đã cập nhật thành 10.
Swift
// Sets the zoom level to 4. let camera2 = GMSCameraPosition( latitude: 41.887, longitude: -87.622, zoom: 4 ) let mapView2 = GMSMapView(frame: .zero, camera: camera) // The current zoom, 4, is outside of the range. The zoom will change to 10. mapView.setMinZoom(10, maxZoom: 15)
Objective-C
// Sets the zoom level to 4. GMSCameraPosition *camera2 = [GMSCameraPosition cameraWithLatitude:41.887 longitude:-87.622 zoom:4]; GMSMapView *mapView2 = [GMSMapView mapWithFrame:CGRectZero camera:camera]; // The current zoom, 4, is outside of the range. The zoom will change to 10. [mapView setMinZoom:10 maxZoom:15];