Ios4 放大和缩小时的Mapkit注释类型?

Ios4 放大和缩小时的Mapkit注释类型?,ios4,mapkit,mkpinannotationview,Ios4,Mapkit,Mkpinannotationview,我在使用Mapkit,我在使用SDK 4.2,我这里有一个奇怪的bug,事实上我有3种注释类型,“blue.png”,red.png,black.png。我通过通量加载这些注释,并根据类型选择这些注释类型。加载地图时,一切正常。我有不同的注释视图,但当我移动、放大或缩小注释视图时,注释视图会发生变化,即它应该是blue.png的位置会变为black.png 我实际上是在设备上测试它 非常感谢:)我找到了解决方案-事实上,我使用的是自定义注释视图,有3种不同类型的图像: 解决方案: -(Annot

我在使用Mapkit,我在使用SDK 4.2,我这里有一个奇怪的bug,事实上我有3种注释类型,“blue.png”,red.png,black.png。我通过通量加载这些注释,并根据类型选择这些注释类型。加载地图时,一切正常。我有不同的注释视图,但当我移动、放大或缩小注释视图时,注释视图会发生变化,即它应该是blue.png的位置会变为black.png

我实际上是在设备上测试它


非常感谢:)

我找到了解决方案-事实上,我使用的是自定义注释视图,有3种不同类型的图像:

解决方案:

-(AnnotationView*)地图视图:(MKMapView*)地图视图用于注释:(id)注释
{
AnnotationView*AnnotationView=nil;
//确定注释的类型,并为其生成正确类型的注释视图。
AnnotationDetails*myAnnotation=(AnnotationDetails*)注释;
如果(myAnnotation.annotationType==AnnotationTypeGeo)
{
//当前位置的注释
NSString*标识符=@“geo”;
AnnotationView*newAnnotationView=(AnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if(nil==newAnnotationView)
{
newAnnotationView=[[[AnnotationView alloc]initWithAnnotation:myAnnotation重用标识符:标识符]自动释放];
}
annotationView=新建annotationView;
}
else if(myAnnotation.annotationType==AnnotationTypeMyfriends)
{
NSString*标识符=@“朋友”;
AnnotationView*newAnnotationView=(AnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if(nil==newAnnotationView)
{
newAnnotationView=[[[AnnotationView alloc]initWithAnnotation:myAnnotation重用标识符:标识符]自动释放];
}
annotationView=新建annotationView;
}
}

我找到了解决方案-事实上,我使用的是自定义注释视图,有3种不同类型的图像:

解决方案:

-(AnnotationView*)地图视图:(MKMapView*)地图视图用于注释:(id)注释
{
AnnotationView*AnnotationView=nil;
//确定注释的类型,并为其生成正确类型的注释视图。
AnnotationDetails*myAnnotation=(AnnotationDetails*)注释;
如果(myAnnotation.annotationType==AnnotationTypeGeo)
{
//当前位置的注释
NSString*标识符=@“geo”;
AnnotationView*newAnnotationView=(AnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if(nil==newAnnotationView)
{
newAnnotationView=[[[AnnotationView alloc]initWithAnnotation:myAnnotation重用标识符:标识符]自动释放];
}
annotationView=新建annotationView;
}
else if(myAnnotation.annotationType==AnnotationTypeMyfriends)
{
NSString*标识符=@“朋友”;
AnnotationView*newAnnotationView=(AnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if(nil==newAnnotationView)
{
newAnnotationView=[[[AnnotationView alloc]initWithAnnotation:myAnnotation重用标识符:标识符]自动释放];
}
annotationView=新建annotationView;
}
}

Hey veer问题在于,如果用户平移地图以查看其他位置,然后返回到绘制注释的位置,则会调用此方法

- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释
我已经看到了许多地图应用程序的示例代码,这是大多数人正在使用的

- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;
    static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
    MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
    if(annotationView)
        return annotationView;
    else
    {
        MKPinAnnotationView* pinView = [[[MKPinAnnotationView alloc]
                                         initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
        pinView.animatesDrop=YES;
        pinView.canShowCallout=YES;
        pinView.draggable = YES;
        pinView.pinColor = MKPinAnnotationColorGreen;
        return pinView;
    }
    return nil;
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释
{
if([annotation isKindOfClass:[MKUserLocation类]])
返回零;
静态NSString*AnnotationIdentifier=@“AnnotationIdentifier”;
MKAnnotationView*annotationView=[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
如果(注释视图)
返回注释视图;
其他的
{
MKPinAnnotationView*pinView=[[MKPinAnnotationView alloc]
initWithAnnotation:annotation重用标识符:AnnotationIdentifier]autorelease];
pinView.animatesDrop=是;
pinView.canShowCallout=是;
pinView.draggable=是;
pinView.pinColor=MKPinAnnotationColorGreen;
返回pinView;
}
返回零;
}

Hey veer问题在于,如果用户平移地图以查看其他位置,然后返回到绘制注释的位置,则会调用此方法

- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释
我已经看到了许多地图应用程序的示例代码,这是大多数人正在使用的

- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;
    static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
    MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
    if(annotationView)
        return annotationView;
    else
    {
        MKPinAnnotationView* pinView = [[[MKPinAnnotationView alloc]
                                         initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
        pinView.animatesDrop=YES;
        pinView.canShowCallout=YES;
        pinView.draggable = YES;
        pinView.pinColor = MKPinAnnotationColorGreen;
        return pinView;
    }
    return nil;
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释
{
if([annotation isKindOfClass:[MKUserLocation类]])
返回零;
静态NSString*AnnotationIdentifier=@“AnnotationIdentifier”;
MKAnnotationView*annotationView=[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
如果(注释视图)
返回注释视图;
其他的
{
MKPinAnnotationView*pinView=[[MKPinAnnotationView alloc]
initWithAnnotation:annotation重用标识符:AnnotationIdentifier]autorelease];
pinView.animatesDrop=是;
pinView.canShowCallout=是;
pinView.draggable=是;
pinView.pinColor=MKPinAnnotationColorGreen;
返回pinView;
}
返回零;
}

显示viewForAnnotation方法。显示viewForAnnotation方法。嘿,谢谢你的回答,罗宾:)我将尝试解决方案。再次感谢。嘿,比