This page shows you how to render geographic data in KML and GeoJSON
formats, using GMUKMLParser
and GMUGeoJSONParser
, in
conjunction with GMUGeometryRenderer
. KML and GeoJSON are popular
formats for rendering geographic data such as points, lines, and polygons.
The following screenshot shows some example KML data rendered on a map:

Prerequisites and notes
The GMUKMLParser
and GMUGeoJSONParser
are part of
the Maps SDK for iOS Utility Library. If you haven't yet set up
the library, follow the setup guide before reading the rest of this page.
For the full code sample, see the sample apps on GitHub.
Rendering KML data
To render KML data on a map, create a GMUKMLParser
with the
path to a KML resource (KML_Sample.kml
in this example). Then,
create a GMUGeometryRenderer
passing the GMUKMLParser
instance. Finally, call GMUGeometryRenderer.render()
. The
following code example shows rendering KML data on a map:
Swift
import GoogleMapsUtils class KML: NSObject { private var mapView: GMSMapView! func renderKml() { guard let path = Bundle.main.path(forResource: "KML_Sample", ofType: "kml") else { print("Invalid path") return } let url = URL(fileURLWithPath: path) let kmlParser = GMUKMLParser(url: url) kmlParser.parse() let renderer = GMUGeometryRenderer( map: mapView, geometries: kmlParser.placemarks, styles: kmlParser.styles ) renderer.render() } }
Objective-C
@import GoogleMapsUtils; @implementation KML { GMSMapView *_mapView; } - (void)renderKml { NSString *path = [[NSBundle mainBundle] pathForResource:@"KML_Sample" ofType:@"kml"]; NSURL *url = [NSURL fileURLWithPath:path]; GMUKMLParser *parser = [[GMUKMLParser alloc] initWithURL:url]; [parser parse]; GMUGeometryRenderer *renderer = [[GMUGeometryRenderer alloc] initWithMap:_mapView geometries:parser.placemarks styles:parser.styles]; [renderer render]; } @end
Rendering GeoJSON data
To render GeoJSON data on a map, create a GMUGeoJSONParser
with
the path to a GeoJSON resource (GeoJSON_sample.kml
in this
example). Then, create a GMUGeometryRenderer
, passing the
GMUKMLParser
instance. Finally, call
GMUGeometryRenderer.render()
. The following code example shows
rendering GeoJSON data on a map:
Swift
import GoogleMapsUtils class GeoJSON { private var mapView: GMSMapView! func renderGeoJSON() { guard let path = Bundle.main.path(forResource: "GeoJSON_sample", ofType: "json") else { return } let url = URL(fileURLWithPath: path) let geoJsonParser = GMUGeoJSONParser(url: url) geoJsonParser.parse() let renderer = GMUGeometryRenderer(map: mapView, geometries: geoJsonParser.features) renderer.render() } }
Objective-C
@import GoogleMapsUtils; @implementation GeoJSON { GMSMapView *_mapView; } - (void)renderGeoJSON { NSString *path = [[NSBundle mainBundle] pathForResource:@"GeoJSON_sample" ofType:@"json"]; NSURL *url = [NSURL fileURLWithPath:path]; GMUGeoJSONParser *parser = [[GMUGeoJSONParser alloc] initWithURL:url]; [parser parse]; GMUGeometryRenderer *renderer = [[GMUGeometryRenderer alloc] initWithMap:_mapView geometries:parser.features]; [renderer render]; } @end