2017-12-29 37 views
0

MKOverlayPathRenderer에 설명 된 다각형 영역이 있습니다. 폴리곤으로 둘러싸인 영역을 채우는 대신, 대신에 그 영역 밖에있는 영역을 채우고 싶습니다.MKOverlayPathRenderer 반전 채우기 영역

어떻게 MKOverlayPathRenderer의 채우기 영역을 반전시킬 수 있습니까? 당신이 당신의 오버레이를 그릴 때

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { 
    let renderer = parser.rendererForOverlay(overlay)! as! MKOverlayPathRenderer 
    renderer.fillColor = UIColor.red 
    renderer.strokeColor = UIColor.blue 
    return renderer 
} 
+0

미리 알림 앱은 비슷한 기능을 수행합니다. 빨리 축소하면 혼란스럽고 구멍이있는 방대한 사각형이 렌더링된다는 것을 알 수 있습니다. 렌더러 서브 클래스를 사용하면 동일한 효과를 얻을 수 있습니다. –

+0

@KaneCheshire, 그 목표를 달성하는 데 무엇이 관련되어 있는지 알고 있습니까? – IHaveAQuestion

답변

0

당신은 "interiorPolygons"를 사용할 수 있습니다 :

이 렌더러를 가져올 수있는 기능입니다

CLLocationCoordinate2D polygoneCoords[10] 
= { {Point1LAT,Point1LONG}, {Point2LAT,Point2LONG}, {Point3LAT,Point3LONG}, {Point4LAT,Point4LONG},{Point5LAT,Point5LONG},{Point6LAT,Point6LONG},{Point7LAT,Point7LONG},{Point8LAT,Point8LONG},{Point9LAT,Point9LONG},{Point10LAT,Point10LONG}}; 
self.myPolygoneArea = [MKPolygon polygonWithCoordinates:polygoneCoords count:10]; 

CLLocationCoordinate2D worldCoords[6] = { {90, 0}, {90, 180}, {-90,180}, {-90,0}, {-90,-180}, {90,-180} }; 
myOverlay = [MKPolygon polygonWithCoordinates:worldCoords count:6 interiorPolygons:[NSArray arrayWithObject:myPolygoneArea]]; 

[self.MyMap addOverlay:myOverlay]; 

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

MKPolygonRenderer *polygon = [[MKPolygonRenderer alloc]initWithOverlay:overlay]; 

polygon.strokeColor = [UIColor redColor]; 
polygon.lineWidth = 2; 
polygon.fillColor = [[UIColor blackColor]colorWithAlphaComponent:0.3]; 

return polygon;} 

희망이 도움이 ...