1

Я хочу добавить небольшое поднаблюдение в точке перехода на вид карты iOS таким образом, что добавленное подвью также масштабирует и прокручивает, когда я просматриваю и масштабирую вид карты. Любая помощь? Код, который я попытался ниже:Добавить subview в MKMapView (не оверлей)

- (void)viewDidLoad 
{ 
    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(foundTap:)]; 
    tapRecognizer.numberOfTapsRequired = 1; 
    tapRecognizer.numberOfTouchesRequired = 1; 
    [self.myMapView addGestureRecognizer:tapRecognizer]; 
} 

- (IBAction)foundTap:(UITapGestureRecognizer *)recognizer 
{ 
    CGPoint point = [recognizer locationInView:self.myMapView]; 
    dotimage = [[UIView alloc]initWithFrame:CGRectMake(point.x,point.y , 10, 10)]; 
    dotimage.backgroundColor = [UIColor redColor]; 
    [self.myMapView addSubview:dotimage]; 
} 

вид dotimage не движется и прокрутка с карты.

ответ

2

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

Вы можно попробовать этот код

- (void)viewDidLoad 
{ 
     UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(addCustomView:)]; 
     [recognizer setNumberOfTapsRequired:1]; 
     [map addGestureRecognizer:recognizer]; 
     [recognizer release]; 
} 

- (void)addCustomView:(UITapGestureRecognizer*)recognizer 
{ 
    CGPoint tappedPoint = [recognizer locationInView:map]; 
    //Get the coordinate of the map where you tapped 
    CLLocationCoordinate2D coord= [map convertPoint:tappedPoint toCoordinateFromView:map]; 

    //Add Annotation 
    /* Create a custom annotation class which takes coordinate */ 
    CustomAnnotation *ann=[[CustomAnnotation alloc] initWithCoord:coord]; 
    [map addAnnotation:ann]; 

} 

Тогда в вас map delegate функция

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{ 
    if([annotation isKindOfClass:[CustomAnnotation class]]) 
    { 
     //Do your annotation initializations 

     // Then return a custom image that looks like your view like below 
     annotationView.image=[UIImage imageNamed:@"customview.png"]; 
    } 
} 

Все самое лучшее ..

+0

Спасибо за ваш ответ. – anoop

+0

Прежде всего, спасибо за ваш ответ. Моя идея, когда пользователь прикасается к карте, появляется небольшой uiview, который появляется в точках подключения. При подключении этих координат представления я хочу нарисовать многоугольник overlay.также я могу перемещать любое добавленное представление, затем наложение также изменяется в соответствии с новыми координатами, вплоть до этого рабочего штрафа. Но проблема в том, что когда я масштабирую или прокручиваю overlay mapview, это изменения, соответствующие mapview, но добавленный subview остается в том же месте. Мне нужно, чтобы этот вид в позиции координат полигона , – anoop