Я пытаюсь понять, как помещать аннотацию на карту, основанную на том, где пользователь прикасается.
Я попытался подклассифицировать MKMapView
и искал touchesBegan
для запуска, но, как выясняется, MKMapView
не использует стандартные методы касаний.
Я также попробовал подклассификацию a UIView
, добавив MKMapView
в качестве дочернего элемента, а затем прослушивая HitTest и touchesBegan
. Это работает несколько.
если у меня есть моя карта полного размера UIView
, то есть что-то вроде этого
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return map;
}
и это работает, мой touchesBegan
сможет получить точку с помощью
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches){
CGPoint pt = [touch locationInView:map];
CLLocationCoordinate2D coord= [map convertPoint:pt toCoordinateFromView:map];
NSLog([NSString stringWithFormat:@"x=%f y=%f - lat=%f long = %f",pt.x,pt.y,coord.latitude,coord.longitude]);
}
}
но тогда карта имеет какое-то безумное поведение, подобное тому, которое не будет прокручиваться, и оно не будет увеличиваться, если не будет двойным нажатием, но вы можете уменьшить масштаб. и он работает только в том случае, если я верну карту в качестве вида. Если у меня нет метода теста попадания, карта работает нормально, но, очевидно, не получает никаких данных.
Я собираюсь неправильно понять координаты? Скажите, что есть лучший способ. Я знаю, как добавлять аннотации просто отлично, я просто не могу найти примеров добавления аннотации, где и когда пользователь прикасается к карте.