Marker customization

Select platform: Android iOS JavaScript

A screenshot of different custom
markers

Advanced markers uses two classes to define markers: the GMSAdvancedMarker class provides default marker capabilities, and GMSPinImageOptions contains options for further customization. This page shows you how to customize markers in the following ways:

  • Change the background color
  • Change the border color
  • Change the glyph color
  • Change the glyph text
  • Support custom views and animation with the iconView property
Parts of an advanced marker
Figure 1 : The parts of an advanced marker.

Change the background color

Use the GMSPinImageOptions.backgroundColor option to change the background color of a marker.

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 
 ; 

Change the border color

Use the GMSPinImageOptions.borderColor option to change the background color of a marker.

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 
 ; 

Change the glyph color

Use GMSPinImageGlyph.glyphColor to change the background color of a marker.

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 
 ; 

Change the glyph text

Use GMSPinImageGlyph to change the glyph text of a marker.

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 
 ; 

Support custom views and animation with the iconView property

Similar to GMSMarker , GMSAdvancedMarker also supports markers with an iconView . The iconView property supports animation of all animatable properties of UIView except frame and center. It does not support markers with iconViews and icons displayed on the same map.

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 
 } 

Layout constraints

GMSAdvancedMarker does not directly support layout constraints for its iconView . However, you can set layout constraints for user interface elements within the iconView . Upon creating your view, the object frame or size should be passed to the marker.

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 
 ; 
Create a Mobile Website
View Site in Mobile | Classic
Share by: