我有一些mkoverlays(实际上它们是mkpolygons),地图一出现就会加载它们。我想动态地改变它们的颜色。我能看到的唯一方法就是去掉覆盖层,然后用新的颜色重新添加。在现有的覆盖上有更好的方法吗?
我是objective-c/xcode/ios的新手…所以请温柔一点:)

最佳答案

重要的是要记住,许多mapkit都有不同的对象(mkpolygon、mkcircle、mkshape)来保存与绘制视图相关的数据(mkpolygon view、mkcircleview、mkoverlayview等),在许多情况下,您需要获取对视图对象的引用,以便可以设置背景色。即

MKOverlayView *anOverlay;  //You need to set this view to the object you are interested in
anOverlay.backgroundColor = [UIColor redColor];
[anOverlay setNeedsDisplay];

如果对象是mkpolygon,则应确定将其绘制到的mkpolygonview,然后设置fillcolor属性,并通过调用setneedsdisplay重新绘制对象:
MKPolygonView *theView;
theView.fillColor = [UIColor redColor];
[theView setNeedsDisplay];

08-06 13:17