2013-06-03 4 views
0

Ниже я создал аннотацию для своей карты, которая отлично работает и отображается с заголовком и субтитрами, как следует.Карта Аннотация Добавление изображения

Но я хочу добавить небольшое изображение слева от аннотации, но не могу понять, что мне нужно сделать для кода ниже, чтобы заставить его работать.

// Annotation 
CLLocationCoordinate2D poseLocation; 
poseLocation.latitude = POSE_LATITUDE; 
poseLocation.longitude = POSE_LONGITUDE; 

Annotation *myAnnotation = [[Annotation alloc] init]; 
myAnnotation.coordinate = poseLocation; 
myAnnotation.title = @"Pose Beauty Salon"; 
myAnnotation.subtitle = @"100, Moneyhaw Road"; 

[self.myMapView addAnnotation:myAnnotation]; 
+2

Unrelated но вы должны сделать '[[Аннотация Alloc] инициализации];' а не только '[Аннотация Alloc];'. – Anna

ответ

2

Вам нужно будет установить делегат вашего myMapView первого и реализовать метод viewForAnnotation делегата.

Там вы вернётесь MKAnnotationView экземпляр, который имеет свойство leftCalloutAccessoryView:

Вид для отображения на левой стороне стандартного выноски пузыря. Значение по умолчанию этого свойства равно nil. Вид левой выноски обычно используется для отображения информации об аннотации или для ссылки на пользовательскую информацию, предоставленную вашим приложением. Высота вашего изображения должна составлять 32 пикселя или меньше.

В окне leftCalloutAccessoryView вы можете указать свое изображение. Например:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { 

    MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[self.myMapView dequeueReusableAnnotationViewWithIdentifier:@"annotation"]; 

    if (annotationView == nil) { 
     annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"annotation"];    
     UIImageView *imageView = //initialize your image view here 
     annotationView.leftCalloutAccessoryView = imageView; 
    } 

    annotationView.annotation = annotation; 
    return annotationView; 
} 

PS: Видимо вы задали подобный вопрос, прежде чем здесь: Add image to the left of my annotations. Я не уверен, что вам нужно отправить еще один вопрос. Сначала попробуйте выполнить это.

0
-(MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{ 
MKPinAnnotationView *MyPin=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"current"]; 

myImage = [UIImage imageNamed:imagename]; 
CGRect cropRect = CGRectMake(0.0, 0.0,35.0, 35.0); 
myImageView = [[UIImageView alloc] initWithFrame:cropRect]; 
myImageView.clipsToBounds = YES; 
myImageView.image = myImage; 
MyPin.leftCalloutAccessoryView =myImageView; 
MyPin.highlighted=YES; 
MyPin.canShowCallout=YES; 
return MyPin; 

}

Это работает для меня, попробуйте это один

Смежные вопросы