Phần tổng quan này mô tả cách định cấu hình bản đồ đã được thêm vào ứng dụng iOS bằng cách sử dụng SDK Bản đồ dành cho iOS.
Tổng quan
Sau khi thêm bản đồ vào ứng dụng của mình, bạn có thể định cấu hình các tuỳ chọn ban đầu và chế độ cài đặt thời gian chạy của bản đồ. Để biết thông tin chi tiết về cách thêm vùng chứa bản đồ, hãy xem bài viết Thêm bản đồ.
Chế độ cài đặt ban đầu của bản đồ bao gồm:
- Vị trí của máy ảnh, bao gồm: vị trí, thu phóng, góc phương tiện và độ nghiêng. Xem phần Máy ảnh và Chế độ xem để biết thông tin chi tiết về vị trí máy ảnh.
- Màu nền của bản đồ.
- Loại bản đồ.
- Các thành phần giao diện người dùng để hiển thị, chẳng hạn như các nút thu phóng và la bàn.
- Các cử chỉ để bật.
Trong thời gian chạy, bạn có thể định cấu hình các chế độ cài đặt này và một số chế độ cài đặt bổ sung bằng cách cập nhật đối tượng GMSMapView
.
Tùy chọn bản đồ
Khi khởi chạy chế độ xem bản đồ, các tùy chọn cấu hình sẽ được đặt bằng GMSMapViewOptions
. Các thuộc tính tuỳ chọn bao gồm frame
, camera
, mapID
hoặc backgroundColor
.
Tùy chọn bản đồ | |
---|---|
khung | Giá trị:
CGRect Khung bản đồ. Giá trị mặc định là CGRectZero.
|
máy ảnh | Giá trị:
GMSCameraPosition Vị trí máy ảnh mặc định trên bản đồ.
|
mapID | Giá trị:
GMSMapID Mã bản đồ của Google. Tham số không bắt buộc.
|
backgroundColor | Giá trị:
UIColor Giá trị mặc định là UIColor.lightGray
|
Định cấu hình tuỳ chọn bản đồ
Bạn có thể đặt các thuộc tính tuỳ chọn của riêng mình hoặc truyền trực tiếp một GMSMapViewOptions
tạo thực thể có các giá trị mặc định đến GMSMapView
.
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
Dưới đây là ví dụ về cách truyền trực tiếp một đối tượng GMSMapViewOptions
có giá trị mặc định đến GMSMapView
.
Swift
let options = GMSMapViewOptions() let mapView = GMSMapView(options:options) //initialized with default values
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values
Định cấu hình màu nền
Khi làm việc ở chế độ tối hoặc chuyển đổi giữa các thành phần hiển thị bản đồ, bạn nên ghi đè màu nền bản đồ mặc định. Bạn có thể thực hiện việc này bằng cách đặt các tuỳ chọn bản đồ thuộc tính backgroundColor
.
Swift
let options = GMSMapViewOptions() options.backgroundColor = UIColor.yellowColor let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.backgroundColor = UIColor.yellowColor; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
Loại bản đồ
Bạn có thể tuỳ chỉnh bản đồ của mình bằng một trong nhiều loại bản đồ. Kiểu bản đồ chi phối toàn bộ bản đồ. Ví dụ: tập bản đồ thường chứa bản đồ chính trị tập trung vào việc thể hiện ranh giới, còn bản đồ đường lại hiển thị tất cả các con đường của một thành phố hoặc khu vực. SDK bản đồ dành cho iOS cung cấp các loại bản đồ sau:
Loại bản đồ | |
---|---|
Bình thường | Giá trị:
kGMSTypeNormal Bản đồ đường điển hình. Cho thấy các con đường, một số đối tượng địa lý do
con người xây dựng và các đối tượng tự nhiên quan trọng như sông. Bạn cũng có thể nhìn thấy các nhãn đường và đối tượng địa lý.
|
Kết hợp | Giá trị:
kGMSTypeHybrid Dữ liệu ảnh chụp vệ tinh khi đã thêm bản đồ đường. Nhãn đường và đối tượng cũng sẽ xuất hiện. |
Vệ tinh | Giá trị:
kGMSTypeSatellite Dữ liệu ảnh chụp vệ tinh. Nhãn đường và đối tượng địa lý không hiển thị.
|
Địa hình | Giá trị:
kGMSTypeTerrain Dữ liệu địa hình. Bản đồ có màu, đường đồng mức và nhãn cũng như tô bóng phối cảnh. Một số đường và nhãn cũng sẽ xuất hiện.
|
Không có | Giá trị:
kGMSTypeNone Không có ô bản đồ. Các ô bản đồ cơ sở sẽ không được hiển thị. Chế độ này hữu ích khi kết hợp với các lớp thẻ thông tin. Hiển thị dữ liệu giao thông sẽ bị tắt khi loại bản đồ được
đặt thành không có. |
Thay đổi loại bản đồ
Để đặt loại bản đồ, hãy gán một giá trị mới cho thuộc tính GMSMapView.mapType
. Ví dụ: để hiển thị loại bản đồ vệ tinh:
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView(options:options) mapView.mapType = .satellite
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; mapView.mapType = kGMSTypeSatellite;
Trình chọn bên dưới hiển thị thông tin so sánh về địa hình, bản đồ thông thường và bản đồ kết hợp cho cùng một vị trí:
Bản đồ trong nhà
Ở mức thu phóng cao, SDK Maps dành cho iOS sẽ hiển thị sơ đồ tầng cho các không gian trong nhà, chẳng hạn như sân bay, trung tâm mua sắm, cửa hàng bán lẻ lớn và trạm phương tiện công cộng. Sơ đồ tầng trong nhà được tích hợp vào các ô bản đồ mặc định cho loại bản đồ "bình thường" (kGMSTypeNormal
) và tự động bật khi người dùng phóng to và mờ dần khi thu nhỏ bản đồ.
Bạn có thể tắt sơ đồ trong nhà bằng cách đặt thuộc tính indoorEnabled
của GMSMapView
thành NO
.
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
Ngoài ra, bạn có thể chỉ tắt chế độ kiểm soát Bộ chọn sàn.
Đang thêm sơ đồ tầng
Sơ đồ tầng có sẵn ở một số vị trí. Nếu không có sẵn dữ liệu sơ đồ tầng cho một toà nhà mà bạn muốn làm nổi bật trong ứng dụng của mình, bạn có thể:
- Thêm trực tiếp sơ đồ tầng vào Google Maps. Nhờ đó, tất cả người dùng Google Maps đều có thể xem gói của bạn.
- Hiển thị sơ đồ tầng dưới dạng Lớp phủ mặt đất. Chỉ người dùng ứng dụng mới có thể xem sơ đồ tầng của bạn.
Lớp giao thông
Bạn có thể cung cấp cho người dùng khả năng xem bản đồ với thông tin về mật độ lưu lượng truy cập xếp chồng lên trên. Mục này cung cấp bản tóm tắt trực quan về
tình hình lưu lượng truy cập cục bộ của các trang web/ứng dụng đó. Bạn có thể bật và tắt lớp lưu lượng truy cập bằng cách gọi phương thức trafficEnabled
. Ví dụ sau đây cho thấy cách lớp giao thông có thể xuất hiện trên bản đồ.
Hỗ trợ tiếp cận
Theo mặc định, các thành phần hỗ trợ tiếp cận trên bản đồ sẽ bị ẩn. Bạn có thể bật tính năng hỗ trợ tiếp cận bằng cách đặt thuộc tính accessibilityElementsHidden
của GMSMapView
thành NO
. Điều này khiến các phần tử hỗ trợ tiếp cận được tạo cho các đối tượng lớp phủ (chẳng hạn như GMSMarker
và cửa sổ thông tin, GMSPolyline
, v.v.).
Swift
mapView.accessibilityElementsHidden = false
Objective-C
mapView.accessibilityElementsHidden = NO;
Thuộc tính này theo giao thức UIAccessibility
không chính thức, ngoại trừ việc giá trị mặc định trong SDK Maps dành cho iOS là YES
.
Vị trí của tôi
Theo mặc định, dữ liệu vị trí không được hiển thị trên bản đồ. Bạn có thể bật dấu chấm "Vị trí
của tôi" màu xanh dương và hướng la bàn bằng cách đặt myLocationEnabled
trên
GMSMapView
.
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
Khi bật tính năng này, bạn sẽ cung cấp thông tin vị trí hiện tại của người dùng thông qua thuộc tính myLocation
. Có thể tài sản này sẽ không có sẵn ngay, chẳng hạn như nếu người dùng được iOS nhắc cho phép truy cập vào dữ liệu này. Giá trị này là nil
trong trường hợp này.
Swift
print("User's location: \(String(describing: mapView.myLocation))")
Objective-C
NSLog(@"User's location: %@", mapView.myLocation);
Toà nhà 3D
Khi xem cận cảnh nhiều thành phố, bạn sẽ thấy các toà nhà 3D như trong hình ảnh về Seattle, Washington bên dưới.
Bạn có thể tắt toà nhà 3D bằng cách đặt thuộc tính GMSMapView
tương ứng trong Swift hoặc Objective-C, như minh hoạ dưới đây:
Swift
mapView.isBuildingsEnabled = false
Objective-C
[mapView setBuildingsEnabled:NO];
Khoảng đệm bản đồ
Google Map được thiết kế để lấp đầy toàn bộ khu vực do GMSMapView
xác định.
Một số khía cạnh trong cách bản đồ xuất hiện và hành vi được xác định bởi kích thước của khung hiển thị:
- Mục tiêu của máy ảnh phản ánh tâm của vùng có đệm.
- Các thành phần điều khiển bản đồ được đặt tương ứng với các cạnh của bản đồ.
- Thông tin pháp lý, chẳng hạn như tuyên bố bản quyền hoặc biểu trưng Google sẽ xuất hiện dọc theo mép dưới cùng của bản đồ.
Bạn có thể thêm khoảng đệm xung quanh các cạnh của bản đồ bằng cách sử dụng GMSMapView
.padding
. Bản đồ sẽ tiếp tục lấp đầy toàn bộ vùng chứa, nhưng việc định vị văn bản và điều khiển, các cử chỉ bản đồ và di chuyển của máy ảnh hoạt động như thể được đặt trong một không gian nhỏ hơn. Điều này dẫn đến những thay đổi sau:
- Chuyển động của camera bằng lệnh gọi API hoặc thao tác nhấn nút (ví dụ: la bàn, vị trí của tôi) tương ứng với vùng đệm.
GMSMapView
.projection
trả về một phép chiếu chỉ bao gồm vùng đệm.- Các thành phần điều khiển trên giao diện người dùng được bù trừ so với cạnh của vùng chứa theo số điểm được chỉ định.
Khoảng đệm có thể hữu ích khi thiết kế các giao diện người dùng chồng lên một số phần của bản đồ. Ví dụ: trong hình ảnh, bản đồ được thêm vào khoảng đệm dọc theo các cạnh trên cùng và bên phải. Các thành phần điều khiển bản đồ và văn bản pháp lý trực quan hiển thị dọc theo các cạnh của vùng đệm, hiển thị bằng màu xanh lục, trong khi bản đồ tiếp tục lấp đầy toàn bộ vùng chứa, hiển thị bằng màu xanh dương. Trong ví dụ này, bạn có thể làm nổi một trình đơn ở phía bên phải của bản đồ mà không che khuất các tuỳ chọn điều khiển bản đồ.
Để thêm khoảng đệm vào bản đồ, hãy tạo đối tượng UIEdgeInsets
và truyền đối tượng đó vào GMSMapView
.padding
.
Swift
// Insets are specified in this order: top, left, bottom, right let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0) mapView.padding = mapInsets
Objective-C
// Insets are specified in this order: top, left, bottom, right UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0); mapView.padding = mapInsets;