`
lizaochengwen
  • 浏览: 663322 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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的MapCallouts例子。
分享到:
评论

相关推荐

    iOS 定位+大头针+导航demo

    然后,将这些标注对象添加到MKMapView的annotations属性中,地图会自动渲染出相应的大头针。 导航功能在iOS中通常涉及到MKDirections类,它可以计算两个地点之间的路线,并提供多种交通模式。我们首先需要创建...

    iPhone MKMAPView画路径

    3. **添加到地图**:创建好`MKPolyline`后,将其添加到`MKMapView`中,这样它就会显示在地图上。 ```swift mapView.addOverlay(polyline) ``` 4. **渲染路径**:为了显示路径,我们还需要实现`...

    swift-在一个MKMapView上360°展示一个高架公路

    在"swift-在一个MKMapView上360°展示一个高架公路"的项目中,首先需要设置一个MKMapView实例,加载目标高架公路的地理位置数据。这可能涉及到使用MapKit的`MKMapView`类来初始化地图视图,并通过`setRegion`方法...

    iOS地图自定义大头针

    接下来,你需要在地图视图(MKMapView)上添加这些自定义大头针。这可以通过调用`addAnnotation:`方法完成,传入你创建的`CustomPinAnnotation`实例。 ```swift let annotation = CustomPinAnnotation(coordinate: ...

    FlyoverKit:在 MKMapView 上实现 360° 俯视图.zip

    【FlyoverKit】是一个开源项目,专为 iOS 开发者设计,它允许你在 `MKMapView` 上实现引人入胜的360°俯视效果。`MKMapView` 是苹果地图框架的一部分,用于展示地图、定位和导航。通过集成 FlyoverKit,开发者可以将...

    MKMapView 同时显示多气泡

    本主题聚焦于如何在`MKMapView`上同时显示多个自定义的气泡(callouts),并通过手势来实现这一功能。这在地图应用中非常常见,例如,当用户在地图上点击多个兴趣点时,每个兴趣点会显示一个包含相关信息的气泡。 ...

    MTDirectionsKit, 在MKMapView之上,直接显示方向.zip

    MTDirectionsKit, 在MKMapView之上,直接显示方向 为什么 MTDirectionsKit?为什么苹果没有为你提供直接显示在MKMapView之上的方法,强迫你在中 switch,只是为了引导你的用户在某个地方。 我们也是这样,所以我们...

    ios 地图 大头针

    只需设置其`coordinate`属性为地图坐标,`title`和`subtitle`属性为显示的文本,然后添加到`MKMapView`即可显示大头针。 4. **自定义大头针视图**: 虽然`MKPointAnnotation`提供了基本的大头针样式,但如果你想...

    MKMapView自定义calloutView

    `CalloutView`则是`MKMapView`中一个重要的特性,通常用来显示用户点击地图上的Annotation(标注)时出现的提示信息。默认情况下,`CalloutView`会显示一个简单的气泡样式,包含Annotation的标题和副标题。然而,...

    ios-地图定位大头针简单使用.zip

    `MKMapView`是MapKit的核心类,用于在屏幕上显示地图。 3. **设置地图显示**:创建一个`MKMapView`实例,可以通过设置`region`属性来确定地图的显示范围,通过`showsUserLocation`属性来开启用户位置追踪,显示蓝色...

    ios百度地图自定义大头针

    自定义大头针可以提供更丰富的视觉体验和交互功能,使得地图上的标注信息更加直观和易用。下面我们将深入探讨如何在iOS应用中实现这一功能。 首先,我们需要引入百度地图SDK。在iOS项目中,可以通过CocoaPods或手动...

    地图跟踪定位,插大头针

    综上所述,实现“地图跟踪定位,插大头针”的功能涉及了iOS开发中的MapKit框架、MKMapView、MKPointAnnotation、MKUserTrackingMode以及UITableView等关键概念。开发者需要理解这些技术并熟练应用,才能构建出具有...

    TSClusterMapView, 用于iOS和OSX的动画集群 MKMapView.zip

    TSClusterMapView, 用于iOS和OSX的动画集群 MKMapView TSClusterMapView - 带集群的MKMapView动画注释集群MKMapView子类基于 ADClusterMapView 。用法要运行示例项目,克隆 repo,然后从示例目录中运行 pod install ...

    ios-系统地图MKMapView的定位及导航 UISearchController模糊查询.zip

    系统地图MKMapView的定位及导航 UISearchController模糊查询点击每个UITableViewCell 在地图上显示大头针 ,点击大头针的右边到这里去,调用系统导航,模糊查询数据源来自百度api 写的有点简单,有点乱

    MapKit之在地图上加pin(转)

    创建了自定义Annotation后,我们就可以将其添加到MKMapView上了。首先,我们需要创建一个CustomAnnotation实例,然后调用MKMapView的addAnnotation方法: ```swift let annotation = CustomAnnotation(title: "我的...

    iOS地图显示、定位、大头针、气泡等简单使用

    我们可以创建`MKPointAnnotation`对象,设置其`coordinate`属性为坐标,`title`和`subtitle`属性为显示的标题和副标题,然后将其添加到地图视图上:`mapView.addAnnotation(annotation:)`。 - 自定义大头针外观可以...

    地图用大头针标注,定位,查看。

    2. **大头针标注(Annotation)**:在地图上添加大头针通常是为了标记特定的位置。MapKit提供了一个名为MKAnnotation协议,开发者需要创建一个遵循此协议的自定义类,来表示自定义的标注对象。该类至少需要实现两个...

    iOS原生地图开发指南续——大头针与自定义标注1

    在iOS原生地图开发中,MapKit框架提供了一种便捷的方式去展示地理位置信息,包括添加大头针(pins)和自定义标注。本篇指南主要关注如何使用MKAnnotation协议、创建系统标注大头针以及自定义标注视图。 首先,我们...

    IOS MKMapView

    MKMapView在中国显示地图和卫星图存在位置上的偏差,因此很多时侯在定位跟踪的时候常常是卫星定位而标准地图显示,因此常发现位置点不居中显示,当然这个可以使用开启用户位置跟踪模式来进行定位。本DEMO也正是利用...

Global site tag (gtag.js) - Google Analytics