1
我有兩個問題,在MKMapView上創建來自用戶交互的覆蓋圖?
如何創建用戶的觸摸按下事件上MKMapkitView覆蓋?即爲了保持它的簡單,用戶觸摸下來,它創建了一個MKCircle覆蓋
如何進行地圖應用程序實現對觸摸的「圖釘」下來?任何人都知道或有一些關於如何完成類似事情的代碼示例?
任何指針將不勝感激。如你所見,我一直在使用Google和閱讀大量文檔。
我有兩個問題,在MKMapView上創建來自用戶交互的覆蓋圖?
如何創建用戶的觸摸按下事件上MKMapkitView覆蓋?即爲了保持它的簡單,用戶觸摸下來,它創建了一個MKCircle覆蓋
如何進行地圖應用程序實現對觸摸的「圖釘」下來?任何人都知道或有一些關於如何完成類似事情的代碼示例?
任何指針將不勝感激。如你所見,我一直在使用Google和閱讀大量文檔。
下面是創建一個circle和下降的銷,其中用戶觸摸並保持他們的手指1秒的例子。它使用一個UILongPressGestureRecognizer,它在地圖初始化的任何地方被添加到mapView中(例如viewDidLoad)。
確認的MapView的委託設置也。
// In viewDidLoad or where map is initialized...
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 1.0; //user must hold for 1 second
[mapView addGestureRecognizer:lpgr];
[lpgr release];
...
- (void)handleLongPress:(UIGestureRecognizer *)gestureRecognizer
{
if (gestureRecognizer.state != UIGestureRecognizerStateBegan)
return;
CGPoint touchPoint = [gestureRecognizer locationInView:mapView];
CLLocationCoordinate2D touchMapCoordinate = [mapView convertPoint:touchPoint toCoordinateFromView:mapView];
//add pin where user touched down...
MKPointAnnotation *pa = [[MKPointAnnotation alloc] init];
pa.coordinate = touchMapCoordinate;
pa.title = @"Hello";
[mapView addAnnotation:pa];
[pa release];
//add circle with 5km radius where user touched down...
MKCircle *circle = [MKCircle circleWithCenterCoordinate:touchMapCoordinate radius:5000];
[mapView addOverlay:circle];
}
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id)overlay
{
MKCircleView* circleView = [[[MKCircleView alloc] initWithOverlay:overlay] autorelease];
circleView.fillColor = [UIColor redColor];
return circleView;
}
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
static NSString *AnnotationIdentifier = @"Annotation";
MKPinAnnotationView* pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
if (!pinView)
{
pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
pinView.pinColor = MKPinAnnotationColorGreen;
pinView.animatesDrop = YES;
}
else
{
pinView.annotation = annotation;
}
return pinView;
}
大!我只是在尋找指針,但代碼示例更好。真的很感激它。 – jlmendezbonini 2011-03-07 22:37:40