Добавить подпредставление в MKMapView (не наложение)
Я хочу добавить небольшое подпредставление в точке касания в представлении карты iOS таким образом, чтобы добавленное подпредставление также увеличивало и прокручивало при прокрутке и увеличении масштаба представления карты. Любая помощь? Код, который я попробовал, находится ниже:
- (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
не перемещается и не прокручивается при просмотре карты.
1 ответ
Ваш подход неправильный, вы не можете добавить вид в качестве подпредставления на карте, вы должны добавить собственный контактный значок, пользовательский контакт должен выглядеть так же, как ваш вид, который вы хотите добавить.
Вы можете попробовать код ниже
- (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"];
}
}
Всего наилучшего..