iPhone MKMapView - MKPolygon Issues

前端 未结 4 1893
南笙
南笙 2020-12-09 21:02

I am trying to plot a MKPolygon on a MKMapView in iOS 4.0. I have an NSArray which contains custom objects that include properties for latitude/longitude. I have a code samp

4条回答
  •  甜味超标
    2020-12-09 21:20

    The polygonWithCoordinates method wants a C array of CLLocationCoordinate2D structs. You can use malloc to allocate memory for the array (and free to release the memory). Loop through your NSArray and set it each element in the struct array.

    For example:

    coordsLen = [coordinateData count];
    CLLocationCoordinate2D *coords = malloc(sizeof(CLLocationCoordinate2D) * coordsLen);
    for (int i=0; i < coordsLen; i++)
    {
        YourCustomObj *coordObj = (YourCustomObj *)[coordinateData objectAtIndex:i];
        coords[i] = CLLocationCoordinate2DMake(coordObj.latitude, coordObj.longitude);
    }
    MKPolygon *polygon = [MKPolygon polygonWithCoordinates:coords count:coordsLen];
    free(coords);
    [mapView addOverlay:polygon];
    

    The viewForOverlay method should look like this:

    - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id )overlay
    {
        MKPolygonView *polygonView = [[[MKPolygonView alloc] initWithPolygon:overlay] autorelease]; 
        polygonView.lineWidth = 1.0;
        polygonView.strokeColor = [UIColor redColor];
        polygonView.fillColor = [UIColor greenColor];
        return polygonView;
    }
    

提交回复
热议问题