3

新しいバージョン (2.1.0) では問題が発生します。地図をスクロールすると注釈が消えます。デモ プロジェクトでは正常に動作します。また、フレームワークを再度追加しても役に立ちません。

- (void)viewDidLoad {
    [super viewDidLoad];

    placeDetail = [[PlaceDetailViewController alloc] init];
    latitude = [placeDetail Latitude];
    longitude = [placeDetail Longitude];

    self.placeMapView = [[SKMapView alloc] init];
    self.placeMapView.frame = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame));
    self.placeMapView.delegate = self;
    self.placeMapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    self.placeMapView.settings.poiDisplayingOption = SKPOIDisplayingOptionNone;
    [self.view addSubview:self.placeMapView];

    //add a circle overlay
    for(int i=0;i<latitude.count;i++)
    {
        //set the map region
        SKCoordinateRegion region;
        region.center = CLLocationCoordinate2DMake([latitude[i] floatValue], [longitude[i] floatValue]);
        region.zoomLevel = 17;
        self.placeMapView.visibleRegion = region;

        SKAnnotation *mapAnnotation = [SKAnnotation annotation];
        mapAnnotation.identifier = i;
        mapAnnotation.minZoomLevel = 5;

        mapAnnotation.annotationType = SKAnnotationTypeRed;
        mapAnnotation.location = CLLocationCoordinate2DMake([latitude[i] floatValue], [longitude[i] floatValue]);

        [self.placeMapView addAnnotation:mapAnnotation];
    }
}

アノテーション作成

-(void)mapView:(SKMapView *)mapView didSelectAnnotation:(SKAnnotation *)annotation {

    self.placeMapView.calloutView.titleLabel.text= placeDetail.Name;
    self.placeMapView.calloutView.titleLabel.font = [UIFont fontWithName:@"PTSans-Narrow" size:15];
    self.placeMapView.calloutView.subtitleLabel.text = @"";
    [self.placeMapView showCalloutForAnnotation:annotation withOffset:CGPointMake(0, 42) animated:YES];
    [self.placeMapView.calloutView.rightButton addTarget:self action:@selector(backToDetailView) forControlEvents:UIControlEventTouchUpInside];
}

よろしくお願いします。

編集:この動作を引き起こす問題を見つけたと思います。私のアプリには、2 種類のマップがあります。1 つのミニ マップと 1 つの大きなマップ。しかし、2 つの異なるビューで。ミニマップを無効にすると機能します。SO SKMap フレームワークのロードに関係していると思います。現在、ミニマップ機能は view did load メソッドで呼び出されています。それで、ここで何をすべきか知っていますか?

4

1 に答える 1

0

これは、SDK の 2.1 および 2.2 バージョンのバグです。2.3 で修正される予定です (eta 2014 年 11 月)。

2.1/2.2 の場合、回避策があります。ミニマップとビッグマップの注釈に異なる ID を使用します。たとえば、ミニマップに ID 0..N-1 の N 個の注釈がある場合、大きなマップには N 以降の ID を持つ注釈があります。したがって、大きな地図上の M 個の注釈の場合、N..M-1 の ID を持つ注釈が作成されます。

于 2014-09-18T08:12:22.287 に答える