IOS中显示自带地图(高德地图)的大头针

test:

//首先设置一个位置坐标

    CLLocationCoordinate2D coordinate;
    coordinate.longitude = 110;
    coordinate.latitude = 40;
    
    添加 IOS系统带的大头针

    MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];

    annotation.coordinate = CLLocationCoordinate2DMake(coordinate.latitude, coordinate.longitude);
    annotation.title = @"八大胡同";

    annotation.subtitle = @"怡红菊";

//加在地图上

    [_mapView addAnnotation:annotation];

    

在设置了mapView的代理后 就可以在回调方法

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation;

自定义点击大头针显示的上面标签的内容了

举个栗子:

#pragma mark - 定义标记(大头针)里面的视图内容
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation{
    
    //和cell重用机制类似
    static NSString *identifier = @"aAnn";
    
    //此处不用MKAnnotationView,应该用MKPinAnnotationView,是MKAnnotationView其中的一个子view(大头针)
    MKPinAnnotationView *annView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
    if (!annView) {
        annView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
    }
    //当annotation是当前用户的位置时,返回nil
    if (_mapView.userLocation == annotation) {
        return nil;
    }
    //设置其大头针的颜色(只有红,绿,紫)
    annView.pinColor = MKPinAnnotationColorPurple;
    //annView.image = [UIImage imageNamed:@"1ss.png"];
    
    //显示弹出框(气泡)里面的内容
    annView.canShowCallout = YES;
    //设置弹出框右边的view
    UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    annView.rightCalloutAccessoryView = button;
    //设置弹出框左边的view
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1ss.png"]];
    imageView.frame = CGRectMake(0, 0, 30, 30);
    annView.leftCalloutAccessoryView = imageView;
    
    return annView;

这样就不用在自定义一个大头针的类了 也许别的大神用的方法更碉堡,我这个仅用了讲解最基础的
so 还不赶快试试


你可能感兴趣的:(IOS)