读书人

MKMAPVIEW上长按银屏添加大头针

发布时间: 2012-07-30 16:19:05 作者: rapoo

MKMAPVIEW上长按屏幕,添加大头针

在做地图有关的程序时,我们经常需要用户在地图上指定位置我们再用大头针标记。

1、在viewDidLoad中添加我们要捕获的手势:

UILongPressGestureRecognizer *lpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];lpress.minimumPressDuration = 0.5;//按0.5秒响应longPress方法lpress.allowableMovement = 10.0;[m_mapView addGestureRecognizer:lpress];//m_mapView是MKMapView的实例[lpress release];

2、实现要响应的longPress方法:

?

- (void)longPress:(UIGestureRecognizer*)gestureRecognizer{????if (gestureRecognizer.state == UIGestureRecognizerStateEnded){????????return;????}?????????//坐标转换????CGPoint touchPoint = [gestureRecognizer locationInView:m_mapView];????CLLocationCoordinate2D touchMapCoordinate =????[m_mapView convertPoint:touchPoint toCoordinateFromView:m_mapView];?????????MKPointAnnotation* pointAnnotation = nil;????pointAnnotation = [[MKPointAnnotation alloc] init];????pointAnnotation.coordinate = touchMapCoordinate;????pointAnnotation.title = @"名字";?????????[m_mapView addAnnotation:m_pointAnnotation];?????????[pointAnnotation release];}

3,响应MKMapView的代理方法:

?

- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation{? ????if ([annotation isKindOfClass:[MKUserLocation class]])????{????????[self.navigationItem.rightBarButtonItem setEnabled:YES];//导航栏右边回到当前位置的按钮可用????????return nil;????}?????static NSString* AnnotationIdentifier = @"AnnotationIdentifier";????MKPinAnnotationView* customPinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];?????????if (!customPinView) {????????customPinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];?????????????????customPinView.pinColor = MKPinAnnotationColorRe;//设置大头针的颜色????????customPinView.animatesDrop = YES;????????customPinView.canShowCallout = YES;????????customPinView.draggable = YES;//可以拖动?????????????????//添加tips上的按钮????????UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];????????[rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];????????customPinView.rightCalloutAccessoryView = rightButton;????}else{????????customPinView.annotation = annotation;????}????return customPinView;}

?

4、实现showDetails方法:

- (void)showDetails:(UIButton*)sender{}
关于MKMapView的更多请参加apple的

读书人网 >移动开发

热点推荐