2012-05-29 6 views
8

私は自分のアプリケーションにGoogleマップをロードするためにMapKitフレームワークを使用していますが、私はこのような「シミュレート」の場所マップ4上に置く:mapKitフレームワークでカスタムアイコンを使用するには?

- (void)viewDidLoad { 

[super viewDidLoad]; 

mapView.delegate = self; 

mapView.showsUserLocation = YES; 

MKUserLocation *userLocation = mapView.userLocation; 

MKCoordinateRegion region = 
MKCoordinateRegionMakeWithDistance (userLocation.location.coordinate,500,500); 
[mapView setRegion:region animated:NO]; 

//Simulated annotations on the map 
CLLocationCoordinate2D poi1Coord , poi2Coord , poi3Coord , poi4Coord; 
//poi1 coordinates 
poi1Coord.latitude = 37.78754; 
poi1Coord.longitude = -122.40718; 
//poi2 coordinates 
poi2Coord.latitude = 37.78615; 
poi2Coord.longitude = -122.41040; 
//poi3 coordinates 
poi3Coord.latitude = 37.78472; 
poi3Coord.longitude = -122.40516; 
//poi4 coordinates 
poi4Coord.latitude = 37.78866; 
poi4Coord.longitude = -122.40623; 

MKPointAnnotation *poi1 = [[MKPointAnnotation alloc] init]; 
MKPointAnnotation *poi2 = [[MKPointAnnotation alloc] init]; 
MKPointAnnotation *poi3 = [[MKPointAnnotation alloc] init]; 
MKPointAnnotation *poi4 = [[MKPointAnnotation alloc] init]; 


poi1.coordinate = poi1Coord; 
poi2.coordinate = poi2Coord; 
poi3.coordinate = poi3Coord; 
poi4.coordinate = poi4Coord; 

poi1.title = @"McDonald's"; 
poi1.subtitle = @"Best burgers in town"; 
poi2.title = @"Apple store"; 
poi2.subtitle = @"Iphone on sales.."; 
poi3.title = @"Microsoft"; 
poi3.subtitle = @"Microsoft's headquarters"; 
poi4.title = @"Post office"; 
poi4.subtitle = @"You got mail!"; 

[mapView addAnnotation:poi1]; 
[mapView addAnnotation:poi2]; 
[mapView addAnnotation:poi3]; 
[mapView addAnnotation:poi4];  

}

コードは非常に簡単です。私がしたいのは、私のGoogleマップで典型的な赤いピンを使用する代わりに、自分の画像を使って別の場所を表示することです。私がすでに見つけたサンプルからずっと混乱してしまったので、それを行う簡単で簡単な方法はありますか?

+1

正確な混乱は何ですか?何を試しましたか? – Anna

答えて

11

「marker.pngは」あなたのイメージファイルですあなたは、次のコードを使用して

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation 
{ 
    if ([[annotation title] isEqualToString:@"Current Location"]) {  
     return nil; 
    } 

    MKAnnotationView *annView = [[MKAnnotationView alloc ] initWithAnnotation:annotation reuseIdentifier:@"currentloc"]; 
    if ([[annotation title] isEqualToString:@"McDonald's"]) 
     annView.image = [ UIImage imageNamed:@"mcdonalds.png" ]; 
    else if ([[annotation title] isEqualToString:@"Apple store"]) 
     annView.image = [ UIImage imageNamed:@"applestore.png" ]; 
    else 
     annView.image = [ UIImage imageNamed:@"marker.png" ]; 
    UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
    [infoButton addTarget:self action:@selector(showDetailsView) 
      forControlEvents:UIControlEventTouchUpInside]; 
    annView.rightCalloutAccessoryView = infoButton; 
    annView.canShowCallout = YES; 
    return annView; 
} 

をアノテーション画像を変更することができます。

+0

ありがとうございました。わかりましたので、これはマップ上にpoiをイメージで戻してくれる関数です。しかし、どのように私はそれをすべての異なるpoiのために呼びますか?私はこの機能をどのように使うべきか理解していません。私はviewcontrollerファイルにコピーするだけですか?申し訳ありません、私はiosの開発に非常に新しいです。 – donparalias

+0

代わりに、次のように使用します: [mapView addAnnotation:poi1]; 私は以下を使用してください: [mapView viewForAnnotation:poi1]; ? – donparalias

+0

いいえ、このメソッドを呼び出す必要はありません。これはMKAnnotationのデリゲートメソッドの1つです。このメソッドは自動的に呼び出されます。上記のコードを更新して、各アノテーション(poi)の画像を変更しました。コードを参照してください。ありがとう。 – Nandha

関連する問題