Encode & Decode Between GeoJSON & MapKit Shapes
This library is no longer maintained.
In iOS 13+ and macOS 10.15+, useMKGeoJSONDecoder
instead.
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.
GeoJSONSerialization is available under the MIT license.
See the LICENSE file for more info.