Định cấu hình bản đồ

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

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 thông qua 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à thời gian chạy cài đặt của bản đồ. Để biết chi tiết về việc thêm vùng chứa bản đồ, hãy xem phần Thêm bản đồ.

Cài đặt bản đồ ban đầu bao gồm:

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 đang cập nhật GMSMapView .

Tùy chọn bản đồ

Khi khởi chạy chế độ xem bản đồ của bạn, các tuỳ chọn cấu hình được đặt với GMSMapViewOptions. Các thuộc tính lựa 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à CGctZero.
máy ảnh
Giá trị: GMSCameraPosition
Vị trí máy ảnh mặc định của 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 một thực thể GMSMapViewOptions có giá trị mặc định trực tiếp tới 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 đối tượng GMSMapViewOptions có các giá trị mặc định trực tiếp tới 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 chế độ xem bản đồ, có thể bạn nên ghi đè màu nền mặc định của bản đồ. Có thể thực hiện điều này bằng cách đặt 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ể tùy chỉnh bản đồ của mình với một trong vài loại bản đồ. Loại bản đồ chi phối nội dung đại diện tổng thể của bản đồ. Ví dụ: tập bản đồ thường chứa bản đồ chính trị tập trung vào việc hiển thị ranh giới và bản đồ đường cho thấy tất cả các đường của một thành phố hoặc một vùng. 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
Lộ trình điển hình. Hiển thị đường, một số đối tượng địa lý được xây dựng bởi con người và các đối tượng tự nhiên quan trọng như sông. Nhãn đường và đối tượng cũng hiển thị. Hỗ trợ đặt bảng phối màu của bản đồ thành tối, sáng, hoặc tuân theo chế độ cài đặt hệ thống.
Kết hợp
Giá trị: kGMSTypeHybrid
Dữ liệu ảnh chụp vệ tinh có thêm bản đồ đường đi. Đường và đối tượng địa lý nhãn cũng hiển thị.
Vệ tinh
Giá trị: kGMSTypeSatellite
Dữ liệu ảnh chụp vệ tinh. Nhãn đường và đối tượng thì không hiển thị.
Địa hình
Giá trị: kGMSTypeTerrain
Dữ liệu địa hình. Bản đồ bao gồm màu sắc, đường đồng mức và nhãn, và đổ bóng phối cảnh. Một số đường và nhãn cũng hiển thị. Hỗ trợ đặt bảng phối màu của bản đồ thành tối, sáng hoặc tuân theo chế độ cài đặt hệ thống.
Không có
Giá trị: kGMSTypeNone
Không có ô bản đồ nào. Các ô bản đồ cơ sở sẽ không được hiển thị. Chế độ này là hữu ích cùng với thẻ thông tin các lớp. Tính năng hiển thị dữ liệu giao thông sẽ bị tắt khi loại bản đồ là được đặt thành không có.

Thay đổi loại bản đồ

Để thiết lập loại bản đồ, hãy gán một giá trị mới cho GMSMapView.mapType thuộc tính này. 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ị so sánh đị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 bản đồ dành cho iOS sẽ hiển thị các sơ đồ tầng cho không gian trong nhà như sân bay, trung tâm mua sắm, cửa hàng bán lẻ lớn và phương tiện công cộng các trạm sạc. Sơ đồ tầng trong nhà được tích hợp vào các ô bản đồ mặc định cho "normal" (bình thường) loại bản đồ (kGMSTypeNormal) và được tự động bật khi người dùng phóng to và mờ đi khi bản đồ được thu nhỏ.

Bạn có thể tắt bản đồ trong nhà bằng cách đặt thuộc tính indoorEnabled của GMSMapView đến NO.

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

Ngoài ra, bạn có thể chỉ tắt Kiểm soát Bộ chọn giá sàn.

Đang thêm sơ đồ tầng

Có sơ đồ tầng trong một số vị trí. Nếu không có dữ liệu sơ đồ tầng cho toà nhà mà bạn muốn đánh dấu trong ứng dụng, bạn có thể:

  • Thêm tầng trực tiếp lên Google Maps. Nhờ đó, kế hoạch của bạn sẽ khả dụng cho tất cả người dùng của Google Maps.
  • Hiển thị sơ đồ tầng dưới dạng Lớp phủ mặt đất. Chế độ này chỉ cho phép người dùng ứng dụng để xem sơ đồ tầng của bạn.

