Tag: 注释

长按发生时,忽略mapView:didSelectAnnotationView

我正在为这个挣扎。 我有一个小地区的许多针脚mapview。 无论我是否在注释视图上长时间按压,我都想忽略mapview在长按地图时select的注释。 好像这个注释是在touchDown上被选中的,而不是在注解视图里面的内容,这很烦人。 我已经为mapview添加了一个longpress手势: UILongPressGestureRecognizer *longRec = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(addPin:)]; longRec.cancelsTouchesInView = YES; [self.mapView addGestureRecognizer:longRec]; 当我长时间按压注释视图时,这是无法识别的。 只要我按下select注释委托调用处理,长按不会触发。 我试图阻止点击手势识别器,这当然不起作用,因为mapview的手势没有委托给我的地图视图控制器,所以这是行不通的: – (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]) { return NO; } return YES; } 我也尝试在注解视图中添加一个longpress手势作为黑客,但是这也永远不会被解雇,而且我也不喜欢这个策略。 有一种方法来阻止mapview的注释select,当一个longpress手势待在mapview?

拖动注释时callback

我可以拖动我的注释,当我放下它时,我可以读取这个位置。 但是,我需要不断更新我的头衔,我拖动的位置。 我试着添加一个UIPanGestureRecognizer,但是当我拖动注解时不起作用。 拖动注释时,我应该使用什么方法不断调用我的代码? -(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState { CLLocationCoordinate2D annoCoord = view.annotation.coordinate; switch (newState) { case MKAnnotationViewDragStateStarting: NSLog(@"Start dragging annotation"); break; case MKAnnotationViewDragStateDragging: NSLog(@"Dragging annotation"); break; case MKAnnotationViewDragStateEnding: [view setDragState:MKAnnotationViewDragStateNone]; // must be here! else multiple calls NSLog(@"Ending dragging annotation at %f : %f", annoCoord.latitude, annoCoord.longitude); break; case MKAnnotationViewDragStateCanceling: NSLog(@"Cancel dragging annotation"); […]

如何检测在MapView中select了哪个注释

我在地图中做了一些注释,当我点击它们时,我看到了一些信息,而且我有一个打开地图的button,并且我不能接受的正确信息应该画出我的路线。 这是我的代码: 我有我的纬度和经度的双数组的2我从我的查询填充他们。 var lat = [Double]() var lon = [Double]() 这些行用于填充注释 self.annot = Islands(title: object["name"] as! String, subtitle: object["address"] as! String, coordinate: CLLocationCoordinate2D(latitude: (position?.latitude)!, longitude: (position?.longitude)!), info: object["address"] as! String) self.map.addAnnotations([self.annot]) 这是注释创build的地方: func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { let identifier = "pin" if annotation.isKindOfClass(MKUserLocation) { return nil } let image = […]

在MapView中search注释

我遵循了一个关于在mapViewsearchannotations以及在MKLocalSearchsearch世界的方法的如何search位置使用苹果 MKLocalSearch 。 但是,我不想用MKLocalSearch进行search,而是search我自己的annotations ,例如我自己添加了这些annotations : let LitzmanLocation = CLLocationCoordinate2DMake(32.100668,34.775192) // Drop a pin let Litzman = MKPointAnnotation() Litzman.coordinate = LitzmanLocation Litzman.title = "Litzman Bar" Litzman.subtitle = "נמל תל אביב 18,תל אביב" mapView.addAnnotation(Litzman) let ShalvataLocation = CLLocationCoordinate2DMake(32.101145,34.775163) // Drop a pin let Shalvata = MKPointAnnotation() Shalvata.coordinate = ShalvataLocation Shalvata.title = "Shalvata" Shalvata.subtitle = "האנגר 28,נמל […]

检测在MKMapView中select了第二个注释

当一个用户在地图上select一个注释时,我会显示一个带有信息的底部视图,例如google地图应用。 我在地图的代表中显示它: – (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 当用户取消select(通过在地图上的任何地方粘贴),我隐藏我的底部视图。 这是在相反的委托方法中完成的: – (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view 它运作良好,我很高兴。 但是,如果用户select第二个注释( 即:他点击第一个注释,然后点击另一个注释,同时不先取消select注释 ),我不想隐藏底部视图然后再显示它。 我只是想改变它的信息。 但是,因为mapView:didDeselectAnnotationView: 在 mapView:didSelectAnnotationView: 之前调用,所以我无法弄清楚如何检测上面描述的情况。 我的问题是: 如何检测到用户select了第二个注释,或者我应该如何解决这个问题 ?

注释标注标题不会更改

我已经搜查,但我没有find任何解决我的问题。 我想改变已经添加的引脚。 这是我的代码。 我在控制台中看到“Code Here”。 我在.h – (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)annotationView; myViewController.m – (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)annotationView { userPins *myAnnot = (userPins *)annotationView.annotation; [myAnnot setTitle:@"o21"]; NSLog(@"Code here!"); } – (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { static NSString *identifier = @"userPins"; if ([annotation isKindOfClass:[userPins class]]) { MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [_mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; if (annotationView == […]

自定义注释图像只在程序开始时旋转(Swift-iOS)

请帮助一个初学者的iOS开发者在这里! :)所以,我有一个计时器,定期从一个XML表提供公交车的实时位置的XML表获取公交车的经纬度。 我能够设置parsing器,为公交车运动设置animation并为公交车设置自定义(箭头)图像。 然而,问题是,每当我得到新的纬度和经度值时,我都无法旋转公交标注。 busAnnotation仅在程序启动busAnnotation旋转,但不是每次总线方向都更新。 下面是我的xml parser函数,它每次更改位置时都会计算busDirection 。 busDirection的值随着位置变化而正确改变,但是由于某些原因,定时器继续运行,它不适用于旋转。 注释的移动也是非常生动的,除了程序启动之外,它不会旋转。 // Some constants var oldLatitude: Double? = 44.97234 var oldLongitude: Double? = -93.2446329 var busDirection: CLLocationDirection() func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: NSDictionary!) { if (elementName == "vehicle") { var latitude = attributeDict["lat"]?.doubleValue // Get latitude of bus […]

从端点调整行大小

我在一个视图上绘制注释。 线条注释引起问题; 我有一个父类的形状(从UIView扩展)。 所有的注释都是形状的子类。 在每个注解类中,我都覆盖了drawRect方法。 DrawingCanvas类(从UIView扩展,是我的viewController的父视图的子视图)处理平移手势。 这是一段代码 -(void) panGestureRecognizer: (UIPanGestureRecognizer *) panGesture { static CGPoint initialPoint; CGPoint translation = [panGesture translationInView:panGesture.view]; static Shape *shape; if(panGesture.state == UIGestureRecognizerStateBegan) { initialPoint = [panGesture locationInView:panGesture.view]; if(selectedShape == nil) { if([selectedOption isEqualToString:@"line"]) { shape = [[Line alloc] initWithFrame:CGRectMake(initialPoint.x, initialPoint.y, 10, 10) isArrowLine:NO]; ((Line *)shape).pointStart = [panGesture.view convertPoint:initialPoint toView:shape]; } […]

mapkit默认显示注释

我有一个注释,显示在一个自定义图像的mapkit,显示罚款, 但是贴上后贴着标注, 当我开始视图的时候,怎么能默认显示注释? 丝毫敲出别针。 – (MKAnnotationView *)mapView:(MKMapView *)mv viewForAnnotation:(id <MKAnnotation>)annotation { if([annotation isKindOfClass:[MKUserLocation class]]) return nil; NSString *annotationIdentifier = @"PinViewAnnotation"; MKPinAnnotationView *pinView = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier]; if (!pinView) { pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier] autorelease]; [pinView setPinColor:MKPinAnnotationColorGreen]; pinView.animatesDrop = YES; pinView.canShowCallout = YES; UIImageView *houseIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tijereta.png"]]; pinView.leftCalloutAccessoryView = houseIconView; […]

如何在iPhone中添加带有图像和标签的Mapview中的注释?

我在我的iPhone应用程序中使用MKMapview。 我怎样才能在MKMapkit框架的注解中赋值?