Zaawansowane znaczniki używają dwóch klas:
Klasa GMSAdvancedMarker
udostępnia znacznik domyślny
możliwości, a GMSPinImageOptions
zawiera opcje
w celu dalszego dostosowania. Na tej stronie znajdziesz informacje na temat dostosowywania znaczników w
w następujący sposób:
- Zmienianie koloru tła
- Zmiana koloru obramowania
- Zmienianie koloru glifu
- Zmienianie tekstu glifu
- Obsługa niestandardowych widoków i animacji za pomocą właściwości iconView
![Elementy zaawansowanego znacznika](https://developers.google.cn/static/maps/documentation/ios-sdk/images/marker_parts.png?authuser=19&hl=pl)
Zmienianie koloru tła
Użyj opcji GMSPinImageOptions.backgroundColor
, aby:
zmienić kolor tła znacznika.
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;
Zmiana koloru obramowania
Użyj opcji GMSPinImageOptions.borderColor
, aby zmienić
lub kolor tła znacznika.
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;
Zmienianie koloru glifu
Aby zmienić tło, użyj aplikacji GMSPinImageGlyph.glyphColor
kolor znacznika.
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;
Zmienianie tekstu glifu
Użyj GMSPinImageGlyph
, aby zmienić tekst glifu znacznika.
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;
Obsługa widoków niestandardowych i animacji za pomocą właściwości iconView
Podobne do GMSMarker
, GMSAdvancedMarker
obsługuje również znaczniki z
iconView
.
Właściwość iconView
obsługuje animację wszystkich właściwości animowanych obiektów
UIView
oprócz ramki i środka. Nie obsługuje znaczników z atrybutem iconViews
i icons
są wyświetlane na tej samej mapie.
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 }
Ograniczenia układu
GMSAdvancedMarker
nie obsługuje bezpośrednio układu
funkcji iconView
. Możesz jednak
ustawić ograniczenia układu
elementów interfejsu w interfejsie iconView
. Po utworzeniu widoku obiekt
Do znacznika powinna być zastosowana metoda frame
lub size
.
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;