我使用removeAnnotations从mapView删除我的注释,但它删除用户位置ann。 我怎样才能防止这个,或者如何让用户ann回来查看? NSArray *annotationsOnMap = mapView.annotations; [mapView removeAnnotations:annotationsOnMap];
我试图更新MKMapView通过删除可见区域外的所有注释,并添加和删除可见区域内的一些注释。 这是我的代码: NSSet *visibleAnnotations = [mapView annotationsInMapRect:[mapView visibleMapRect]]; NSSet *allAnnotations = [NSSet setWithArray:[mapView annotations]]; NSMutableSet *nonVisibleAnnotations = [NSMutableSet setWithSet:allAnnotations]; [nonVisibleAnnotations minusSet:visibleAnnotations]; [mapView removeAnnotations:(NSArray *)nonVisibleAnnotations]; NSMutableSet *newAnnotations = [NSMutableSet setWithArray:[_zoomLevels objectAtIndex:clusterLevel]]; [newAnnotations minusSet:visibleAnnotations]; [mapView addAnnotations:(NSArray *)newAnnotations]; 这给了我错误– [__ NSCFSet objectAtIndex:]:无法识别的select器发送到实例0x13cd40最后一行后,我将newAnnotations投给NSArray然后添加注释。 有什么关于将一个数组转换成一个导致这个问题的集合吗? 如果是的话,有没有办法呢?
我想添加一些逻辑,当用户移动地图视图,即他做一个平底锅。 但是,当我添加手势识别器,我想logging触摸,没有任何反应。 当我在另一个视图控制器尝试它,并将识别器添加到控制器的视图,那么它工作正常。 这里是我的代码(地图视图是应用程序委托的属性,因为即使它不可见,我也需要做一些其他的事情): – (void)viewDidLoad { … UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(showPan)]; [appDelegate.mapView addGestureRecognizer:panGesture]; [panGesture release]; } – (void)showPan { NSLog(@"pan!"); } 我使用最新的iOS 4.2.1 感谢您的任何build议。
我试图在iOS7应用程序中创build一个MKMapView的快照,就像以前的iOS版本推荐的那样: – (UIImage*) renderMapViewToImage { UIGraphicsBeginImageContextWithOptions(mapView.frame.size, NO, 0.0); [mapView.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } 但是,返回的图像是一个黑色矩形,在其上方有一个蓝色的当前位置点。 我尝试过使用mapView的不同子层,但结果总是相同的。 有谁知道如何在iOS7的MKMapView快照?
我有一个注释列表(MKPointAnnotation)。 我有一个UIViewController是整个视图,MKMapView实现控制器,我认为是有用的检测用户与地图的交互,我自己的MKPointAnnotation实现(子类)控制器告诉如何显示注释。 不过,我惊讶于用户检测到敲击事件。 谷歌search告诉我,我必须通过执行以下function来做些事情。 – (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 还有我必须在一些实现MapViewDelegate(Protocol)的类中实现这个。 但是我都很困惑,无法前进。 谁能告诉我在哪里做什么? 对不起,大惊小怪!
我有一个GPS坐标(纬度,经度),我很快想把一个单一的引脚放在一个显示该位置的MKMapView上。 一切工作正常,但因为我只需要一个没有标注的针是有一个更快的方法来做到这一点,或者是我有什么需要做什么? – (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id < MKAnnotation >)annotation { MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"DETAILPIN_ID"]; [pinView setAnimatesDrop:YES]; [pinView setCanShowCallout:NO]; return pinView; } 注意:我不需要检查可重用的注释视图,因为我只使用该针在详细视图中显示一个位置(在下一次请求详细视图时,该视图被破坏并重新创build)。
(使用iOS 5和Xcode 4.2) 我有一个MKMapView,并希望在用户位置周围绘制一个半径为1000米的圆。 表面上看来,实现mapView:viewForAnnotation: map view委托方法,并添加一个自定义的MKAnnotationView为用户的位置,将是一个完美的解决scheme。 它看起来像这样: – (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { // If it's the user location, return my custom MKAnnotationView. if ([annotation isKindOfClass:[MKUserLocation class]]) { return myCustomAnnotationView; } else { return nil; } } 但是,当您放大和缩小地图时,地图上的注释不会缩放。 所以我尝试添加覆盖图(因为覆盖图与地图缩放),使用MKCircle类并将其坐标设置为我的locationManger / map视图委托的最新坐标。 然而,由于MKCircle的坐标属性是只读的,我不得不删除覆盖,然后每次用户移动时添加一个新的。 发生明显的闪烁。 在缩放地图视图时,是否有任何方法可以无缝地进行注释比例缩放? 还是有一个很好的方式来使覆盖移动与用户位置的变化无缝的? 我会很感激你的帮助:)
我有一个在iPad上的观点,我添加一个MKMapView,这是全屏幕的一半高度。 但是,当我尝试在iOS模拟器上挤出时,它不起作用,因为要在模拟器上填充整个iPad视图。 所以,在地图视图的一半的屏幕上,我按下键盘上的“选项”键,我不能抓住地图捏出来。 任何人都知道如何处理这个?
有了MKMapView有一个选项叫“显示用户当前位置”,它会自动显示用户在map上的位置。 我想移动并放大到这个位置,当它被发现(如果它改变)。 问题是,当用户位置在map上更新时,没有任何方法可以调用,所以我无处放置zoom/scroll的代码。 当MKMapView (或更新)用户位置时是否有通知的方法,以便我可以移动/缩放它? 如果我使用我自己的CLLocationManager ,我得到的更新与地图上用户标记的更新不符,所以当我的地图移动并在蓝色针脚出现之前放大几秒钟时,看起来很愚蠢。 这感觉就像基本的function,但我花了几个星期寻找一个解决scheme,没有任何closures。
有没有一种简单的方法来删除地图上的所有注释,而无需迭代Objective-c中显示的所有注释?