GeoJSONSerialization
encodes and decodes between GeoJSON and MapKit shapes, following the API conventions of Foundation's NSJSONSerialization
class.
#import <MapKit/MapKit.h>
#import "GeoJSONSerialization.h"
NSURL *URL = [[NSBundle mainBundle] URLForResource:@"map" withExtension:@"geojson"];
NSData *data = [NSData dataWithContentsOfURL:URL];
NSDictionary *geoJSON = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSArray *shapes = [GeoJSONSerialization shapesFromGeoJSONFeatureCollection:geoJSON error:nil];
for (MKShape *shape in shapes) {
if ([shape isKindOfClass:[MKPointAnnotation class]]) {
[mapView addAnnotation:shape];
} else if ([shape conformsToProtocol:@protocol(MKOverlay)]) {
[mapView addOverlay:(id <MKOverlay>)shape];
}
}
After implementing the necessary
MKMapViewDelegate
methods, the resulting map will look something like this.
Mattt Thompson
GeoJSONSerialization is available under the MIT license. See the LICENSE file for more info.