如何从gps坐标着色地图上的区域

时间:2012-10-31 20:34:38

标签: iphone objective-c ios

我正在尝试在具有多个GPS坐标的地图上绘制地图。这些坐标将从Web服务下载。在彩色区域块上创建了五个坐标。因为我无法发布图像,这里是一个例子的网址 OutageMap

有人能告诉我实现这一目标的最佳方式是什么?我在黑暗中拍摄,所以没有真正的代码可用。以下网址是我们目前通过html使用的内容。尝试将其原生于iphone,而不是调用webview。

1 个答案:

答案 0 :(得分:0)

您可以在点列表中使用MKPolygonMKPolygonView

创建viewController或加载数据时,为地图添加每个彩色块的MKPolygon

- (void)viewDidLoad {
    for (NSDictionary *coloredAreas in coloredAreas) {
        NSArray *coordinateData = coloredArea[@"coords"];
        // this assumes coordinateData is an array of arrays like:
        // [[0, 0], [0, 1], [0, 1]]
        NSUInteger coordsLen = [coordinateData count];
        CLLocationCoordinate2D *coords = malloc(sizeof(CLLocationCoordinate2D) * coordsLen);
        for (int i=0; i < coordsLen; i++) {
            coords[i] = CLLocationCoordinate2DMake(coordinateData[i][0], coordinateData[i][1]);
        }
        MKMapPoint point[] = coloredAreas['points'];
        MKPolygon *polygon = [MKPolygon polygonWithPoints:points count:3];
        [self.mapView addOverlay:polygon];
    }
}

然后添加mapView:viewForOverlay方法绘制每个多边形:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
    MKPolygonView *polygonView = [[MKPolygonView alloc] initWithPolygon:overlay]]; 
    polygonView.fillColor = [UIColor greenColor];
    return polygonView;
}

这将为每个多边形绘制一个绿色框。为了使每个多边形成为某种颜色,我将创建一个ColoredPolygon类,它是MKPolygon的子类,并且具有color属性。然后创建ColoredPolygon并在加载数据时设置颜色。在mapView:viewForOverlay中,您只需将MKOverlay转换为ColoredPolygon,然后将fillColor设置为ColoredPolygon.color