Ios 如何将框架设置为在MapAnnotation上设置的UIImage

Ios 如何将框架设置为在MapAnnotation上设置的UIImage,ios,map,Ios,Map,我需要将框架设置为一个图像,该图像用作pinAnnotation的图像 这是我添加的图像 MKAnnotationView* annotationView = [objMapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier]; if(!annotationView) { annotationView = [[MKAnnotationView alloc] initWithAn

我需要将框架设置为一个图像,该图像用作pinAnnotation的图像

这是我添加的图像

MKAnnotationView* annotationView = [objMapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
    if(!annotationView)
    {
        annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation
                                                      reuseIdentifier:annotationIdentifier];
    }

    annotationView.image = [UIImage imageNamed:@"rrb.png"] ;

当前视图如下所示…而此图像将用于每个annotationPin。 虽然这张图片很大,但我如何设置框架,使其正好符合我的框架。 这些图像将通过Web服务发送

景色应该是这样的。。。(我更改了图像的大小)

要在注释上设置图像,请执行以下操作:

UIImageView *imgV = [[UIImageView alloc] initWithImage:[UIImage imageNamed:joinString]];
        [imgV setFrame:CGRectMake(0, 0, 40, 40)];
         annotationView.image = imgV.image;

//join String是包含从webService获取的图像的字符串。

mapView委托有一个名为的方法。您应该能够通过访问注释视图并将其更改为您喜欢的任何内容来设置注释视图的框架。

您可以使用以下方法:

  • (MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释{

    MKAnnotationView*annView=[[MKAnnotationView alloc]initWithAnnotation:annotation重用标识符:nil]

    UIImage*image=[UIImage ImageName:@“image.png”]; UIImageView*imageView=[[UIImageView alloc]initWithImage:image]; [annView addSubview:imageView]; [图像视图发布]

    MKPinAnnotationView*pinView=[[MKPinAnnotationView alloc]initWithAnnotation:annotation重用标识符:nil];
    [annView addSubview:pinView]; [pinView发布]

    返回视图; }


正如您所说,我这样做了……但没有起作用!!![annotationView setFrame:CGRectMake(0,0,10,10)];阿迪斯:当然。我已经编辑了这个问题,把你处理错误的任务的代码包括进去了。imageView的图像对象没有自己的帧,您只传递了它。您应该将最后一行设置为如下内容:annotationView=imgV;阿迪斯:我做到了----annotationView.image=imgV;----但这给了我不兼容的指针错误。这是因为您正在将UIImage分配给UIImageView。请阅读评论并使用annotationView=imgV;另一种方法是子类MKAnnotationview,创建您自己的视图,并在MKAnnotationview委托方法中调用该视图:viewforannotationiRD:我确实使用了上述代码,但它给了我8个管脚,而不是4个管脚。4个标准注释和4个自定义注释。@iCodeAtApple-您必须检查有多少个注释是否在您的注释数组中添加图像,然后再添加到MapView?图像是从web服务动态加载到应用程序中的,还是已经包含在捆绑包中?如果动态加载,则在指定给image属性之前,需要以编程方式调整图像大小(例如,请参阅)。如果已经包含在捆绑包中,则只需手动调整它们的大小(例如使用预览)在添加到捆绑包之前。@Annakarenia:图像是通过WebService动态加载的。我已经编辑了问题,以包含相同的代码。链接帮助了我,但对我不起作用。我不清楚:您不需要也不应该设置框架。您可以调整图像的大小。此外,如果joinString是“包含从web服务获取的图像的字符串”,则使用imageNamed也没有意义。imageNamed方法不适用于URL。它在应用程序包中查找该图像。@Annakarenia:嘿,可能你弄错了。我从webService获取了数据,经过一些评估后,我得到了一个文本,如“red.png”,我收集到joinString中,并将其作为图像字符串传递。我有一组图像,其中包括Web服务可能提供的图像。因此red.png已经与我在一起了。只是基于某些条件,我得到了一张图像。现在我觉得我应该让设计师调整图片的大小,而不是调整它的大小。我不知道这是否是唯一的选择。困惑!!对,那么你已经在应用程序包中有了这些图像。只需将它们加载到预览或其他一些图形工具中,调整它们的大小(例如,如果您还想使用@2x版本,请调整32 x 32和64 x 64),然后将它们保存回项目中。运行时无需调整大小。在本例中,您从web服务获得要使用的图像名称这一事实与此无关。