Próbuję dowiedzieć się, jak umieścić adnotację na mapie w oparciu o miejsce, w którym użytkownik dotknie.Uzyskaj współrzędne punktu od mkmapview na iphone
Próbowałem sub-uznającej MKMapView
i szukał touchesBegan
na ogień, ale jak się okazuje, MKMapView
nie używa standardowego dotyka metod.
Próbowałem również podkategorii UIView
, dodając MKMapView
jako dziecko, a następnie słuchając HitTest i touchesBegan
. To działa nieco. jeśli mam moją mapę pełną wielkość UIView
, a potem mieć coś takiego
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return map;
}
i że działa, mój touchesBegan
będą mogli dostać punkt za pomocą
- (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]);
}
}
ale wtedy mapa ma pewne zwariowane zachowanie, ponieważ nie będzie przewijać, i nie będzie się powiększał, chyba że klikniesz dwukrotnie, ale możesz pomniejszyć. i działa tylko wtedy, gdy zwrócę mapę jako widok. Jeśli nie mam metody testu trafień, mapa działa dobrze, ale oczywiście nie ma żadnych danych.
Czy zamierzam poprawić współrzędne? Proszę powiedz mi, że jest lepszy sposób. Wiem, jak dodawać adnotacje, po prostu nie mogę znaleźć żadnych przykładów dodawania adnotacji, gdzie i kiedy użytkownik dotknie mapy.
wersja Swift: http://stackoverflow.com/a/37860496/1151916 – Ramis