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];
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29777421/article/details/79981565
文章标签: 高德
个人分类: ios
上一篇iOS开发:后台定位报错解决
下一篇iOS开发:导航栏上实现tab--标题位置添加多个button
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