Os Marcadores Avançados usam duas classes para definir marcadores: a
A classe GMSAdvancedMarker
fornece um marcador padrão.
recursos, e GMSPinImageOptions
contém opções
para personalização adicional. Esta página mostra como personalizar marcadores no
da seguinte maneira:
- Mudar a cor do plano de fundo
- Mudar a cor da borda
- Mudar a cor do glifo
- Mudar o texto do glifo
- Oferecer suporte a visualizações e animações personalizadas com a propriedade iconView
![Partes de um marcador avançado](https://developers.google.cn/static/maps/documentation/ios-sdk/images/marker_parts.png?authuser=19&hl=pt)
Mudar a cor do plano de fundo
Use a opção GMSPinImageOptions.backgroundColor
para
alterar a cor de fundo de um marcador.
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;
Mudar a cor da borda
Use a opção GMSPinImageOptions.borderColor
para mudar
a cor de fundo de um marcador.
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;
Mudar a cor do glifo
Use GMSPinImageGlyph.glyphColor
para alterar o plano de fundo
cor de um marcador.
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;
Mudar o texto do glifo
Use GMSPinImageGlyph
para mudar o glifo de um marcador.
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;
Oferecer suporte a visualizações e animações personalizadas com a propriedade iconView
Semelhante a GMSMarker
, GMSAdvancedMarker
também é compatível com marcadores com uma
iconView
.
A propriedade iconView
oferece suporte à animação de todas as propriedades animáveis de
UIView
, exceto o frame e o centro. Ele não é compatível com marcadores com iconViews
.
e icons
exibidas no mesmo mapa.
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 }
Restrições de layout
O GMSAdvancedMarker
não oferece suporte direto ao layout.
restrições para iconView
. No entanto, você pode definir restrições de layout para usuários
elementos da interface no iconView
. Ao criar a visualização, o objeto
frame
ou size
precisa ser transmitido para o marcador.
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;