2017-05-30 28 views
0

我正在努力解决与MapKit有关的问题。MKOverlayRenderer剪切和模糊与变焦iOS

我创建了一个MKPolygon的列表,根据我的geofence的服务器数据。

+ (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; } 

,并将其添加到地图作为MKOverlayRender

- (MKOverlayRenderer *) mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay{ 

    if([overlay isKindOfClass: [MKCircle class]]){ 
     MKCircleRenderer *circleRender = [[MKCircleRenderer alloc] initWithCircle:(MKCircle *)overlay]; 
     circleRender.fillColor = [ [Common colorWithHexString:BlueGeoFence] colorWithAlphaComponent:0.3]; 

     return circleRender; 
    }else if([overlay isKindOfClass: [MKPolygon class]]){ 

     MKPolygonRenderer *polygonRenderer = [[MKPolygonRenderer alloc] initWithPolygon:(MKPolygon *)overlay]; 
     polygonRenderer.fillColor = [ [Common colorWithHexString:BlueGeoFence] colorWithAlphaComponent:0.3]; 

     return polygonRenderer; 
    } 

    return nil; 
} 

然而,当我放大或更改地图的位置重叠是削减,并有某种模糊效果

enter image description here

enter image description here

不知道如何解决这个问题?

在此先感谢

回答

0

我有同样的问题。问题的根源在于MKPolygon正在创建内部多边形,而实际上并不是内部多边形。检查您的数据并确保您的内部多边形坐标实际上位于较大多边形的范围内。