iOS - 如何从JSON文件创建与其GMSMutablePath关联的GMSPolygons字典

时间:2017-05-18 08:49:58

标签: ios objective-c json

我目前正在使用iOS Google Map SDK,我想在地图上绘制一些多边形。

更准确地说,我有一个JSON包含特定部门的不同纬度/经度值。

我可以通过创建仅由几个点组成的GMSPolygon来绘制GMSMutablePath,如Google文档中所示。

我能在另一端实现的目标是使其成为通用的。

让我给你看一些代码。

{"01": [[51.01, 2.07], [50.99, 2.12], [51.01, 2.11], [51.03, 2.15], ...], "02": [[50.51, 1.64], [50.51, 1.66], ...]}

我有这个JSON文件,包含特定部门的数千个位置点。我缩短了它,以便您只能看到JSON对象的格式。

这是我的解析:

-(void) parseJsonDept {
    NSString *jsonFilePath = [[NSBundle mainBundle] pathForResource:@"dept" ofType:@"json"];
    if (!jsonFilePath) {
        NSLog(@"Not a valid FilePath");
        return;
    }

    NSString *myJSON = [[NSString alloc] initWithContentsOfFile:jsonFilePath encoding:NSUTF8StringEncoding error:NULL];
    if (!myJSON) {
        NSLog(@"File couldn't be read!");
        return;
    } 

    NSError *error =  nil;
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:[myJSON dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error];
}

非常简单,现在我不知道如何处理它。

我使用Google文档中的这段代码来绘制多边形。

-(void) drawPolygon {
    // Create a rectangular path
    GMSMutablePath *rect = [GMSMutablePath path];
    [rect addCoordinate:CLLocationCoordinate2DMake(51.01, 2.07)];
    [rect addCoordinate:CLLocationCoordinate2DMake(50.99, 2.12)];
    [rect addCoordinate:CLLocationCoordinate2DMake(51.03, 2.15)];
    [rect addCoordinate:CLLocationCoordinate2DMake(51.01, 2.18)];

    // Create the polygon, and assign it to the map.
    GMSPolygon *polygon = [GMSPolygon polygonWithPath:rect];
    polygon.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05];
    polygon.strokeColor = [UIColor blackColor];
    polygon.strokeWidth = 2;
    polygon.map = _mapView;
}

我的问题是如何创建与GMSPolygons及其GMSMutablePath相关联的Department词典。

例如,循环从我的JSON字典中抛出每个部门,并[rect addCoordinate:CLLocationCoordinate2DMake(lat, long)]将坐标添加到我的GMSMutablePath

对于每个部门都是如此,以便最终得到我的多边形列表。

我一直在努力学习JSON比我预期的更多......

1 个答案:

答案 0 :(得分:1)

获得BufferBlock后,您可以循环播放并从中Dictionary。{/ p>

GMSMutablePath