我正在使用MapView来处理项目。你可以通过Tab键拖放一个别针并按住。当你选择销钉时,会出现一定半径的圆。但是现在用户应该决定圆圈的半径。这应该可以通过UISlider进行。用UI滑块动态更改MKCircle半径
问题是,圆半径不会动态变化。圆圈出现,您移动滑块并没有任何反应。再次取消选择该引脚,将添加另一个带有新的UISlider值的环。
当前代码: 在.h文件中:
@property (retain, nonatomic) MKCircle *pinCircle;
在.m文件:
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
_radius.hidden= false;
CLLocation *pinLocation = [[CLLocation alloc] initWithLatitude:[(MKPointAnnotation*)[view annotation] coordinate].latitude longitude:[(MKPointAnnotation*)[view annotation] coordinate].longitude];
_pinCircle = [MKCircle circleWithCenterCoordinate:pinLocation.coordinate radius:_radius.value*1000];
[_mapView addOverlay:_pinCircle];
[_pinCircle autorelease];
}
-(void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view {
_radius.hidden= true;
}
- (MKOverlayView *)mapView:(MKMapView *)map viewForOverlay:(id <MKOverlay>)overlay
{
MKCircleView *circleView = [[MKCircleView alloc] initWithOverlay:overlay];
circleView.strokeColor = [UIColor greenColor];
circleView.fillColor = [[UIColor greenColor] colorWithAlphaComponent:0.4];
return [circleView autorelease];
}
我知道我必须要使用这个动作:
- (IBAction)radiusSliderChange:(id)sender {
NSLog(@"Slidervalue changed");
[self.pinCircle removeFromSuperview];
}
但这导致以下错误:
-[MKCircle removeFromSuperview]: unrecognized selector sent to instance 0x18b919d0
据亚历杭德罗·F.卡雷拉的文章中,我得到了以下错误:
https://www.dropbox.com/s/saxhns992jex606/Bildschirmfoto%202014-09-04%20um%2020.20.21.png?dl=0
感谢您的回答,但我收到以下错误。看到我上面的编辑。 – Eric 2014-09-04 17:40:23
要删除地图上的所有引脚,可以使用[mapView removeOverlays:[mapView overlays]];试试吧:-) – stepik21 2014-09-04 18:28:51
谢谢@ stepik21我试图重新创建围栏使用滑块..你的代码行工作正常** [mapView removeOverlays:[mapView覆盖]]; ** votup你的评论谢谢.. – vaibhav 2016-05-17 12:33:33