1

Swift と MapKit を使用してアプリを構築しています。いくつかのカスタム ポイント注釈があります。デフォルトで、いつでもすべての注釈の上にタイトルを表示したいと思います。したがって、それらはすべて選択されます。したがって、この投稿からインスピレーションを得て、次を使用できます。

[mapView selectAnnotation:pinView animated:YES]

しかし、ピンをクリックして選択し、この注釈に基づいて新しい mapScope を取得できるようにする必要があります。どうすればできますか?

最初の解決策が不可能な場合は、各注釈に特定のラベルを使用します。しかし、注釈のタイトルを永久に非表示にする方法はありますか?

編集:

カスタム ポイント アノテーションのコードは次のとおりです。

func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
    println("viewForAnnotation")
    if !(annotation is MKPointAnnotation) {
        return nil
    }
    var seleccion:Bool

    let cpa = annotation as! CustomPointAnnotation

    let reuseId = cpa.nickName as String
    var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)


    if anView == nil {
        anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        anView.canShowCallout = true
//            create and add UILabel only when actually creating MKAnnotationView

        var nameLbl: UILabel! = UILabel(frame: CGRectMake(-24, 40, 100, 30))
        nameLbl.tag = 42
        nameLbl.textColor = UIColor.blackColor()
        nameLbl.font = UIFont(name: "Atari Classic Extrasmooth", size: 10)
        nameLbl.textAlignment = NSTextAlignment.Center
        anView.addSubview(nameLbl)
    }
    else {
        anView.annotation = annotation
    }

    anView.image = cpa.image
    if cpa.toBeTriggered == true {
        anView.selected = true
    }

    if let nameLbl = anView.viewWithTag(42) as? UILabel {
        nameLbl.text = cpa.nickName
    }

    return anView
}
4

1 に答える 1

1

カスタム注釈ビューを使用しているため、このコードは役に立ちます。

-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation  //thammu
{
    static NSString *reuseId = @"StandardPin";

    MKAnnotationView *aView;

    //MKAnnotationView *aView = (MKAnnotationView *)[Mapsview dequeueReusableAnnotationViewWithIdentifier:reuseId];

    aView = [[MKAnnotationView alloc] initWithAnnotation:annotation
                                     reuseIdentifier:reuseId];

    aView.enabled = YES;
    aView.canShowCallout = YES;

     aView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];


    UIImageView *img=[[UIImageView alloc]initWithFrame:CGRectMake(-41,-22,121,25)];
    img.image=[UIImage imageNamed:@"annotation-bg@2x.png"]; //This is the Details image view


    UILabel *lblPlaceholder1=[[UILabel alloc]init];

    lblPlaceholder1 = [[UILabel alloc]initWithFrame:CGRectMake(4,2,117, 21)];
    lblPlaceholder1.backgroundColor=[UIColor clearColor];
    lblPlaceholder1.numberOfLines=1;
    [lblPlaceholder1 setTextColor:[UIColor redColor]];
    lblPlaceholder1.textAlignment=NSTextAlignmentCenter;
    lblPlaceholder1.text=annotation.title;
    [lblPlaceholder1 setTextColor:[UIColor darkGrayColor]];
    [lblPlaceholder1 setFont:[UIFont fontWithName:@"Roboto-Regular" size:12.0f]];


    NSString *subTitleStr = annotation.subtitle;


    [img addSubview:lblPlaceholder1];

    [aView addSubview:img];

    [img setUserInteractionEnabled:YES];

    aView.image = [UIImage imageNamed:@"tracker.png"];//This is marker image view

    aView.annotation = annotation;

    return aView;
}

ここでは、マップ内のすべての注釈がデフォルトで表示されます。

于 2015-08-20T10:12:06.000 に答える