2015-03-27 4 views
2

Привет Я пытаюсь создать пользовательскую аннотацию в mapview. В mapview у меня есть несколько создателей контактов на карте, когда пользователь нажимает на контакт, я хочу отобразить текст и кнопку, поэтому попытался создать собственное представление аннотации, которое не работает.Пользовательский вид аннотации не отображается на карте

Мой код

#import <MapKit/MapKit.h> 
#import <GoogleMaps/GoogleMaps.h> 
     @interface myviewcon : UIViewController<MKMapViewDelegate> 
     @property (strong, nonatomic) IBOutlet MKMapView *mpview; 

    @end 

Мой MKPointAnnotation код в viewdidload

for (NSDictionary *dic in [jsonArray1 valueForKey:@"houses"]) { 


     MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init]; 
     NSString *name=[dic valueForKey:@"building_name"]; 

     CLLocationCoordinate2D placeCoord; 

     placeCoord.latitude=[[dic objectForKey:@"lat"] doubleValue]; 
     placeCoord.longitude=[[dic objectForKey:@"lng"] doubleValue]; 



     [annotation setCoordinate:placeCoord]; 
     [annotation setTitle:name]; 
     [mpview addAnnotation:annotation]; 

     } 

И мой код пользовательского Annotaionview

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

    MKAnnotationView *anview = nil; 

    UIButton *btnViewVenue = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
    anview.rightCalloutAccessoryView=btnViewVenue; 
    anview.enabled = YES; 
    anview.canShowCallout = YES; 
    anview.multipleTouchEnabled = NO; 

    return anview; 
    } 

Я использовал приведенный выше код, чтобы сделать customview, когда пользователь нажимает на создатель штыря на карте, я сделал вид с текстом и кнопками, я устал wi th, как это, но его не работает я проверил с точки останова, что делегат вызывает, но его не работает, пожалуйста, расскажите, как решить эту проблему.

Спасибо заранее.

+1

Единственная проблема, кажется, что в viewForAnnotation вы не создаете anview. Он инициализирован нулем, поэтому настройка свойств на нем ничего не делает. – Anna

ответ

2

Чтобы настроить использование аннотаций:

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

здесь только добавить подвид, который вам нужно

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view { 

    UIView *test = [[UIView alloc]initWithFrame:CGRectMake(view.frame.origin.x - 12.5, view.frame.origin.y - 45, 50, 50)]; 
    test.backgroundColor = [UIColor redColor]; 
    [_mapView addSubview:test]; 
} 

здесь просто удалить пользовательский callOutView из SuperView

- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view 
+0

i didt get you can pleaes сказать мне ясно – Shanthanu

+0

Я отредактировал свой ответ, надеюсь, что он поможет – LoVo

+0

может рассказать, что такое ПИН-ИДЕНТИФИКАЦИЯ от wher, я его создал – Shanthanu

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