Điểm đánh dấu nâng cao sử dụng hai lớp để xác định điểm đánh dấu:
Lớp GMSAdvancedMarker
cung cấp điểm đánh dấu mặc định
và GMSPinImageOptions
có chứa các tuỳ chọn
để tuỳ chỉnh thêm. Trang này cho bạn biết cách tuỳ chỉnh điểm đánh dấu trong
các cách sau:
- Thay đổi màu nền
- Thay đổi màu đường viền
- Thay đổi màu ký tự
- Thay đổi văn bản ký tự
- Hỗ trợ thành phần hiển thị và ảnh động tuỳ chỉnh với thuộc tính iconView
![Các phần của điểm đánh dấu nâng cao](https://developers-dot-devsite-v2-prod.appspot.com/static/maps/documentation/ios-sdk/images/marker_parts.png?authuser=5&hl=vi)
Thay đổi màu nền
Sử dụng lựa chọn GMSPinImageOptions.backgroundColor
để
thay đổi màu nền của điểm đánh dấu.
Swift
//... let options = GMSPinImageOptions() options.backgroundColor = .blue let pinImage = GMSPinImage(options: options) advancedMarker.icon = pinImage advancedMarker.map = mapView
Objective-C
//... GMSPinImageOptions *options = [[GMSPinImageOptions alloc] init]; options.backgroundColor = [UIColor blueColor]; GMSPinImage *pin = [GMSPinImage pinImageWithOptions:options]; customTextMarker.icon = pin; customTextMarker.map = mapView;
Thay đổi màu đường viền
Dùng lựa chọn GMSPinImageOptions.borderColor
để thay đổi
màu nền của điểm đánh dấu.
Swift
//... let options = GMSPinImageOptions() options.borderColor = .blue let pinImage = GMSPinImage(options: options) advancedMarker.icon = pinImage advancedMarker.map = mapView
Objective-C
//... GMSPinImageOptions *options = [[GMSPinImageOptions alloc] init]; options.backgroundColor = [UIColor blueColor]; GMSPinImage *pin = [GMSPinImage pinImageWithOptions:options]; advancedMarker.icon = pin; advancedMarker.map = mapView;
Thay đổi màu ký tự
Sử dụng GMSPinImageGlyph.glyphColor
để thay đổi nền
màu của một điểm đánh dấu.
Swift
//... let options = GMSPinImageOptions() let glyph = GMSPinImageGlyph(glyphColor: .yellow) options.glyph = glyph let glyphColor = GMSPinImage(options: options) advancedMarker.icon = glyphColor advancedMarker.map = mapView
Objective-C
//... GMSPinImageOptions *options = [[GMSPinImageOptions alloc] init]; options.glyph = [[GMSPinImageGlyph alloc] initWithGlyphColor:[UIColor yellowColor]]; GMSPinImage *glyphColor = [GMSPinImage pinImageWithOptions:options]; advancedMarker.icon = glyphColor; advancedMarker.map = mapView;
Thay đổi văn bản ký tự
Sử dụng GMSPinImageGlyph
để thay đổi văn bản ký tự của một điểm đánh dấu.
Swift
//... let options = GMSPinImageOptions() let glyph = GMSPinImageGlyph(text: "ABC", textColor: .white) options.glyph = glyph let pinImage = GMSPinImage(options: options) advancedMarker.icon = pinImage advancedMarker.map = mapView
Objective-C
//... GMSPinImageOptions *options = [[GMSPinImageOptions alloc] init]; options.glyph = [[GMSPinImageGlyph alloc] initWithText:@"ABC" textColor:[UIColor whiteColor]]; GMSPinImage *pin = [GMSPinImage pinImageWithOptions:options]; customTextMarker.icon = pin; customTextMarker.map = mapView;
Hỗ trợ ảnh động và khung hiển thị tuỳ chỉnh với thuộc tính iconView
Tương tự như GMSMarker
, GMSAdvancedMarker
cũng hỗ trợ điểm đánh dấu bằng
iconView
.
Thuộc tính iconView
hỗ trợ ảnh động của tất cả thuộc tính có thể tạo ảnh của
UIView
ngoại trừ khung hình và chính giữa. Không hỗ trợ điểm đánh dấu có iconViews
và icons
được hiển thị trên cùng một bản đồ.
Swift
//... let advancedMarker = GMSAdvancedMarker(position: coordinate) advancedMarker.iconView = customView() advancedMarker.map = mapView func customView() -> UIView { // return your custom UIView. }
Objective-C
//... GMSAdvancedMarker *advancedMarker = [GMSAdvancedMarker markerWithPosition:kCoordinate]; advancedMarker.iconView = [self customView]; advancedMarker.map = self.mapView; - (UIView *)customView { // return custom view }
Hạn chế về bố cục
GMSAdvancedMarker
không trực tiếp hỗ trợ bố cục
các điều kiện ràng buộc cho iconView
của thuộc tính đó. Tuy nhiên, bạn có thể đặt điều kiện ràng buộc về bố cục đối với người dùng
các phần tử giao diện trong iconView
. Sau khi tạo khung hiển thị, đối tượng
frame
hoặc size
phải được chuyển đến điểm đánh dấu.
Swift
//do not set advancedMarker.iconView.translatesAutoresizingMaskIntoConstraints = false let advancedMarker = GMSAdvancedMarker(position: coordinate) let customView = customView() //set frame customView.frame = CGRect(0, 0, width, height) advancedMarker.iconView = customView
Objective-C
//do not set advancedMarker.iconView.translatesAutoresizingMaskIntoConstraints = NO; GMSAdvancedMarker *advancedMarker = [GMSAdvancedMarker markerWithPosition:kCoordinate]; CustomView *customView = [self customView]; //set frame customView.frame = CGRectMake(0, 0, width, height); advancedMarker.iconView = customView;