有人能告訴我如何在Apple地圖中繪制GeoJson文件作為疊加層?我想要一個完整得例子,我有多邊形或多邊形得形狀?
如果您為我提供了使用MKMapView渲染它得代碼或庫,那么這個文件Countries GeoJSON就足夠了
解決方法
我找到了一個解決方案,萬一有人也想要幫助.
@interface HHLViewController+ (NSArray *)countriesOverlays;@end@implementation HHLViewController- (void)viewDidLoad { [super viewDidLoad]; NSArray *overlays = [HHLViewController countriesOverlays]; [self.stateMapView addOverlays:overlays];}+ (NSArray *)countriesOverlays { NSString *fileName = [[NSBundle mainBundle] pathForResource:@"countries" ofType:@"json"]; NSData *overlayData = [NSData dataWithContentsOfFile:fileName]; NSArray *countries = [[NSJSONSerialization JSONObjectWithData:overlayData options:NSJSONReadingAllowFragments error:nil] objectForKey:@"features"]; NSMutableArray *overlays = [NSMutableArray array]; for (NSDictionary *country in countries) { NSDictionary *geometry = country[@"geometry"]; if ([geometry[@"type"] isEqualToString:@"Polygon"]) { MKPolygon *polygon = [HHLViewController overlaysFromPolygons:geometry[@"coordinates"] id:country[@"properties"][@"name"]]; if (polygon) { [overlays addObject:polygon]; } } else if ([geometry[@"type"] isEqualToString:@"MultiPolygon"]){ for (NSArray *polygonData in geometry[@"coordinates"]) { MKPolygon *polygon = [HHLViewController overlaysFromPolygons:polygonData id:country[@"properties"][@"name"]]; if (polygon) { [overlays addObject:polygon]; } } } else { NSLog(@"Unsupported type: %@",geometry[@"type"]); } } return overlays;}+ (MKPolygon *)overlaysFromPolygons:(NSArray *)polygons id:(NSString *)title{ NSMutableArray *interiorPolygons = [NSMutableArray arrayWithCapacity:[polygons count] - 1]; for (int i = 1; i < [polygons count]; i++) { [interiorPolygons addObject:[HHLViewController polygonFromPoints:polygons[i] interiorPolygons:nil]]; } MKPolygon *overlayPolygon = [HHLViewController polygonFromPoints:polygons[0] interiorPolygons:interiorPolygons]; overlayPolygon.title = title; return overlayPolygon;}+ (MKPolygon *)polygonFromPoints:(NSArray *)points interiorPolygons:(NSArray *)polygons{ NSInteger numberOfCoordinates = [points count]; CLLocationCoordinate2D *polygonPoints = malloc(numberOfCoordinates * sizeof(CLLocationCoordinate2D)); NSInteger index = 0; for (NSArray *pointArray in points) { polygonPoints[index] = CLLocationCoordinate2DMake([pointArray[1] floatValue],[pointArray[0] floatValue]); index++; } MKPolygon *polygon; if (polygons) { polygon = [MKPolygon polygonWithCoordinates:polygonPoints count:numberOfCoordinates interiorPolygons:polygons]; } else { polygon = [MKPolygon polygonWithCoordinates:polygonPoints count:numberOfCoordinates]; } free(polygonPoints); return polygon;}@end
以上是來客網為你收集整理得ios – 在Apple Maps中繪制GeoJson作為疊加層全部內容,希望內容能夠幫你解決ios – 在Apple Maps中繪制GeoJson作為疊加層所遇到得程序開發問題。
如果覺得來客網網站內容還不錯,歡迎將來客網網站推薦給程序員好友。
聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。