Select platform: [Android](https://developers.google.com/maps/documentation/android-sdk/utility.md.txt "View this page for the Android platform docs.") [iOS](https://developers.google.com/maps/documentation/ios-sdk/utility.md.txt "View this page for the iOS platform docs.")

Looking for advanced features to add to your maps? The
[Maps SDK for iOS
Utility Library](https://github.com/googlemaps/google-maps-ios-utils) on GitHub is an open-source library of classes that are
useful for a range of applications. The GitHub repository includes the utility
classes and a demo app that illustrates the use of each class.

## The utilities

|---|---|
| ![A map with clustered markers in the default style](https://developers.google.com/static/maps/documentation/ios-sdk/images/utility-markercluster.png) | ### Marker Clustering The `GMUClusterManager` helps you manage multiple markers at different zoom levels. This means you can put a large number of markers on a map without making the map hard to read. When a user views the map at a high zoom level, the individual markers show on the map. When the user zooms out to a lower zoom level, the markers gather together into clusters, to make viewing the map easier. For details, see the documentation on the [Marker Clustering](https://developers.google.com/maps/documentation/ios-sdk/utility/marker-clustering.md.txt). |
| No image for this utility. | ### Quadtree A quadtree is a data structure that's useful for finding points near a single point, by searching inside an area surrounding the point of interest. For details, see the documentation on the [Quadtree](https://developers.google.com/maps/documentation/ios-sdk/utility/quadtree.md.txt). |
| ![A map with KML data](https://developers.google.com/static/maps/documentation/ios-sdk/images/utility-kml-noframe.png) | ### KML KML is a popular format for rendering geographic data such as points, lines, and polygons. The `GMUKMLParser` lets you parse and render geographic data in the KML format. For details, see the documentation on the [KML](https://developers.google.com/maps/documentation/ios-sdk/utility/kml.md.txt). |
| ![A map with a GeoJSON layer](https://developers.google.com/static/maps/documentation/ios-sdk/images/utility-geojson-noframe.png) | ### Import GeoJSON onto your map You can store features in [GeoJSON](http://geojson.org/) format and use this utility to render them as a layer on top of a map. Render geographic data in the GeoJSON format using `GMUGeoJSONParser` in conjunction with `GMUGeometryRenderer`. For details, see the documentation on the [GeoJSON](https://developers.google.com/maps/documentation/ios-sdk/utility/geojson.md.txt). |
| ![A map with a heatmap showing location of police stations](https://developers.google.com/static/maps/documentation/ios-sdk/images/utility-heatmap-noframe.png) | ### Heatmaps Heatmaps make it easy for viewers to understand the distribution and relative intensity of data points on a map. Rather than placing a marker at each location, heatmaps use color and shape to represent the distribution of data. For details, see the documentation on the [Heatmaps](https://developers.google.com/maps/documentation/ios-sdk/utility/heatmap.md.txt). |
| ![A map with custom markers showing images](https://developers.google.com/static/maps/documentation/ios-sdk/images/utility-custommarker-noframe.png) | ### Custom markers Use the delegate [`GMUClusterRendererDelegate`](https://github.com/googlemaps/google-maps-ios-utils/blob/master/src/Clustering/View/GMUDefaultClusterRenderer.h) on `GMUDefaultClusterRenderer` to customize the properties of a marker before and after it is added to the map. |
| ![A map showing the disatance between to coordinates](https://developers.google.com/static/maps/documentation/ios-sdk/images/utility-spherical-noframe.png) | ### Geometry utilities A set of Swift spherical geometry utility functions of the [`GMSGeometryUtils`](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Functions.md.txt) module of the Maps SDK for iOS. Use these extensions to perform many types of geometric operations, including: - Determine the great circle distance between coordinates - Determine if a coordinate is inside a polygon - Determine if a coordinate lies on or near a path within a specified tolerance - Determine the area of this polygon - many others |