2012-02-25 20 views
0

viewForAnnotation:(id<MKAnnotation>) annotationメソッドを実装してMKMapViewDelegateプロトコルに準拠するUIViewサブクラスにMKMapViewインスタンスがあります。となっているコード:MKAnnotationViewイメージが表示されない

- (MKAnnotationView*) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { 
if ([annotation isKindOfClass:[DriverLocation class]]) { 
    MKAnnotationView* a = [self.map dequeueReusableAnnotationViewWithIdentifier:@"driverView"]; 
    if (a == nil) { 
     MKAnnotationView* a = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"driverView"]; 
     a.enabled = YES; 
     a.image = [UIImage imageNamed:@"car.png"]; 
    } 
    return a; 
} 
return nil; 

}

画像が正しくロードされていない - ロードされたイメージのプロパティがゼロの高さと幅を有し、MKAnnotationViewインスタンスAの寸法もゼロです。

画像は4Kb png 32ピクセル×32ピクセルです。

イメージがシミュレータのルート.appディレクトリにコピーされたことを確認できます。

これがロードされていない理由についてのお手伝いをいただければ幸いです。

+3

申し訳ありません:あなたはに MKAnnotationView* a = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"driverView"];

を変更する必要があります。私はアホです。私は2つの変数を作成します。if文のインスタンス化はa = ... not MKAnnotationView * aでなければなりません。 – Owen

答えて

0

画像を設定した後に[a sizeToFit]を追加してみてください。

0

私は以前これを見ました。私の問題を解決したのはPNGを再輸出することでした。何らかの理由で、その中には(Fireworksのような)メタデータが入っているものがあります。このメタデータによって、特定の状況でバグが発生します。私はそれが主にInternet Explorerで起こるのを見ましたが、MKMapViewでもそれを見てきました。さらに奇妙なことに、それはシミュレータでは動作しましたが、デバイスでは動作しませんでした。このポストのための完全性のために

2

a = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"driverView"];

関連する問題