ios中MGLMapView(MapBox)上的自定义注释

ios中MGLMapView(MapBox)上的自定义注释,ios,objective-c,annotations,mkmapview,mapbox,Ios,Objective C,Annotations,Mkmapview,Mapbox,我使用MKMapView绘制polyline并显示保存的polyline以及自定义注释 但现在正试图用MGLMapview替换MKMapView 绘制polyline并成功显示默认注释,如前面的MKMapView 但我一直在研究如何显示自定义注释,如下所示 在MKMapView中使用了JPSThumbnailAnnotation 我的问题是, 如何显示如上图所示的自定义注释 在.h文件中创建自定义注释类 #import <Foundation/Foundation.h> #impo

我使用
MKMapView
绘制
polyline
并显示保存的
polyline
以及自定义注释

但现在正试图用
MGLMapview
替换
MKMapView

绘制
polyline
并成功显示默认注释,如前面的
MKMapView

但我一直在研究如何显示自定义注释,如下所示

在MKMapView中使用了JPSThumbnailAnnotation

我的问题是,


如何显示如上图所示的自定义注释

在.h文件中创建自定义注释类

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

@interface LocationAnnotaion : NSObject<MKAnnotation>
@property NSString * titile;
@property (nonatomic, readonly)CLLocationCoordinate2D  coordinate;
-(id)initWithTitile:(NSString*) titile AndCoOrdinate:(CLLocationCoordinate2D) locationCoordinate;
-(MKAnnotationView*)annotationView;
@end
向地图视图添加注释

LocationAnnotaion *annotation = [[LocationAnnotaion alloc]initWithTitile:LOCATION_TEXT AndCoOrdinate:your_coordinate];
  [mapLocationView addAnnotation:annotation];
并在mapview中添加代理

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[CCLocationAnnotaion class]])
    {
        CCLocationAnnotaion * myAnnotation = (CCLocationAnnotaion*)annotation;
        MKAnnotationView * view = myAnnotation.annotationView;
        view.centerOffset = CGPointMake(0, -view.image.size.height/2);
        return view;
    }
    return nil;
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释
{
if([annotation isKindOfClass:[CCLocationAnnotation class]])
{
CCLocationAnnotation*myAnnotation=(CCLocationAnnotation*)注释;
MKAnnotationView*view=myAnnotation.annotationView;
view.centerOffset=CGPointMake(0,-view.image.size.height/2);
返回视图;
}
返回零;
}

希望这会有帮助

在.h文件中创建自定义注释类

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

@interface LocationAnnotaion : NSObject<MKAnnotation>
@property NSString * titile;
@property (nonatomic, readonly)CLLocationCoordinate2D  coordinate;
-(id)initWithTitile:(NSString*) titile AndCoOrdinate:(CLLocationCoordinate2D) locationCoordinate;
-(MKAnnotationView*)annotationView;
@end
向地图视图添加注释

LocationAnnotaion *annotation = [[LocationAnnotaion alloc]initWithTitile:LOCATION_TEXT AndCoOrdinate:your_coordinate];
  [mapLocationView addAnnotation:annotation];
并在mapview中添加代理

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[CCLocationAnnotaion class]])
    {
        CCLocationAnnotaion * myAnnotation = (CCLocationAnnotaion*)annotation;
        MKAnnotationView * view = myAnnotation.annotationView;
        view.centerOffset = CGPointMake(0, -view.image.size.height/2);
        return view;
    }
    return nil;
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释
{
if([annotation isKindOfClass:[CCLocationAnnotation class]])
{
CCLocationAnnotation*myAnnotation=(CCLocationAnnotation*)注释;
MKAnnotationView*view=myAnnotation.annotationView;
view.centerOffset=CGPointMake(0,-view.image.size.height/2);
返回视图;
}
返回零;
}

希望这会有帮助

感谢您的回复…让我尝试添加不同的多个图像作为注释,如图所示。您可以对此进行修改以实现此目的,我只是向您展示一种创建自定义注释的方法。希望它能给您一个想法。对于多个图像,请在.h文件中添加uiimage属性,在.m文件中,添加一个新参数调用image并在初始化时发送(将其存储在uiimage属性中),然后annotationView函数设置初始化时发送的图像。感谢您的回复…让我尝试添加不同的多个图像作为注释,如图中所示。您可以对此进行修改以实现此目的,我只是向您展示了一种创建自定义注释的方法。希望它能给您一个想法。对于多个图像,请在.h文件中添加uiimage属性,在.m文件中添加一个新参数call image并在初始化时发送(将其存储在uiimage属性中),然后annotationView函数设置初始化时发送的图像。