iOS开发:高德地图自定义不同的标记点

我一共添加了四种Annotation:起点、终点、附近的人、定位蓝点 不同的Annotation需要用不同的标注图标。

定义PointAnnotation

#pragma mark - MAPointAnnotation
- (MAPointAnnotation *)startAnnotation
{
    if (_startAnnotation == nil) {
        _startAnnotation = [[MAPointAnnotation alloc] init];
        _startAnnotation.title = @"起点";
    }

    return _startAnnotation;
}

- (MAPointAnnotation *)endAnnotation
{
    if (_endAnnotation == nil) {
        _endAnnotation = [[MAPointAnnotation alloc] init];
        _endAnnotation.title = @"终点";
    }

    return _endAnnotation;
}

添加起点终点

self.startAnnotation.coordinate = self.currentLocation.coordinate;
            [self.mapView addAnnotation:self.startAnnotation];
 self.endAnnotation.coordinate = self.currentLocation.coordinate;
        [self.mapView addAnnotation:self.endAnnotation];

回调是关键

- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MAUserLocation class]]) {//定位蓝点
        return nil;
    }
    else if ([annotation isKindOfClass:[MAPointAnnotation class]])
    {
        static NSString *reuseIndetifier = @"annotationReuseIndetifier";
        MAAnnotationView *annotationView = (MAAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseIndetifier];
        if (annotationView == nil)
        {
            annotationView = [[MAAnnotationView alloc] initWithAnnotation:annotation
                                                          reuseIdentifier:reuseIndetifier];
        }
        if(annotation == self.startAnnotation)
            annotationView.image = [UIImage imageNamed:@"start.png"];
        else if(annotation == self.endAnnotation)
            annotationView.image = [UIImage imageNamed:@"end.png"];
        else
            annotationView.image = [UIImage imageNamed:@"poi.png"];
        //设置中心点偏移,使得标注底部中间点成为经纬度对应点
        annotationView.centerOffset = CGPointMake(0, -25);
        annotationView.canShowCallout= YES;       //设置气泡可以弹出,默认为NO
        return annotationView;
    }
    return nil;
}

移除起点和终点

      [self.mapView removeAnnotation:self.startAnnotation];
        [self.mapView removeAnnotation:self.endAnnotation];
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值