Lớp giao thông

Bạn có thể cho phép người dùng xem bản đồ với mật độ giao thông thông tin xếp chồng lên trên. Thẻ này cung cấp bản tóm tắt bằng hình ảnh về tình hình giao thông tại địa phương. Bạn có thể bật và tắt lớp giao thông bằng cách gọi thời gian trafficEnabled . Ví dụ sau cho thấy cách lớp giao thông có thể xuất hiện trên bản đồ.

Bản đồ Google hiển thị giao thông
lớp

Hỗ trợ tiếp cận

Theo mặc định, các yếu tố hỗ trợ tiếp cận trên bản đồ sẽ bị ẩn. Bạn có thể bật khả năng hỗ trợ tiếp cận bằng cách đặt thuộc tính accessibilityElementsHidden của GMSMapView đến 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 phủ lên (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 tuân 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í sẽ không xuất hiện trên bản đồ. Bạn có thể bật hộp kiểm màu xanh dương Vị trí" hướng dấu chấm và la bàn bằng cách đặt myLocationEnabled bật 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 vị trí hiện tại của người dùng thông qua Thuộc tính myLocation. Tài sản này có thể chưa dùng được ngay - cho ví dụ: nếu người dùng được iOS nhắc cho phép truy cập vào dữ liệu 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

Nhiều thành phố, khi được xem cận cảnh, sẽ có các toà nhà 3D nhìn thấy được, như là có thể xem được trong ảnh Seattle, Washington bên dưới.

Bản đồ 3D các toà nhà ở Seattle, Washington.

Bạn có thể tắt toà nhà 3D bằng cách đặt thông số GMSMapView thuộc tính Swift hoặc Object-C, như được hiển thị dưới đây:

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

Khoảng đệm bản đồ

Google Maps được thiết kế để lấp đầy toàn bộ khu vực được xác định bởi GMSMapView. Một số khía cạnh của cách bản đồ xuất hiện và hoạt động được xác định bởi các kích thước của chế độ xem:

  • Mục tiêu của máy ảnh phản ánh chính giữa của vùng đệ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ố về bản quyền hoặc biểu trưng của Google sẽ xuất hiện dọc theo cạnh dưới 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.Thuộc tính padding. Bản đồ tiếp tục lấp đầy toàn bộ vùng chứa, nhưng văn bản và thành phần điều khiển vị trí, cử chỉ trên bản đồ và máy ảnh chuyển động như thể nó đượ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 cách sử dụng lệnh gọi API hoặc nhấn nút (ví dụ: la bàn, vị trí) tương ứng với vùng đệm.
  • GMSMapView.projection trả về một phép chiếu chỉ bao gồm phần đệm .
  • Các thành phần điều khiển trên giao diện người dùng được bù trừ từ cạnh của vùng chứa bởi giá trị điểm.

Khoảng đệm có thể hữu ích khi thiết kế giao diện người dùng chồng chéo lên một phần bản đồ. Ví dụ: trong hình ảnh, bản đồ được đệm dọc theo các cạnh trên cùng và bên phải. Các nút điều khiển bản đồ hiển thị và văn bản pháp lý được hiển thị dọc theo các cạnh của khoảng đệm được 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 ở bên phải của bản đồ mà không che khuất các tuỳ chọn kiểm soát bản đồ.

Khoảng đệm 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 GMSMapViewThuộc tính 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;
      

Bảng phối màu bản đồ

Đối với bản đồ loại thường và địa hình, bạn có thể đặt bảng phối màu bản đồ thành tối, đèn hoặc để sử dụng chế độ cài đặt hiện tại của hệ thống. Ví dụ: bạn có thể làm tối hoặc làm sáng bảng phối màu của bản đồ dựa trên thời gian trong ngày hoặc sử dụng trong nhà hoặc ngoài trời của thiết bị.

Sử dụng GMSMapView overrideUserInterfaceStyle: để đặt và cập nhật bảng phối màu của bản đồ.

Swift

let options = GMSMapViewOptions()
// Map is init to use light mode by default.
let mapView = GMSMapView(options: options)
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = .dark
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = .light
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = .unspecified

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
// Map is init to always use light mode.
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark;
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;