mkx27;在iOS7上不进行第二次渲染

mkx27;在iOS7上不进行第二次渲染,ios7,mkannotation,mkoverlay,Ios7,Mkannotation,Mkoverlay,我有一个地图视图,上面有注释。对于每个注释,我需要显示一个仅仅是一个圆的覆盖。此圆需要是两种不同颜色中的一种,具体取决于一个值。用户可以在屏幕上选择其他内容,需要删除所有注释和覆盖,并根据新选择的项目添加新注释和覆盖 第一次加载具有地图视图的控制器时,一切都很好。当用户选择新项目时,将删除旧注释和覆盖,并添加新注释和覆盖,但覆盖不会显示。在设置断点时,我没有看到在用户选择新项后调用mapview:RenderForOverlay方法。下面是我正在使用的代码: 在viewDidLoad中,我有以下

我有一个地图视图,上面有注释。对于每个注释,我需要显示一个仅仅是一个圆的覆盖。此圆需要是两种不同颜色中的一种,具体取决于一个值。用户可以在屏幕上选择其他内容,需要删除所有注释和覆盖,并根据新选择的项目添加新注释和覆盖

第一次加载具有地图视图的控制器时,一切都很好。当用户选择新项目时,将删除旧注释和覆盖,并添加新注释和覆盖,但覆盖不会显示。在设置断点时,我没有看到在用户选择新项后调用mapview:RenderForOverlay方法。下面是我正在使用的代码:

在viewDidLoad中,我有以下内容:

\u mapview.delegate=self;
[自置pinsonmap];
placePinsOnMap:方法具有以下功能:

-(无效)placePinsOnMap{
AMapAnnotation*注释;
用于(空间*放置在_selectedItem.places中){
annotation=[[AMapAnnotation alloc]initWithTitle:place.name副标题:place.subtitle坐标:place.location];
注释:对象=位置;
[_MapViewAddAnnotation:annotation];
[\u mapview添加叠加:[[AMapOverlay alloc]初始WithCenterCoordinate:place.location半径:[[u place.size floatValue]*1000对象:place]标高:MKOOVERLAYLEVELLOVERROADS];
}
}
每次添加覆盖时,都会调用mapview:RenderForOverlay。这看起来像这样:

-(mkoverlayrender*)地图视图:(MKMapView*)地图视图渲染器foroverlay:(id)overlay{
mkcirclerender*circlerender;
AMapOverlay*地图覆盖;
A空间*地点;
mapOverlay=(AMapOverlay*)覆盖;
place=mappoverlay.object;
CirclerEnder=[[mkCirclerEnder alloc]initWithCircle:mapOverlay];

如果([place.radius floatValue]>=5&&[place.radius floatValue]在选择新项目时半径是否正确?是否仍设置地图视图的委托(标准红色插脚不需要viewForAnnotation,但覆盖必须实现委托方法,因此必须设置委托)?新覆盖图的中心坐标是否正确?我不确定是否需要覆盖boundingMapRect,我认为MKCIRECT将“左上角”设置为以坐标为中心的正方形的真实左上角。这不是直接相关的,也不是“原因”问题:调用addOverlay的那一行应该分成多行。将代码写成一行并不能使它更快。它只会使阅读和调试变得非常困难(最重要的是)。将它分成多行,这样你就可以逐步完成单独的计算(如radius)并检查中间值。感谢Anna的回答。我可以确认我已经验证了您提到的所有内容,坐标设置正确,因此在它应该保持的坐标中,半径也正确。代理设置在添加注释和覆盖的地图视图上。您能澄清什么吗您的意思是“…但是覆盖必须实现委托方法,因此必须设置委托”。我不知道套印格式是否可以接受委托。事实上,套印格式上没有委托属性。抱歉,我的意思是,要显示套印格式,必须实现rendererForOverlay或viewForOverlay,并确保已设置地图视图的委托属性。如果未实现其中一个方法或未设置地图视图的委托,则地图视图将不会不显示“默认值”覆盖视图。但是,对于注释,如果您未实现viewForAnnotation或未设置地图视图的委托,地图视图将为您显示默认的红色pin。除了显而易见的问题外,您是否可能在后台线程中调用addOverlay?试着提出一个小的、自包含的示例,以重复该问题(我认为完整的代码太多,无法发布)。